计算机组成原理与汇编的课后答案 下载本文

(2) MOV BL , DATA1

(3) MOV DS , AX

(4) AND AL , VAR1+2

(5) TEST [SI] , CL

(6) OR ARRY [BX] ,

17

(7) SUB DS:[01FEH] , DX

(8) ADC [BP][DI] , BH

(9) AND CX , - 19[BX][SI]

(10) PUSH ES

(11) CLC ; CF←0

13. 试分别指出下列各指令语句的语法是否有错误,若有错,指明是什么错误。 (1) MOV AL , 0F5H ;√ (2) (2)ADD [BX][BP] , BX ; √ (3) (3)CMP AL , 100H ; √ (4) (4)TEST [BP] , DL ; √

(5) (5)ADC 15H , CL ; × ADC是双操作数指令; 目的地址不能为立即数 (6) (6)SUB [DI] , DA_WORD ; × 源操作数和目的操作数不能同时为存储器操作数

(7) (7)OR CH , CL ; √

(8) (8)MOV AL , 1000H ; × 源操作数和目的操作数类型属性不一致 (9) (9)SAR 10H[DI] , 2 ; √移位次数大于1时, 应由CL指定移位次数

(10) NOT AL , BL ; × NOT 是单操作数指令

(11) (11)DEC CX , 1 ; × DEC是单操作数指令

(12) (12)LEA ES , TAB[BX] ; × LEA指令的目的地址必须是通用寄存器

18

14. 执行下面2条指令后,标志寄存器中CF,AF,ZF,SF和OF分别是多少? MOV AL , 91 ;91=01011011B ADD AL , 0BAH ; 0BAH=10111010B

15. 假设(DS) = 091DH , (SS) = 1E4AH , (AX) = 1234H , (BX) = 0024H , (CX)

= 5678H , (BP) = 0024H , (SI) = 0012H , (DI) = 0032H , (09226H) = 00F6H , (09228H) = 1E40H , (1E4F6H) = 091DH . 试给出下列各指令或程序段执行的分别执行的结果.

(1) (1)MOV CL , 20H[BX][SI]

解 : 源操作数的物理地址: (DS)×10H + 20H+(BX)+(SI)

将09226H字节单元的内容送CL,结果(CL) = 00F6H (2) MOV [BP][DI] , CX

解 : 目的操作数的物理地址: (SS)×10H + (BP)+(DI)

将CX寄存器的内容传送到1E4F6H字单元 , 结果 (1E4F6H) = (CX) = 5678H (3) (3)LEA BX , 20H[BX][SI] MOV AX , 2[BX]

解 : 执行完第一句指令后,BX的内容为:

第二句指令中,源操作数的物理地址为 EA = (DS)×10H+2+(BX)

将09228H字单元的内容送AX寄存器 , 结果 (AX) = 1E40H (4)LDS SI , [BX][DI] MOV [SI] , BX

解 : 第一句指令中源操作数的逻辑地址为 DS:(BX)+(DI) 其偏移量为 (BX)+(DI) = 0024H+0032H = 0056H, 执行完第一句指令后, (SI) = 0056H 第二句指令中,源操作数的物理地址为

(DS)×10H+(SI) = 091D0H+0056H = 09226H

19

将BX寄存器的内容送09226单元 , 结果 (09226H) = (BX) = 0024H (5)(5)XCHG CX , 32H[BX]

XCHG 20H[BX][SI] , AX

解 : 第一句指令中源操作数的物理地址为 (DS) × 10H+32H+(BX)= 09226H

09226H字单元和CX寄存器的内容交换,结果 (CX) = 00F6H ,(09226H) = 5678H 第二句指令中目的操作数的物理地址为 (DS) × 10H++20H+(BX)+(SI) = 09226H

09226H字单元和寄存器AX的内容交换, 结果 (09226H) = 1234H , (AX) = 5678H 16. 假设(SS)=0915H , (DS) = 0930H , (SI) = 0A0H , (DI) = 1C0H , (BX) = 80H , (BP) = 470H . 现有一指令“MOV AX , OPRD”, 若源操作数的物理地址为095C0H , 试用4种不同寻址方式改写此指令,并要求至少使用上述条件一次. 解: 源操作数的物理地址与DS段基址的差为 095C0H – 09300H = 2C0H

① MOV AX , 100H[DI] ; 源操作数的物理地址为: (DS)×10H+100H+(DI) = 09300H + 100H + 1C0H =095C0H ② MOV AX , 220H[SI] ; 源操作数的物理地址为: (DS)×10H+220H+(SI) = 09300H + 220H + 0A0H =095C0H ③ MOV AX , 240H[BX] ; 源操作数的物理地址为: (DS)×10H+240H+(BX) = 09300H + 240H + 080H =095C0H ④ MOV AX , 1A0H[SI][BX] ;源操作数的物理地址为:

(DS)×10H+0A0H+(SI)+(BX) = 09300H + 1A0H + 0A0H +080H = 095C0H

18. 假设(AX)=0A5C6H , (CX) = 0F03H , 则下列4条指令执行后 , (AX) = 81C6H , CF= 1 .

STC ; CF = 1

RCL AX , CL ; AX= 0010 1110 0011 0110 , CF = 1 AND AH , CH ; AH = 0000 1110 , CF = 0

RCR AX , CL ; AX = 1000 0001 1100 0110, CF = 1

19. 假设(AX) = 0FC77H , (CX) = 504H , 则下列4条指令执行后 , (AX) = , CF = . CLC ; CF = 0

SAR AX , CL ; (AX) = 1111 1111 1100 0111 , CF = 0

20