(2)MOV CX,DATA[SI]
(3)ADD AX,[BX+DI]
(4)AND AX,BX
(5)MOV [SI],AX
(6)PUSHF
答:(1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址;
(2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址;
(3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址;
(4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址;
(5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;
(6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;
6.试述指令 MOV AX,2010H 和 MOV AX,DS:[2010H] 的区别。
答:指令 MOV AX,2010H 是将立即数 2010H 送 AX 寄存器,而指令 MOV AX,DS:[2010H]是将 DS 段有效地
址为 2010H 的两个单元的内容送 AX。
7.写出以下指令中内存操作数的所在地址。
(1)MOV AL,[BX+5]
(2)MOV [BP+5],AX
(3)INC BYTE PTR [SI+3]
(4)MOV DL,ES:[BX+DI]
(5)MOV BX,[BX+SI+2]
答:(1)指令 MOV AL,[BX+5]中内存操作数的所在地址=(DS)*10H+(BX)+5;
(2)指令 MOV [BP+5],AX 中内存操作数的所在地址=(SS)*10H+(BP)+5 和(SS)*10H+(BP)+6;
(3)指令 INC BYTE PTR[SI+3]中内存操作数的所在地址=(DS)+(SI)+3;
(4)指令 MOV DL,ES:[BX+DI]中内存操作数的所在地址=(ES)*10H+(BX)+(DI);
(5)指令 MOV BX,[BX+SI+2]中内存操作数的所在地址=(DS)*10H+(BX)+(SI)+2 和(DS)*10H+
(BX)+(SI)+3;
8.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原
错误指令((8)、(13)除外)期望实现的操作。
(1)MOV AL,BX (9)MOV ES,3278H
(2)MOV AL,SL (10)PUSH AL
(3)INC [BX] (11)POP [BX]
(4)MOV 5,AL (12)MOV [1A8H],23DH
(5)MOV [BX],[SI] (13)PUSH IP
(6)MOV BL,F5H (14)MOV [AX],23DH
(7)MOV DX,2000H (15)SHL AX,5
(8)POP CS (16)MUL AX,BX
答:(1)MOV AL,BX 错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOV
AX,BX 或 MOV AL,BL ;
(2)MOV AL,SL 错,SI 寄存器不能分为高 8 位和低 8 位使用,即没有 SL 寄存器。应改为:MOV AX,SI