A. CF=0 B. CF=1 C. ZF=0 D. ZF=1
10.在8086中,(BX)=0282H,且题中指令已在指令队列中,则执行 INC BYTE PTR(BX)指令需要的总线周期为( C )。
A. 0 B. 1 C.2 D. 3
三、多项选择题
1.下列指令中源操作数使用寄存器寻址方式的有(BF)。
A. MOV BX,BUF[SI] B. ADD [SI+50],BX C. SUB AX,2 D. CMP AX,DISP[DI] E. MUL VAR[BX] F. PUSH CX 2.将累加器AX的内容清零的正确指令是(BCD)。 A. CMP AX,AX B. SUB AX,AX C. AND AX,0 D. XOR AX,AX
3.正确将字变量WORD VARR偏移地址送寄存器AX的指令是(CD)。 A. MOV AX,WORD VARR B. LES AX,WORD VARR
C. LEA AX,WORD VARR D. MOV AX,OFFSET WORD VARR 4.调用CALL指令可有(ABDE)。
A. 段内直接 B. 段内间接 C. 短距离(SHORT) D. 段间直接 E. 段间间接
5.8086指令的操作数可能有(ABC)。 A. 0 B. 1 C. 2 D. 3
四、填空题
1.与指令MOV BX,OFFSET BUF功能相同的指令是 LEA BX,BUF。 2.假设(BX)= 0449H,(BP)= 0200H,(SI)= 0046H,(SS)= 2F00H,(2F246H)= 7230H则执行XCHG BX,[BP+SI]指令后,(BX)= 7230H 。
3.执行下列指令序列后,完成的功能是将(DX,AX)的值除以16。
MOV
NEXT: SHR
RCR LOOP
CX,4 DX,1 AX,1 NEXT
4.已知(AL)=0101 1101B,执行指令NEG AL后,再执行CBW后, (AX)= 0FFA3H 。
5.在数据传送类指令中,只有 SAHF 和 POPF 两条指令会影响标志位的值,其中指令 POPF 是唯一可以改变TF标志的指令。
6.设有100个字节数据(补码),存放在数据段中EA=2000H的存储单元中。以下程序应该从该数据区中找出最小的一个数据,并存入EA=2100H单元中,请将下面程序补充完整。
10
MIN: MOV
MOV MOV
LOOP1:INC
CMP
BX, 2000H AL,[BX] CX, 99 BX AL,[BX]
JLE LOOP2 MOV AL,[BX]
LOOP2:DEC
CX
JNZ LOOP1 MOV [2100H],AL
7.MOV AX,ES:[BX][SI]中,源操作数的物理地址计算式是: (ES)×16+(BX)+(SI)。
五、综合题
1.请指出以下各指令的源、目的操作数所使用的寻址方式。 (1)MOV SI,2100H (2)SBB (4)OR
DISP[BX],7 AX,[609EH]
(3)AND [DI],AX
(5)MOV [BX+DI+30H],CX (6)PUSH ES:[BP] (7)CALL DISP [DI]
答:(1)源操作数:立即数寻址;目的操作数:寄存器寻址
(2)源操作数:立即数寻址;目的操作数:(带位移量的)基址寻址 (3)源操作数:寄存器寻址;目的操作数:变址寻址 (4)源操作数:直接寻址; 目的操作数:寄存器寻址
(5)源操作数:寄存器寻址;目的操作数:(带位移量的)基址变址寻址 (6)源操作数:带段超越的基址寻址;目的操作数:隐含寻址 (7)只有一个操作数,为(带位移量的)变址寻址
2.请指出下列各条指令的错误,并改正。 (1) MOV (2) ADD (3) PUSH (4) IN (5) OUT (6) POP
[100],23H AX,[BX+BP+6] DL
AX,[3FH] 3FFH,AL [AX]
11
(7) IMUL (8) SHL (9) INT (10) XCHG (11) MOV (12) MOV (13) MOV (14) MOV (16) MOV
MOV MOV
4CH BX, 300 DX,0FFFH AH,BX [BX],ES:AX AX,OFFSET [SI] CS,AX DS,1000H AX,1000H DS,AX
(15) MOV DS,ES
答:(1)不允许直接向段寄存器送立即数,可改为:
(2)该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,则第一操作数前应加上BYTE PTR或WORD PTR说明,否则汇编程序会因不能确定操作数长度而指示出错。可改为:MOV [100],23H
(3)不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:
ADD
可改为:PUSH DX
(5)在输入/输出指令中,8位端口地址应直接写在操作数处。可改为:
IN AX,3FH
(6)端口地址3FFH已超出8位二进制表示范围,16位端口地址应存于DX。可改为:
MOV
DX,3FFH OUT
[BX] BL,4CH BL CL,5 BX,CL
DX,AL
(7)AX不能用于间接寻址,间接寻址只能用BX、BP、SI、DI四个寄存器之一。可改为:POP
MOV IMUL MOV SHL
(8)立即数不能做乘法指令的操作数,可改为:
AX,[BX+DI+6]
(4)堆栈操作应以字为单位进行,而DL是一个字节。
BYTE
PTR
(9)当逻辑移位的次数大于1时,应该用CL指示次数。可改为:
(10)操作数300 ? 255,已超出有效的中断类型码范围。 (11)XCHG指令不允许立即数做它的操作数。可改为:
12
MOV XCHG
CX,0FFFH DX,CX
(12)源、目的字长不一致
(13)在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式
(14)OFFSET只用于简单变量,应去掉 (15)CS不能作为目的寄存器 (16)段寄存器之间不能直接传送数据
3.设若标志寄存器原值为0A11H,(SP)=0060H,(AL)=4。下列几条指令执行后,标志寄存器、AX、SP的值分别是多少?
PUSHF LAHF
XCHG AH,AL PUSH AX SAHF POPF
答:指令执行后标志寄存器的值为0411H,AX=0411H ,SP=005EH。
4.假如在程序的括号中分别填入指令: (1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20
试说明在三种情况下, 当程序执行完后, AX、BX、CX、DX四个寄存器的内容分别是什么?
AX,01 BX,02 DX,03 CX,04 BX,AX
MOV MOV MOV INC ADD SHR
BEGIN: MOV
L20: AX DX,1
( )
答案: (1)(AX)= 5 (BX)= 16 (CX)= 0 (DX)= 0
(2)(AX)= 3 (BX)= 7 (CX)= 2 (DX)= 0 (3)(AX)= 2 (BX)= 4 (CX)= 3 (DX)= 1
13
5.在已学的指令中,可实现累加器清0的单条指令有哪些?比较它们的功能。
答:(1)MOV (2)SUB
AX,0 ;仅将累加器清0,不会影响任何标志位
;累加器清0的同时影响所有状态标志,具体地;将累加器清0,ZF、PF置1,CF、OF、SF清0 ;将累加器清0,ZF、PF置1,CF、OF、SF清0
AX,AX
有:ZF、PF置1,CF、AF、SF、OF均清0 (3)AND AX,0 (4)XOR AX,AX
6.已知(DS)=2000H,有关的内存单元值为:(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT的偏移地址为1200H。执行下列指令后,寄存器AX、BX、SI的值分别是多少?
MOV MOV MOV
7.设若内存单元DATA在数据段中偏移量为24C0H处,24C0H~24C3H单元中依次存放着55H、66H、77H、88H。下列几条指令执行后,寄存器AX、BX、CL、SI、DS的值分别是多少?
MOV LEA MOV LDS
AX,DATA SI,DATA CL,[SI] BX,DATA
BX,OFFSET COUNT SI,[BX]
AX,COUNT[SI][BX]
答:执行结果为(BX)=1200H,(SI)=1000H,(AX)=3040H。
答:执行结果为(AX)=6655H,(BX)=6655H,(CL)=55H,(SI)=24C0H,(DS)=8877H。
8.若(AX)=26D3H,(CX)=7908H,CF=1,执行下列指令后,寄存器AX、CX的值分别是多少?CF=?OF=?
SAL RCR ROL
9.下面的程序执行后,DX、AX的值分别是多少? ;以X为首址的字单元中的数据依次为1234H、5678H
14
CH,1 AX,CL AL,1
答:执行结果为(AX)=0A64CH,(CX)=0F208H,CF=OF=0。