13)ADD BYTE PTR [BP],256 操作数长度不一致 14)MOV DATA[SI],ES:AX 15)JMP BYTE PTR [BX] 16)OUT 230H,AX 17)MOV DS,BP 18)MUL 39H 没有ES:AX这样的用法 间接跳转指令从内存中至少需要读两个字节的地址 I/O指令在端口号大于255(0FFH)时,应该由DX给出 没错 MUL指令的源操作数不能是立即数
3.14 假设(DS)=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,位移量DATA=40H,(217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H。试确定下列转移指令的转移地址。 转移指令 1)JMP 2300H 2)JMP WORD PTR [BX] 3)JMP DWORD PTR [BX+DATA] 转移地址 IP=2300H,CS=0200H IP=(DS)*16+(BX)=212A0H+0500H=217A0H,CS=0200H 内存操作数的首地址为:(DS)*16+(BX)+DATA=217E0H, (IP)=(217E1):(217E0)=0400H (CS)=(217E3):(217E2)=9000H (IP)=(BX)=0500H,(CS)=0200H 内存操作数的首地址为:(DS)*16+(BX)+(DI)=23DA0H, (IP)=(23DA1):(23DA0)=? (CS)=(23DA3):(23DA2)=? 4)JMP BX 5)JMP DWORD PTR [BX][DI]
3.19 试写出程序段把DX、AX中的双字右移四位 答:
程序如下:
MOV CX,4 ;设置循环次数 NEXT:SHR DX,1 RCR AX,1
LOOP NEXT ;CX不等零则循将DX,AX右移一位