10.指出寻址方式
(1)MOV AX,BX寄存器寻址
(2)MOV DL,20H 立即寻址
(3)MOV AX,VAR[BX][SI] 相对基址加变址寻址
(4)MOV AX,VAR 直接寻址
(5)MOV DX,[BP] 寄存器间接寻址
(6)MOV AL,'B' 立即寻址
(7)MOV DI,ES:[BX] 寄存器间接寻址
(8)MOV BX,100H[BX] 相对寄存器间接寻址
注:对于变量,都相当于[####]。对于ASCII码,对应一个十六进制码。
11.(DS)= 2000H,(BX)= 0100H,(SS)= 1000H,(BP)= 0010H。TABLE的物理地址为2000AH,(SI)= 0002H。求以下情况的物理地址。
(1)MOV AX,[1234H]
(DS)× 16 + 1234H = 21234H
(2)MOV AX,[BX]
(DS)× 16 +(BX)= 0H
(3)MOV AX,TABLE[BX]
(TABLE)+(BX)+(DS)×16 = 4010AH
(4)MOV AX,[BP]
(SS)× 16 +(BP)=10010H
(5)MOV AX,[BP][SI]
(SS)× 16 +(BP)+(SI)= 10012H
12.(DS)= 1000H,(SS)= 2000H,(SI)= 007FH,(BX)= 0050H,(BP)= 0016H,TABLE的偏移地址为0100H。求下列情况PA。
(1)MOV AX,[1000H]
直接寻址:EA = 1000H,PA = 11000H
(2)MOV AX,TABLE
直接寻址:EA = 0100H,PA = 10100H
(3)MOV AX,[BX+1000H]
相对寄存器间接寻址:EA = 1016H,PA = 11016H
(4)MOV AX,TABLE[BP][SI]
相对基址加变址寻址:EA = 0195H,PA = 5H
14.更正错误
(1)MOV DS,200H
段寄存器无法直接赋值,改正:
MOV AX,200H
MOV DS,AX
(2)MOV 1000H,DX
立即数不能作为目的地,改正:
MOV [1000H],DX
(3)SUB [1000H],[SI]
dest只能是寄存器或存储器,不能为存储器之间,改正:
MOV AL,[SI]
SUB [1000H],AL
(4)PUSH AL
堆栈为字操作,不能字节进出,改正:
PUSH AX
(5)JMP AX
AX为特定寄存器名称,不能用于自定义寻址,改正:
JMP LOOP
(6)MUL 39H
源操作数不能为立即数。改正:
MOV CH,39H
MUL CH
(7)OUT 380H,AX
380H超过一字节(255),必须用DX进行传输,改正:
MOV DX,380H
OUT DX,AX
(8)ADD AL,BX
AL为字节数,BX为字,两者不匹配,改正:
ADD AX,BX 或 ADD AL,BL
(9)POP CS
CS不允许进行POP指令,改正:
POP DS/ES
(10)MOV AL,3000H
AL为一字节,3000H为一字,不匹配,改正:
MOV AX,3000H
16.(AL)= 7BH,(BL)= 38H,执行SUB AL,BL后各标志位的状态?
OF = 0,SF = 0,ZF = 0,AF = 0,PF = 0,CF = 0
17.(AL)= 96H,(BL)= 12H,执行下列操作后OF与CF的变化。
(1)MUL BL
AL = 0A8CH,OF = 1,CF = 1
(2)IMUL BL
AL = F88CH,OF = 1,CF = 1
解析:北京交通大学-黄赞武教授
18.(AX)= 0ABCDH,(BX)= 7F8FH,CF = 1,求执行下列操作后的标志位状态。
(1)ADD AX,BX
AX = 2B5CH SF = 0,ZF = 0,AF = 1,PF = 1 CF = 1,OF = 0
(2)ADC AX,BX
AX = 2B5DH SF = 0,ZF = 0,AF = 1,PF = 0 CF = 1,OF = 0
(3)AND AX,BX
AX = 2B8DH SF = 0,ZF = 0,AF = 0,PF = 1 CF = 0,OF = 0
(4)XOR AX,BX
AX = D442H SF = 1,ZF = 0,AF = 0,PF = 1 CF = 0,OF = 0
22.(SS)= 2000H,(SP)= 000AH,1234H、5678H压入栈,随后执行弹出一个字的操作。
24.
(1)JMP、CALL的区别
JMP为无条件转移指令,不存在回环。即执行完成的后续地址可以任意选取。CALL为子程序回调指令,存在回环。即执行完毕需返回断点,继续工作。
(2)TEST、AND的区别
TEST和AND都为按位相与,但TEST只改变寄存器状态标志位,不影响实际存储结果。
(3)JA和JG的区别
JA(above)为无符号数的比较,JG(great)为有符号数的比较。