文档库 最新最全的文档下载
当前位置:文档库 › 微机原理第3章

微机原理第3章

微机原理第3章
微机原理第3章

第3章8086CPU指令系统=

1.写出完成下列要求的变量定义语句:

(3)在缓冲区buf1中留出100个字节的存储空间;

(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;

(5)在变量var3中保存缓冲区buf1的长度;

(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。

解:

buf1 DB 100 DUP(?)

buf2 DB 7 DUP(5 DUP(55H),10 DUP(240))

var3 DB LENGTH buf1

pointer DW var1,buf1 (或者pointer D W OFFSET var1,OFFSET buf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:

var1 DB 12,-12,20/6,4 DUP(0,55H)

var2 DB ‘Assemble’

var3 DW ‘AB’, ‘cd’, ‘E’

var4 DW var2

var5 DD var2

解:

3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设

VAR1, VAR2为字变量, L1为标号):

(1)MOV SI,100 (2)MOV BX,VAR1[SI]

(3)MOV AX, [BX] (4)MOV AL, [DX]

(5)MOV BP, AL (6)MOV VAR1, VAR2

(7)MOV CS, AX (8)MOV DS, 0100H

(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2

(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2

(13)SUB [DI], 78H (14)MOVS VAR1, VAR2

(15)PUSH 100H (16)POP CS

(17)XCHG AX, ES (18)MOV DS, CS

(19)JMP L1+5 (20)DIV AX, 10

(21)SHL BL, 2 (22)MOV AL, 15+23

(23)MUL CX (24)XCHG CL, [SI]

(25)ADC CS:[0100], AH (26)SBB VAR1-5,154

解:(1)MOV SI,100 正确。源:立即数寻址,目的:寄存器寻址(2)MOV BX,V AR1[SI] 正确。源:寄存器相对寻址,目的:寄存器寻址

(3)MOV AX,[BX] 正确。源:寄存器间接寻址,目的:寄存器寻址

(4)MOV AL,[DX] 错误。寄存器间接寻址时,DX, AX, CX不能作地址寄存器(5)MOV BP,AL 错误。操作数类型不一致

(6)MOV V AR1,V AR2 错误。两存储单元之间不能用MOV指令传送数据

(7)MOV CS,AX 错误。CS不能为目的操作数

(8)MOV DS,0100H 错误。目的操作数为段寄存器时,源操作数不能为立即数(9)MOV [BX][SI],1 错误。指令类型不定。

(10)MOV AX,V AR1+V AR2 错误。MOV指令中不能完成加法运算

(11)ADD AX,LENGTH V AR1 正确。源:立即数寻址。目的:寄存器寻址

(12)OR BL,TYPE V AR2 正确。源:立即数寻址。目的:寄存器寻址

(13)SUB [DI],78H 错误。指令类型不定

(14)MOVS V AR1,V AR2 正确。目的、源均为隐含寻址。操作数仅指出操作数类型(15)PUSH 100H 错误。将常数压入堆栈,要通过寄存器来实现

(16)POP CS 错误。目的操作数不能为CS

(17)XCHG AX,ES 错误。XCHG指令的操作数不能是段寄存器

(18)MOV DS,CS 错误。MOV指令不能从段寄存器到段寄存器

(19)JMP L1+5 正确。段内直接转移

(20)DIV AX,10 错误。指令格式错误。

(21)SHL BL,2 错误。移位指令的移位数为1或者CL

(22)MOV AL,15+23 正确。源:立即数寻址,目的:寄存器。编译时就处理为38 (23)MUL CX 正确。源:寄存器寻址,目的:寄存器寻址

(24)XCHG CL,[SI] 正确。源:寄存器间接寻址,目的:寄存器寻址

(25)ADC CS:[0100],AH 正确。源:寄存器寻址,目的: 直接寻址(数据在代码段中)(26)SBB V AR1-5,154 正确。源:立即数寻址,目的:直接寻址。

4.说明下列指令对的区别:

(1)MOV AX,VAR1 与 MOV AX,OFFSET VAR1

(2)MOV AX,VAR2 与 LEA AX,VAR2

(3)MOV AL,LENGTH VAR1 与 MOV AL,SIZE VAR1

(4)MOV AL,ES: [DI] CMP AL, [SI] 与 CMPSB

(5)SHR AL,1 与 SAR AL,1

(6)SHR AL,1 与 ROR AL,1

(7)ROL BX,1 与 RCL BX,1

解:(1)MOV AX,V AR1 把变量V AR1对应地址单元中的一个字送入AX MOV AX,OFFSET V AR1 把V AR1的有效地址的偏移地址送入AX (2)MOV AX,V AR2 把变量V AR2对应地址单元中的一个字送入AX LEA AX,V AR2 把V AR2的有效地址的偏移地址送入AX

(3)MOV AL,LENGTH V AR1 把变量V AR1的长度送入AL

MOV AL,SIZE V AR1 把变量V AR1的大小送入AL

(4)MOV AL,ES:[DI]

CMP AL,[SI] 把以ES为段地址,DI为偏移地址的一个字节送入AL,

并与以SI内容为偏移地址的一个字节作比较,改变标志寄

存器内容。(相当于作ES:(DI)与(DS: (SI)内容比较)CMPSB 对字符串中的一字节比较。寻址方式隐含。源串的地址由

DS:SI指定,目的串的地址由ES:DI指定。(相当于作

DS: (SI)与ES:(DI)内容比较)

(5)SHR AL,1 AL逻辑右移1位,最高位移入0, 最低位移入CF。

SAR AL,1 AL算术右移1位,以最高位内容移入,最低位移入CF, 其余各位

右移一位。

(6)SHR AL,1 AL逻辑右移1位,最高位移入0, 最低位移入CF。

ROR AL,1 AL的各位构成环形移位,右移一位,最低位内容同时移入到CF和

最高位。

(7)ROL BX,1 BX各位构成环形移位,左移一位,最高位内容同时移入到CF和

最低位。

RCL BX,1 BX和CF构成环形移位,左移一位,CF内容移入到最低位,最

高位移入CF。

5.写出下列转移指令的寻址方式(设L1为标号,VAR1为字型变量,DVAR1为双字型变量):

(1)JMP L1 (2)JMP NEAR L1

(3)JNZ L1 (4)JMP BX

(5)JG L1 (6)JMP VAR1[SI]

(7)JMP FAR PTR L1 (8)JMP DVAR1

解:(1)JMP L1 段内直接寻址(2)JMP NEAR PTR L1 段内直接寻址(3)JNZ L1 段内直接寻址(4)JMP BX 段内间接寻址

(5)JG L1 段内直接寻址(6)JMP V AR1[SI] 段内间接寻址

(7)JMP FAR PTR L1 段间直接寻址(8)JMP DV AR1 段间间接寻址

6.设(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=3412H,(20102)=7856H,

(21200)=4C2AH,(21202)=65B7H,求下列指令执行后AX寄存器的内容:

(1)MOV AX,1200H;(2)MOV AX,BX;(3)MOV AX, [1200H];

(4)MOV AX, [BX]; (5)MOV AX,1100[BX];(6)MOV AX, [BX][SI];

(7)MOV AX,1100[BX][SI]

解:(1)1200H (2)0100H (3)4C2AH (4)3412H (5)4C2AH (6)7856H (7)65B7H

7.执行下列指令后,DX寄存器中的内容是多少?

TABLE DW 25,36,-1,-16,10000,13

PYL DW 7

……

MOV BX,OFFSET TABLE

ADD BX,PYL

MOV DX,[BX]

解:DX = 10FFH 由-16(FFF0H)的高8位和10000(2710H)的低8位构成

8.如果堆栈的起始地址为2200:0000,栈底为0100H,(SP)=00A8H,求

(1)栈顶地址;

(2)SS的内容;

(3)再存入数据5678H,3AF2H后,SP的内容。

解:栈顶地址00A8H,SS = 2200H,再存入2个字后,SP = 00A4H

9.设已用伪指令EQU定义了4个标识符:

N1 EQU 2100

N2 EQU 10

N3 EQU 20000

N4 EQU 25000

下列指令是否正确?并说明原因。

(1)ADD AL,N1-N2;(2)MOV AX,N3+N4;

(3)SUB BX,N4-N3;(4)SUB AH,N4-N3-N1;

(5)ADD AL,N2;(6)MOV AH,N2*N2

解:(1)错误。N1-N2=2090>255 (2)正确(3)正确(4)错误。N4-N3-N1=2900>255 (5)正确(6)正确

10.按下列要求写出指令:

(1)将AX寄存器的低4位清零,其余位不变;

(2)将BX寄存器的低4位置1,其余位不变;

(3)将AL寄存器的低4位保持不变,高4位取反;

(4)测试BX中的位1和位2,当这两位同时为0时将AL置0FFH,否则AL清零;

(5)测试BX中的位1和位2,当这两位有一位为0时将AL置0FFH,否则AL清零;

(6)将AL中保存的字母ASCII码变换成相应的大写字母的ASCII码;

(7)将AL中保存的字母ASCII码变换成相应的小写字母的ASCII码;

(8)将AX中的各位取反;

(9)将DX中的低7位取反,高9位不变;

(10)将CX中的低8位与高8位互换。

解:(1)AND AX,0FFF0H

(2)OR BX,000FH

(3)XOR AL,0F0H

(4)TEST BX,06H (5)MOV AX,BX JZ ZERO AND AX,06H

MOV AL,00H XOR AX,06H

JMP OVER JZ OVER ZERO:MOV AL,0FFH MOV AL,0FFH OVER:OVER:

(6)AND AL,5FH

或者:

CMP AL,61H

JL OVER (无需变换或不是字母)

CMP AL,7AH

JG OVER (不是字母)

AND AL,5FH 或SUB AL,20H

OVER:

(7)OR AL,20H

或者:

CMP AL,41H

JL OVER (不是字母)

CMP AL,5AH

JG OVER (无需变换或不是字母)

OR AL,20H 或ADD AL,20H

OVER:

(8)XOR AX,0FFFFH 或者NOT AX

(9)XOR DX,007FH

(10)XCHG CH,CL

11.写出完成下述功能的程序段:

(1)传送40H到AL寄存器;

(2)将AL的内容乘以2;

(3)传送16H到AH寄存器;

(4)AL的内容加上AH的内容。

计算最后结果(AL)=?

解:(1)MOV AL,40H

(2)SHL AL,1

(3)MOV AH,16H

(4)ADD AL,AH

AL=96H

12.写出完成下述功能的程序段:

(1)从缓冲区BUF的0004偏移地址处传送一个字到AX寄存器;

(2)将AX寄存器的内容右移2位;

(3)将AX内容与BUF的0006偏移地址处的一个字相乘;

(4)相乘结果存入BUF的0020H偏移地址处(低位在前)。

解:(1)LEA SI, BUF

MOV AX, [SI+4]

(2) SHR AX,1

SHR AX,1

(3) MUL WORD PTR 6[SI]

(4) MOV 20H[SI],AX

MOV 22H[SI],DX

13.设(BX)=11001011B,变量VAR的内容为00110010B,求下列指令单独执行后BX的内

容:

(1)XOR BX,VAR;(2)AND BX,VAR;

(3)OR BX,VAR;(4)XOR BX,11110000B;

(5)AND BX,00001111B;(6)TEST BX,1

解:(1)00F9H

(2)0002H

(3)00FBH

(4)003BH

(5)000BH

(6)00CBH

14.设(DX)=10111011B,(CL)=3,(CF)=1,求下列指令单独执行后DX的内容:

(1)SHR DX,1;(2)SAR DX,CL;(3)SHL DX,CL;

(4)SHL DX,1;(5)ROR DX,CL;(6)ROL DL,CL;

(7)SAL DH,1;(8)RCL DX,CL;(9)RCR DL,1

解:DX= 0000 0000 1011 1011B CF=1 CL=3

(1)SHR DX,1 DX逻辑右移1 0000 0000 0101 1101B = 005DH (2)SAR D X,CL DX算术右移3 0000 0000 0001 0111B = 0017H

(3)SHL DX,CL DX逻辑左移3 0000 0101 1101 1000B = 05D8H

(4)SHL DX,1 DX逻辑左移1 0000 0001 0111 0110B = 0176H

(5)ROR DX,CL DX循环右移3 0110 0000 0001 0111B = 6017H

(6)ROL DL,CL DL循环左移3 0000 0000 1101 1101B = 00DDH (7)SAL DH,1 DH算术左移1 0000 0000 1011 1011B = 00BBH

(8)RCL D X,CL DX带进位循环左移3 0000 0101 1101 1100B = 05DCH (9)RCR DL,1 DL带进位循环右移1 0000 0000 1101 1101B = 00DDH 15.选择题(各小题只有一个正确答案)

(1)执行下列三条指令后:

MOV SP,1000H

PUSH AX

CALL BX

a. (SP)=1000H;

b. (SP)=0FFEH;

c. (SP)=1004H;

d. (SP)=0FFCH;

(2)要检查寄存器AL中的内容是否与AH相同,应使用的指令为:

a. AND AL, AH

b. OR AL, AH

c. XOR AL, AH

d. SBB AL, AH

(3)指令JMP NEAR PTR L1与CALL L1(L1为标号)的区别在于:

a. 寻址方式不同;

b. 是否保存IP的内容;

c. 目的地址不同;

d. 对标志位的影响不同。

解:(1)D PUSHU AX则AX入栈,SP=0FFEH;CALL BX则IP入栈,SP=0FFCH (2)C 异或,若相同,则AL=0,ZF=1。

(3)B

16.寄存器DX:AX组成32位数,DX为高位,编写程序段实现:

(1)DX:AX右移3位,并将移出的低3位保存在CL中;

(2)DX:AX左移3位,并将移出的高3位保存在CL中;

解:(1)移出的3位应该按时序移入CL中。

XOR CL,CL

MOV BL,3

L1: SHR DX,1

RCR AX,1

RCL CL,1

DEC BL

JNZ L1

(2)移出的3位应该按时序移入CL中。

XOR CL,CL

MOV BL,3

L1: SHL AX,1

RCR DX,1

RCR CL,1

DEC BL

JNZ L1

17.编写程序段实现将BL中的每一位重复4次,构成32位的双字DX:AX,例如当BL

=01011101B时,则得到的(DX)=0F0FH,(AX)=0FF0FH。

解:算术右移时,移入的值就是最高位本身,这样可以使位内容重复,利用这一点可以实现

题目的要求。

XOR DX,DX XOR AX,AX

MOV

CX,4

L1: SHR BL,1 RCR AX,1 SAR AX,1 SAR AX,1 SAR AX,1 LOOP L1

MOV

CX,4

L2: SHR BL,1

RCR DX,1 SAR DX,1 SAR DX,1 SAR DX,1

LOOP

L2

18. 字变量VAR1中保存有小于38250的16位无符号数,编写程序段实现V AR1÷150,并

进行四舍五入操作,将商保存在字节变量VAR2中。

解:根据题意,38250÷150=255,因此商不会超过255,可以用一个字节表示。

a ÷

b 的四舍五入操作可以通过判断除后余数实现:余数大于等于除数的一半,则商加1;否则不用加1。但这种方法用汇编语言编程实现时比较复杂,这里介绍另外一种方法:设a ÷b 的四舍五入后的结果为

c ,用『』表示取整数操作,则

20.5b a a c b b ?

?+????

=+=

????

????

这种方法是在除法操作之前,在被除数上加上除数的一半,这样除法操作后得到的值就是考虑了四舍五入的商。 V AR1

DW 12345

V AR2

DB ?

DATAA

DB 150

MOV AX,V AR1 XOR BX,BX MOV BL,DATAA SHR BX,1 ADD AX,BX DIV DATAA

MOV V AR2,AL

19. 有一组无符号的16位数据保存在BUFFER 中,前两个字节存放数据的个数,编程实现

按下式进行滤波处理:

()1

()()(1)(2)23()()2

y k x k x k x k k y k x k k =

+-+-≥=<

解:滤波结果保存在FILT 中。

BUFFER DW 0CH

DW 33H, 18H, 1BH, 06H, 33H, 08H DW 3H, 6H, 0FH, 51H, 05H, 0CH

FILT DW 100H DUP (?)

LEA SI,BUFFER LEA DI,FILT MOV CX,[SI] MOV [DI],CX ADD SI,2 ADD DI,2 XOR DX,DX MOV AX,[SI] MOV [DI],AX MOV BX,2[SI] MOV 2[DI],BX

ADD SI,4

ADD DI,4

DEC CX

DEC CX

ADD AX,BX

ADC DX,0

MOV BX,3

L1:

ADD AX,[SI]

ADC DX,0

PUSH DX

PUSH AX

DIV BX

MOV [DI],AX

POP AX

POP DX

SUB AX, [SI-4]

SUBB DX,0

ADD DI,2

ADD SI,2

LOOP L1

20.在由字符串构成的缓冲区BUFFER中,前2个字节存放字符个数,后续每个字节存放

一个字符的ASCII码。编写程序实现将字符串‘2004’替换成‘2006’。

解:在数据段中定义:

BUFFER DW 74

DB ‘This year is 2004. In 2004, we have a plan for reducing annual expensive 10%’DEST DB ‘2004’

在代码段中编写程序段:

CLD

LEA SI, BUFFER

MOV CX,[SI]

ADD SI,2

LEA DI,DEST

L1: PUSH SI

PUSH DI

PUSH CX

MOV CX,4

REPZ SCASB

JNZ L2

MOV BYTE PTR [SI-1],’6’

L2: POP CX

POP DI

POP SI

INC SI

INC DI

LOOP L1

21.定义有下列宏指令:

WAGS MACRO S1,S2,S3

SUB AX,AX

MOV DX,AX

ADD AX,S1

ADD AX,S2

ADC DX,0

ADD AX,S3

ADC DX,0

ENDM

当采用宏调用指令“WAGS 60000,25000,3000”时,执行后DX=AX=。解:宏指令W AGS完成的功能为S1+S2+S3,结果放在DX:AX中。所以,调用“W AGS

60000,25000,3000”时,其结果为DX=0001H ,AX=57C0H

22.对上题定义的宏指令,如果采用宏调用指令“W AGS BX,CX,SI”时,写出宏展开形式。解:调用“WAGS BX,CX,SI”时,宏展开形式:

SUB AX,AX

MOV DX,AX

ADD AX,BX

ADD AX,CX

ADC DX,0

ADD AX,SI

ADC DX,0

23.写出宏指令SUMMING,实现将字节缓冲区array中的内容求校验和(保留低8位),

并保存在V ALUE中。

解:设array前两个字节保存缓冲区字节数,在宏指令SUMMING,将array和V ALUE作为形式参数。

SUMMING MACRO array,V ALUE

LEA SI,array

MOV CX,[SI]

ADD SI,2

XOR AL,AL

L1: ADD AL,[SI]

INC SI

LOOP L1

MOV V ALUE,AL

ENDM

大学微机原理第三章习题

8086/8088的寻址方式和指令系统习题 一.单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理 址为()。 A.13000H B.23000H C.33000H D.3000H 3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。 A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是()。 A.原码B.反码C.补码D.移码 5.用来作为寄存器间接寻址的寄存器有()个。 A.8 B.6 C.5 D.4 6.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是()。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL 11.下述指令中不影响CF的指令是()。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX 12.两个整数补码9CH和7AH相加运算后,会产生()。 A.无溢出且无进位B.无溢出但有进位 C.有溢出且有进位D.有溢出但无进位 13.指令JMP WORD PTR [BX]属于()寻址。 A.段内直接B.段内间接C.段间直接D.段间间接 14.指令MOV AX,[BX+SI+8]的源操作数属于()寻址。 A.直接 B.寄存器相对C.基址变址D.相对基址变址 15.指令()不改变CF的内容。 A.DEC AL B.ADD AX,CX C.SUB [BX],CL D.SBB AL,DL 16.十进制数字74所对应的压缩型BCD码的形式是()。 A.74 B.74H C.4AH D.4A 17.十进制数字85所对应的非压缩型BCD码的形式是()。 A.0085 B.0085H C.0805 D.0805H 18.设AL=67H,执行“CMP AL,76H”后,AL=()。 A.76H B.0DFH C.67H D.00 19.设AL=65H,BL=29H,执行下列指令后,AL=()。 ADD AL,BL DAA

微型计算机原理 (第三章课后答案)教学教材

微型计算机原理(第三章课后答案)

微型计算机原理 第三章 80X86微处理器 1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过 程。答: (1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。 (2) EU的作用:执行指令,并为BIU提供所需的有效地址。 (3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令 队列中。这样就实现了取指和执行指令的并行工作。 2.8086/8088CPU内部有哪些寄存器?其主要作用是什么? 答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄 存器4个和控制寄存器2个。其主要作用是: (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。 此外,所有的I/O指令都使用该寄存器与外设端口交换信息。 BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址, CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化, 有利于提高程序的运行速度。 DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长

乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。 (2) 地址寄存器:一般用来存放段内的偏移地址。 SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时, 每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。 BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的 用途是存放操作数在堆栈段内的偏移地址。 SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。 DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。 (3) 段寄存器:用于存放段地址 CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS的内容 左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。 DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS的内容左 移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。 SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存 储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程

微机原理第3章习题与答案

习题 一、选择题 1.寻址方式指出了操作数的位置,一般来说_______。 A.立即寻址给出了操作数的地址 B.寄存器直接寻址的操作数在寄存器内,而指令给出了存储器 C.直接寻址直接给出了操作数本身 D.寄存器直接寻址的操作数包含在寄存器内,由指令指定寄存器的名称 答案:D 2.寄存器寻址方式中,操作数在_________。 A.通用寄存器 B.堆栈 C.内存单元 D.段寄存器 答案:A 3.寄存器间接寻址方式中,操作数在_________。 A.通用寄存器 B.堆栈 C.内存单元 D.段寄存器 答案:C 4.下列指令中的非法指令是______。 A.MOV[SI+BX],AX B.MOVCL,280 C.MOV[0260H],2346H D.MOVBX,[BX] 答案:B 5.设(SP)=0100H,(SS)=2000H,执行PUSHBP指令后,栈顶的物理地址是_____。 A.200FEH B.0102H C.20102H D.00FEH 答案:A 6.指令LEABX,TAB执行后,其结果是______。 A.将TAB中内容送BX B.将TAB的段基址送BX C.将TAB的偏移地址送BX D.将TAB所指单元的存储内容送BX 答案:C 7.下列正确的指令格式有______。 A.MOV[BX],1 B.MOVAL,0345H C.MOVES:PTR[CX],3 D.XLAT 答案:D 8.设(AX)=C544H,在执行指令ADDAH,AL之后,______。 A.CF=0,OF=0 B.CF=0,OF=1 C.CF=1,OF=0D,CF=1,OF=1 答案:C 9.若AL、BL中是压缩BCD数,且在执行ADDAL,BL之后,(AL)=0CH,CF=1,AF=0。再执行DAA后,(AL)=_____。 A.02H B.12H C.62H D.72H 答案:B 10.执行下列程序后AL的内容为_____。 MOVAL,25H SUBAL,71H DAS A.B4H B.43H C.54H D.67H

微机原理第三章习题答案

习题3答案 1.指出下列指令的错误原因。 (1) AND AX, DL;类型不匹配 (2) ADD CS, DX;CS不能作为目的操作数 (3) MOV AX, IP;IP不能作为指令的操作数 (4) MOV [BP][SI], [SI];两个操作数不能同时为内存操作数 (5) SUB [BP][SI], ES: DX;段超越前缀只能用在内存操作数之前 (6) XCHG AL, [SI][DI];没有[SI][DI]这种操作数形式 (7) JGE AX;条件转移指令的操作数只能是标号 (8) PUSH DL;对堆栈不能进行字节操作 2.用一条指令将BX清0。(请给出3种方法) 方法1:MOV BX, 0 方法2:SUB BX, BX 方法3:AND BX, 0;将BX和0做与,可以将BX清零 方法4:XOR BX, BX 3.写出实现下列功能的指令序列。 (1)判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法) 方法1: CMP AX, 0

JZ LABEL ;如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果;因此指令执行后AX内容不会受到破坏 方法2: TEST AX, 0FFH JZ LABEL ;如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。 ;和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已;经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏方法3: AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的 JZ LABEL (2)将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。 MOV AH, AL AND AL, 0FH ; AL高4位通过与清零,而低4位保持不变 MOV CL, 4 SHR AH, CL ;这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零 (3)若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。 TEST AX, 01H ;TEST做与运算,通过与来检测AX的最低位 JNZ CONTINUE ;如果ZF = 1,说明AX的最低位是0,那么AX中的数是偶数,就跳转,否则,;说明AX中的是奇数,而BX中的是偶数,符合结果要求,不用动了XCHG AX, BX

微机原理与接口技术-第三章-课后答案

第三章参考答案 1.按照题目中提出的要求,写出能达到要求的一条(或几条)汇编形式的指令: ⑴将一个立即数送入寄存器BX; ⑵将一个立即数送入段寄存器DS; ⑶将变址寄存器DI的内容送入一个存储单元中; ⑷从存储单元中取一个数送到段寄存器ES中; ⑸将立即数0ABH与AL相加,结果送回AL中; ⑹把BX与CX寄存器内容相加,结果送入BX; ⑺用寄存器间接寻址方式,实现一个立即数与存储单元内容相加,结果放回存储器。解:(1)MOV BX, 1234H (2)MOV AX, 1234H MOV DS, AX (3)MOV [BX], DI (4)MOV ES,[BX] (5)ADD AL,0ABH (6)ADD BX,CX (7)MOV AX,[BX] ADD AX,1234H MOV [BX],AX 2.执行下面程序,完成指令后的填空: MOV AX,2000H ;AH= 20H MOV DS,AX ;AL= 00H DS= 2000H MOV SS,AX ;SS= 2000H AX= 2000H MOV BX,2030H ;BH= 20H BL= 30H MOV SI,BX ;SI= 2030H MOV DI,3040H ;DI= 3040H MOV SI,DI ;SI= 3040H MOV SP,50FFH ;SP= 50FFH MOV DX,SP ;DH= 50H DL= FFH MOV CL,25 ;CL= 19H MOV BL,CL ;CL= 19H BL= 19H MOV AH,0F0H ;AH= F0H MOV CH,AH ;CH= F0H MOV BYTE PTR[DI],64 ;(DI)= 40H MOV WORD PTR[SI],256 ;(SI)= 00H (SI+1)= 01H MOV DL,[SI+1] ;DL= 01H MOV DH,1+[SI] ;DH= 00H MOV AL,1[SI] ;AL= 01H MOV WORD PTR[BX][SI],34 ;(BX+SI)= 22H (BX+SI+1)= 00H MOV [BX+SI+4],BL ;(BX+SI+4)= 19H MOV BP,2[BX+DI] ;BP= 00H MOV [BP],AL ;(BP)= 01H MOV AX,[BP][DI] ;AX= 0100H MOV BL,AL ;BL= 00H MOV ES,BX ;ES= 2000H PUSH BX ;SP= 50FDH (SP,SP+1)= 2000H PUSH DI ;SP= 50FBH (SP,SP+1)=

微机原理第三章习题与参考答案

第三章习题与参考答案 3.1 已知 (DS) = 1000H,(ES) = 2000H,(SS) = 3000H,(SI) = 0050H,(BX) =0100H,(BP) =0200H,数据变量DISP的偏移地址为1000。指出下列指令的寻址方式和物理地址。 (1) MOV AX,0ABH 立即寻址无 (2) MOV AX,BX 寄存器寻址无 (3) MOV AX,[l000H] 直接寻址 10000H (4) MOV AX,DATA 直接寻址 (DS*16+DATA ) (5) MOV AX,[BX] 寄存器间接寻址 10100H (6) MOV AX,ES:[BX] 寄存器间接寻址 20100H (7) MOV AX,[BP] 寄存器间接寻址 30200H (8) MOV AX,[SI] 寄存器间接寻址 10050H (9) MOV Ax,[BX+l0] 寄存器相对寻址 1010AH (10) MOV AX,DISP[BX] 寄存器相对寻址 11100H (1l) MOV AX,[BX+SI] 基址变址寻址 10150H (12) MOV AX,DISP[BX][SI] 相对基址变址寻址 11150H 3.2 分别说明下例指令采用的寻址方式和完成的操作功能。 (1) MOV CX,2000H 立即寻址将立即数2000H送CX寄存器 (2) MOV DS,AX 寄存器寻址将AX寄存器内容送DS段寄存器 (3) AND CH,[1000H] 直接寻址将[DS*16+1000H]单元的内容送CH寄存器 (4) ADD [DI],BX 寄存器间接寻址将CL寄存器的内容送[DS*16+DI]单元 (5) MOV SS:[3000H],CL 直接寻址将CL寄存器的内容送[SS*16+3000H]单元 (6) SUB [BX][SI],1000H 直接寻址将立即数1000H送[DS*16+BX+SI+50H]单元 (7) ADD AX,50H[BX][SI] 相对基址变址寻址将[DS*16+BX+SI+50H]单元的内容送AX寄存器 (8) PUSH DS 寄存器寻址将DS寄存器的内容送[SS*16+SP]单元 (9) CMP [BP][DI],AL 寄存器寻址将AL寄存器的内容送[SS*16+DI+BP]单元 3.3 判断下列指令正误,如果错误请指出原因。 (1)MOV CH,2000H 错两个操作数的长度不一致 (2)XOR DL,BH 对 (3)ADD 100,AH 错目的操作数不能为立即数 (4)MOV DS,2200H 错立即数不能直接传送给段寄存器 (5)IN AL,250H 错源操作数必须为口地址 (6)MOV [BX][SI],[DI] 错两个操作数不能同时为存储器 (7) LEA AX,BL 错源操作数必须为地址标号 (8)MOV CX,ES:BX 错寄存器寻址不能用段超越前缀 3.4 设DS=1000H,SS=2000H,AX=1000H,BX=0020H,CX=2000H,BP=0002H,SI=0010H,DI=0030H,

第三章微机原理课后习题参考答案_2012

第三章微机原理课后习题参考答案 1. 指出下列指令的错误原因。 (1) AND AX, DL ;类型不匹配 (2) ADD CS, DX ;CS不能作为目的操作数 (3) MOV AX, IP ;IP不能作为指令的操作数 (4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数 (5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前 (6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式 (7) JGE AX ;条件转移指令的操作数只能是标号 (8) PUSH DL ;对堆栈不能进行字节操作 2. 用一条指令将BX清0。(请给出3种方法) 方法1:MOV BX, 0 方法2:SUB BX, BX 方法3:AND BX, 0 ;将BX和0做与,可以将BX清零 方法4:XOR BX, BX 3. 写出实现下列功能的指令序列。 (1) 判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法) 方法1: CMP AX, 0 JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果,因此指令执行后AX内容不会受到破坏 方法2: TEST AX, 0FFFF H JZ LABEL ; 如果ZF = 0,说明AX为0 方法3: AND AX, 0FFFF H JZ LABEL (2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位

清0。 MOV AH, AL AND AL, 0FH ; AL高4位通过与清零,而低4位保持不变 MOV CL, 4 SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后, 高位补零 (3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入 BX;否则,AX和BX不变。 MOV DX,AX ;首先判断是否是1奇1偶,如是则保持不变 ADD DX,BX TEST DX,01H ;检测AX与BX是否同为偶数或同为奇数 JZ CONTINUE TEST AX, 01H ;检测AX的最低位 JNZ CONTINUE XCHG AX, BX CONTINUE : ….;无需处理,AX,BX中内容将不变 4. 分析下列指令序列完成什么功能。 MOV CL, 4 SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL 答案:将DX.AX中的32位数整体逻辑左移4位。 5. 给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。 指令AL CF OF SF ZF 备注 MOV AL, 100 100/64H MOV指令不影响标志位 XOR AL, AL 100/64H 0 0 0 1 除NOT外,逻辑运算后CF=OF=0,其余 据结果设置;逻辑运算指令下,AF标志

(完整版)微机原理第三章(1)及答案

第三章习题集 二.选择题(每小题1分,共15分) 1. 逻辑地址1000:2000对应的物理地址为( B )。 A、1200H B、12000H C、2100H D、21000H 2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。 A、AX B、BX C、SP D、SI 3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。 A.程序 B.堆栈 C.数据 D.附加 4.在下面四组寄存器中,第 D 组都可用于对存储器间接寻址方式的寄存器。 A. AX,BX,CX,IP; B. BX,SP,DX,SI C. IP,SP,BP,AX D. BP,BX,SI,DI 5. 含有立即数的指令中,该立即数被存放在 A 。 A. 累加器中 B. 指令操作码后的内存单元中 C. 指令操作码前的内存单元中 D. 由该立即数所指定的内存单元中 6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。 A、有效地址 B、物理地址 C、逻辑地址 D、相对地址 7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中, 则DS=( B )。 A、0FFFFH B、0F47FH C、2032H D、0F000H 8. 含有立即数的指令中,该立即数被存放在 B 。 A. 累加器中 B. 指令操作码后的内存单元中 C. 指令操作码前的内存单元中 D. 由该立即数所指定的内存单元中 9.寄存器间接寻址方式中,操作数在 C 中。 A. 通用寄存器 B. 堆栈 C. 存储单元 D. 段寄存器 10.下列指令中,有语法错误的指令是(B D)。 A. MOV AX,[1000H] B. LEA AL,1000H C. MOV [1000H],AL D. MOV 1000H,AX 11. 下列指令语法有错的是:C A. MOV AX,1000H B. MOV AX,BX C. MOV [AX],[1000H] D. MOV AX,[1000H] 12. 8086/8088中除___C___两种寻址方式外,其它各种寻址方式的操作数均在存储器中。 ( ) A. 立即寻址和直接寻址 B. 寄存器寻址和直接寻址 C. 立即寻址和寄存器寻址 D. 立即寻址和间接寻址 13.指令( C )的源操作数的寻址方式为直接寻址。 A. MOV [2000H],AL B. IN AL,DX C. XOR AL,[2000H] D. MOV AX,2000H 14. 下列指令中,执行速度最快的指令是(__A__)。 A. ADD AX,10 B. ADD AL,[SI+10H] B. ADD AX,CX C. ADD AX,[BX] 15. 下列指令中,不影响进位的指令是:( C ) A. ADD AX,BX B. MUL BL C. INC BX D.SUB AL,BH

第三章微机原理 习题课

第三章习题课 一、选择题 1、在汇编语言程序得开发过程中使用宏功能得顺序就是()。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略得项就是()。 A、名字项 B、操作项 C、操作数项 D、注释项 3、下列叙述正确得就是( ) A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令 4、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件得指令有( )、 A、CMP B、SUB C、AND D、MOV 5、测试BL寄存器内容就是否与数据4FH相等,若相等则转NEXT处执行,可实现得方法就是( )。 A TEST BL,4FH JZ NEXT B XOR BL,4FH JZ NEXT C AN D BL,4FH JZ NEXT D OR BL,4FH JZ NEXT 6、检查BUF得内容就是否为正偶数,如就是正偶数,则令AL=0。下面程序段正确得就是( )。 A、MOV AL,BUF JS K1 SHR AL,1 JNC K1 MOV AL,0 K1:……B、MOV AL,BUF AND AL,11 JNZ K2 MOV AL,0 K2:……

C、MOV AL,BUF TEST AL,81H JNZ K3 MOV AL,0 K3:…… 7、下列描述中,执行循环得次数最多得情况就是()。 A.MOV CX,0 B.MOV CX,1 LOP:LOOP LOP LOP:LOOP LOP C.MOV CX,0FFFFH D.MOV CX,256 LOP:LOOP LOP LOP:LOOP LOP 8、在下列指令中, 指令得执行会影响条件码中得CF位。 A.JMP NEXT B.JC NEXT C.INC BX D.SHL AX,1 9、下列指令执行时出错得就是()。 A.ADD BUF1,BUF2 B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H 10、在下列指令得表示中,不正确得就是()。 A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL 11、在进行二重循环程序设计时,下列描述正确得就是()。 A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 12、下面就是多字节加法程序,第一个数就是8A0BH,第二个数就是D705H。 DA TA SEGMENT FIRST DB (1), (2),0H SECOND DB (3), (4) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START:MOV AX,DA TA MOV DS,AX MOV CX, (5) MOV SI,0 (6) NEXT: MOV AL,SECOND[SI] ADC FIRST[SI],AL INC SI LOOP NEXT MOV AL,0 ADC AL, (7) MOV FIRST[SI],AL MOV AH,4CH INT 21H CODE ENDS

微机原理第三章

一、选择题 1.IP指令指针寄存器是属于( ) a. 通用寄存器 b. 段寄存器 c. 变址寄存器 d. 控制寄存器 2.下面有语法错误的指令是( ) a. ADD AL,AH b. ADD [BX+3],AL c. ADD AH,[DI] d. ADD [BP+2],DA1 (DA1是变量名) 3.完成对DX的有符号数除以2的指令是( ) a. IDIV 2 b. SAR DX,1 c. ROR DX,1 d. RCR DX,1 4.使进位位置1的指令是( ) a. CLC b. CMC c. STC d. NOP 5.下面的XCHG指令中,语法正确的是( ) a. XCHG AL,DS b. XCHG BL,[BX] c. XCHG AL,0FH d. XCHG BUF1,BUF2 6.一条指令中目的操作数不允许使用的寻址方式是( ) a. 寄存器寻址 b. 立即数寻址 c. 变址寻址 d. 寄存器间接寻址 7.设SP=1FFEH,执行下列指令后,SP寄存器的值是( ) POPF PUSH AX a.. 2000H b. 2002H c. 1FFCH d. 1FFEH 8.LDS SI,ES:[2000H]指令的全部功能是( ) a. 把地址2000H送SI b. 把地址2000H字单元的内容送SI c. 把地址2000H字单元内容送SI,把2002H字单元内容送DS d. 把地址2000H字单元内容送DS,把2002H字单元内容送SI 9.设AL=04H,BL=0F8H,执行MUL BL指令后,结果是( ) a. AX=0032H b. AX=00E0H c. AX=03E0H d. AX=0FFE0H 10.假设字节单元(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)=(),字单元(06926H)=()。 a. 1245H b. 4578H c. 4512H d. 7845H 11.逻辑运算指令都是按()进行操作的。 a. 位 b. 字节 c. 字 d. BCD码 12.互换指令XCHG可以在两个寄存器之间互换数据,也可以在()与()之间互换数据。 a. 寄存器 b. 立即数 c. 存储单元 d. 堆栈 13.下列指令中,不影响PSW的指令是:() a. MOV b. TEST c. SAL d. CLD 二、空题 1.BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。 MOV AL,[BP+20H]的物理地址是 MOV [BX+DI-80H],AL的物理地址是 MOV BL,ES:[SI+40H]的物理地址是 2.指出下列指令的错误。 ①MOV AH,BX ②MOV [BX],[SI] ③MOV AX,[SI][DI] ④MOV CX,AX ⑤SAL AX,2 ⑥MUL AX,BX ⑦NOT CX,AX ⑧POP 5[CX][BX] 3.分别指出下列指令源操作数 ....和目的操作数 .....的寻址方式。 01微机升学8088指令系统月考试题

微机原理第三章习题答案

习题3答案 1. 指出下列指令的错误原因。 (1) AND AX, DL ;类型不匹配 (2) ADD CS, DX ;CS不能作为目的操作数 (3) MOV AX, IP ;IP不能作为指令的操作数 (4) MOV [BP][SI], [SI] ;两个操作数不能同时为内存操作数 (5) SUB [BP][SI], ES:DX ;段超越前缀只能用在内存操作数之前 (6) XCHG AL, [SI][DI] ;没有[SI][DI]这种操作数形式 (7) JGE AX ;条件转移指令的操作数只能是标号 (8) PUSH DL ;对堆栈不能进行字节操作 2. 用一条指令将BX清0。(请给出3种方法) 方法1:MOV BX, 0 方法2:SUB BX, BX 方法3:AND BX, 0 ;将BX和0做与,可以将BX清零 方法4:XOR BX, BX 3. 写出实现下列功能的指令序列。 (1) 判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法) 方法1: CMP AX, 0 JZ LABEL ; 如果ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果; 因此指令执行后AX内容不会受到破坏

方法2: TEST AX, 0FFH JZ LABEL ; 如果ZF = 0,说明AX为0,TEST指令做与运算,可是不写回结果,只影响标志位。 ; 和0与清零,和1与不变,所以和FFH做与的结果是AX本身,但是此时标志位已 ; 经改变了,所以可以利用标志位来判断,但是AX内容却没有受到任何破坏 方法3: AND AX, 0FFH ;这个方法的原理和方法2其实是完全一致的 JZ LABEL (2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。 MOV AH, AL AND AL, 0FH ; AL高4位通过与清零,而低4位保持不变 MOV CL, 4 SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。 TEST AX, 01H ;TEST做与运算,通过与来检测AX的最低位 JNZ CONTINUE ;如果ZF = 1,说明AX的最低位是0,那么AX中的数是偶数,就跳转,否则,;说明AX中的是奇数,而BX中的是偶数,符合结果要求,不用动了 XCHG AX, BX CONTINUE : …. 4. 分析下列指令序列完成什么功能。 MOV CL, 4

微机原理与接口技术第三章_答案

1、 操作码、操作数 2、 提供的是偏移地址;物理地址=偏移地址+程序段基址 3、 答:立即寻址是指指令所需的操作数直接存放在指令中,即指令的操作数字段就是真正的操作数。 直接寻址是在指令中直接给出操作数所在的内存单元的段内偏移量。 寄存器寻址是指操作数存放在寄存器中,指令的操作数字段指出使用的寄存器。 寄存器间接寻址是指寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。 4、 (1)MOV AX,420H 立即数寻址 (2)MOV [BX],SI 基址寻址 (3)MOV AX,[90] 直接寻址 (4)MOV [DI+90],AH 变址寻址 (5)MOV AL,[BP+SI+20] 基址变址寻址 5、 DS DS ES SS 6、 (1)MOV AX,[2345H] 2345H (2)MOV AX,[BX] 2010H (3)MOV AX,ES:[DI+200] 00B8H------------100B8H(溢出) (4)MOV AX,DS:[BP+DI] 0410H----------------10410H(溢出) MOV AX,[BX+DI+114H] 2114H---------------12114H(溢出) 7、 8、 是通过寄存器SS和SP组织的,当SP的值小于零时说明栈空,当SP 的值为FFFFH时栈满。 9、

10、LEA CX, [BX+SI] 11、 BX=40ABH 没有变化 BL=47H CF;OF;ZF;SF=1;1;0;1 AL=E5H 没有变化 AX=1111 1111 1110 0101B 标志位不变 BH=25H OF:SF:ZF:CF=0:0:0:1 BX=2561H OF:SF:ZF:CF=0:0:0:1 AX=6H OF:SF:ZF:CF=0:0:0:1 BH=2EH OF:SF:ZF:CF=0:0:0:1 12 、 操作数之一和结果都放在固定的寄存器中进行寻址13、 MOV AL,DL MUL DL MUL DL MUL DL 14、 (1)AND DH,11111000B MOV BH,DH (2)OR DI,11111000 00000000B (3)OR AX,1110 0000 0000 0000B XOR AX,0000 0011 1000 0000B AND AX,1111 1111 1111 1000B (4)TEST BX,0010 0100 0100 0000B (5)NOT CX TEST 0100 00100 0001 0000B (6)NOT AX TEST AX,2205H (7)TEST DX,4812H

微机原理第3章作业及答案

第3章指令系统 习题解答 1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX中的内容是什么?并说明各条指令中源操作数的寻址方式。 (1) MOV AX,DS (2) MOV AX,[2000H] (3) MOV AX,[SI] (4) MOV AX,[BP] (5) MOV AX,[BP+SI] 【解】 (1)AX=3000H 寄存器寻址 (2)AX=4000H 直接寻址 (3)AX=6020H 寄存器间接寻址 (4)AX=4000H 寄存器间接寻址 (5)AX=6020H 基址加变址寻址 2. 指出下列指令中的非法指令。 (1) MOV BX,AL (2) MOV CS,2000H (3) PUSH 4567H (4) XCHG VAR1,VAR2 (5) ADD AL,148H (6) MOV DS,2000H (7) MOV BH,SI (8) SUB 38H,AL 【解】非法指令: (1) MOV BX,AL BX和AL的长度不一致 (2) MOV CS,2000H CS段寄存器不能作目的操作数 (3) PUSH 4567H 只能将寄存器或存储单元的内容压入堆栈,不能是立即数 (4) XCHG VAR1,V AR2 两个存储单元之间不能直接交换数据 (5) ADD AL,148H 运算溢出 (6) MOV DS,2000H 立即数不能直接传送给DS段寄存器 (7) MOV BH,SI BH和SI的长度不一致 (8) SUB 38H,AL 目的操作数不能是立即数 3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。 (1) PUSH AX 执行后AX=?,SP=? (2) PUSH AX PUSH BX POP DX

第三章微机原理习题答案

第三章习题答案 一、单选题 1.8086是高性能的第三代微处理器,是Intel系列的 B 位微处理器。 A.8 B.16 C.32 D.64 2.8086有20根地址线,可以寻址到的内存空间能达到 B 字节。 A.1K B.1M C.1G D.1T 3.80486的内部所有部件都连接在 A 上,并通过 B 交换数据 A.内部总线B.数据总线C.地址总线D.外部总线 4. C 的任务就是在内部控制总线信号的控制下,把内部数据总线上的数据送上外部地 址总线,或与外部数据总线的某些位交换数据,并产生相应的外部控制信号。 A.高速缓存部件B.代码预取部件 C.总线接口部件D.指令译码部件 5.在指令流水线技术中,预取指令部件一次可以从内部Cache取 C 字节的指令代码, 送预取指令队列等候执行。 A.4 B.8 C.16 D.32 6.当存储器的读出时间大于CPU要求的时间时,为了保证CPU与存储器的周期配合,就要 利用一个READY信号,使CPU插入一个 D 状态。 A.T 1B.T 2 C.T 3 D.T w 7.指令队列的作用是 D 。 A.暂存操作数地址B.暂存操作数 C.暂存指令地址D.暂存预取指令 8.在80486微处理器中设置有4个系统地址寄存器,用来在保护方式下管理4个系统表。其 中用来存放全局描述符表的是 A 。 A.全局描述符表寄存器B.中断描述符表寄存器 C.局部描述符表寄存器D.任务状态寄存器 9.段寄存器和 D 一起为操作系统完成内存管理、多任务环境、任务保护提供硬件支持。 A.调试寄存器B.系统地址寄存器 C.标志寄存器D.指令指针寄存器 10. B 为中断允许标志。该位置为1时,允许响应外部可屏蔽中断(INTR);该位置为0 时,禁止响应外部可屏蔽中断。 A.OF B.IF C.DF D.ZF 二、判断题 1.8086的内部结构由总线接口部件BIU和执行部件EU两部分组成。(T ) 2.总线实际上是一组导线,是各种公共信号线的集合,用于作为微型计算机中所有各组成部 分传输信息共同使用的“公路”。总线上传输的信号是双向的。(T ) 3.INTR是可屏蔽的中断信号输入,此信号是电平型的,必须保持足够长的时间等待指令单 元的识别,如果保持的时间不够长,CPU不会察觉此次请求。(F ) 4.指令指针指示器是32位的寄存器,它的内容是下一条要取入CPU的指令在内存中的偏移 地址。(T ) 5.

微机原理第3章 习题答案

第3章习题参考答案 1 分别指出下列指令中的源操作数和目的操作数的寻址方式。 答:源操作数目的操作数 (1MOV AX,[SI] 寄存器寻址寄存器间接寻址 (2MOV DI,100 寄存器寻址立即寻址 (3MOV [BX],AL 寄存器间接寄存器 (4MOV [BX][SI],CX 基址+变址寄存器 (5ADD DX,106H[SI] 寄存器变址 (6PUSH AX 寄存器 (7ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器 (8OR AX,DX 寄存器寄存器 2.设寄存器(DS=2000H,(SS=1500H,(ES=3200H,(SI =0A0H,(BX=100H,(BP=10H,数据段中变量VAL的偏移地址为50H。试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少? 答:操作数的寻址方式存储器操作数PA (1MOV AX,[100H] 直接寻址20100H (2MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H (3MOV DX,[BX][SI] 基址+变址寻址200F0H (4MOV AX,V AL[SI] 变址寻址200F0H

(5MOV BX,1234[BX] 基址寻址205D2H (6MOV AX,[BP] 寄存器间接寻址15010H 3. 判断下列指令有误错误,若有,则改之。 答: (1PUSH CL 有错,对堆栈操作数总是16位的。改为:PHSH CX (2ADCAX,0ABH 无,只是CF的值是不确定的(0或1 (3OUT 3EBH, AX 有,输出设备的端口地址若超过8位,应使用DX 间接寻址。改为: MOV DX, 3EBH OUT DX,AX (4MUL AL, CL 有错。乘法指令中有AX或AL寄存器是隐含的。改为: MUL CL (5MUL AX, 25 有错。乘法指令中不能用立即数。改为: MOV BX,25 MUL BX (6ROL DX,5 有错。移位的次数由CL寄存器控制。改为: MOV CL,5 ROL DX,CL (7CALL FAR SUM 无错。

微型计算机原理 (第三章课后答案)

微型计算机原理 第三章 80X86微处理器 1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。答: (1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。 (2) EU的作用:执行指令,并为BIU提供所需的有效地址。 (3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令 队列中。这样就实现了取指和执行指令的并行工作。 2.8086/8088CPU内部有哪些寄存器?其主要作用是什么? 答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄 存器4个和控制寄存器2个。其主要作用是: (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。 AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,所有的I/O指令都使用该寄存器与外设端口交换信息。 BX(Base)称为基址寄存器。用来存放操作数在内存中数据段内的偏移地址, CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化, 有利于提高程序的运行速度。 DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长 乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。 (2) 地址寄存器:一般用来存放段内的偏移地址。 SP(Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时, 每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。 BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以用来存放数据,但更经常更重要的 用途是存放操作数在堆栈段内的偏移地址。 SI(Source Index)称为源变址寄存器。SI存放源串在数据段内的偏移地址。 DI(Destination Index)称为目的变址寄存器。DI存放目的串在附加数据段内的偏移地址。 (3) 段寄存器:用于存放段地址 CS(Code Segment)称为代码段寄存器,用来存储程序当前使用的代码段的段地址。 CS的内容左移4位再加上指令指针寄存器IP的内容就是下一条要读取的指令在存储器中的物理地址。 DS(Data Segment)称为数据段寄存器,用来存放程序当前使用的数据段的段地址。 DS 的内容左 移4位再加上按指令中存储器寻址方式给出的偏移地址即得到对数据段指定单元进行读写的物理地址。 SS(Stack Segment)称为堆栈段寄存器,用来存放程序当前所使用的堆栈段的段地址。堆栈是存 储器中开辟的按“先进后出”原则组织的一个特殊存储区,主要用于调用子程序或执行中断服务程 序时保护断点和现场。 ES(Extra Segment)称为附加数据段寄存器,用来存放程序当前使用的附加数据段的段地址。附

相关文档
相关文档 最新文档