汇编习题及答案

更新时间:2024-05-05 08:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第三章 8086的寻址方式和指令系统

1. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):

(1)MOV SI,100 (2)MOV BX,VAR1[SI] (3)MOV AX, [BX] (4)MOV AL, [DX] (5)MOV BP, AL (6)MOV VAR1, VAR2 (7)MOV CS, AX (8)MOV DS, 0100H

(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2 (11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2 (13)SUB [DI], 78H (14)MOVS VAR1, VAR2 (15)PUSH 100H (16)POP CS

(17)XCHG AX, ES (18)MOV DS, CS (19)JMP L1+5 (20)DIV AX, 10 (21)SHL BL, 2 (22)MOV AL, 15+23 (23)MUL CX (24)XCHG CL, [SI]

(25)ADC CS:[0100], AH (26)SBB VAR1-5,154

参考答案:(1)MOV SI,100 ;指令正确,源:立即数寻址,目的:寄存器寻址 (2)MOV BX,VAR1[SI] ;指令正确,源:寄存器相对寻址,目的:寄存器寻址 (3)MOV AX, [BX] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址 (4)MOV AL, [DX] ;指令错误,DX不能用作为地址寄存器 (5)MOV BP, AL ;指令错误,类型不一致

(6)MOV VAR1, VAR2 ;指令错误,MOV指令不能从存储器到存储器传送 (7)MOV CS, AX ;指令错误,CS不能用作为目的操作数

(8)MOV DS, 0100H ;指令错误,MOV指令不能将立即数传送到段寄存器 (9)MOV [BX][SI], 1 ;指令错误,类型不定

(10)MOV AX, VAR1+VAR2 ;指令错误,MOV指令中不能完成加法运算

(11)ADD AX, LENGTH VAR1 ;指令正确,源:立即数寻址,目的:寄存器寻址 (12)OR BL, TYPE VAR2 ;指令正确,源:立即数寻址,目的:寄存器寻址 (13)SUB [DI], 78H ;指令错误,类型不定

(14)MOVS VAR1, VAR2 ;指令正确,源:隐含寻址,目的:隐含寻址 (15)PUSH 100H ;指令错误,立即数不能直接压入堆栈 (16)POP CS ;指令错误,CS不能用作为目的操作数

(17)XCHG AX, ES ;指令错误,XCHG指令中不能使用段寄存器 (18)MOV DS, CS ;指令错误,MOV指令不能从段寄存器到段寄存器 (19)JMP L1+5 ;指令正确,段内直接转移

(20)DIV AX, 10 ;指令错误,DIV指令格式错误

(21)SHL BL, 2 ;指令错误,移位指令的移位数要么是1,要么是CL (22)MOV AL, 15+23 ;指令正确,源:立即数寻址,目的:寄存器寻址 (23)MUL CX ;指令正确,源:寄存器寻址,目的:隐含寻址

(24)XCHG CL, [SI] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址 (25)ADC CS:[0100], AH ;指令正确,源:寄存器寻址,目的:直接寻址 (26)SBB VAR1-5,154 ;指令正确,源:立即数寻址,目的:直接寻址

2. 写出下列转移指令的寻址方式(设L1为标号,VAR1为字型变量,DVAR1为双字型变量): (1)JMP L1 (2)JMP NEAR L1 (3)JNZ L1 (4)JMP BX

(5)JG L1 (6)JMP VAR1[SI]

(7)JMP FAR PTR L1 (8)JMP DVAR1

2. 答:(1)JMP L1 ;段内直接寻址 (2)JMP NEAR L1 ;段内直接寻址 (3)JNZ L1 ;段内相对寻址 (4)JMP BX ;段内间接寻址

(5)JG L1 ;段内相对寻址 (6)JMP VAR1[SI] ;段内间接寻址

(7)JMP FAR PTR L1 ;段间直接寻址(8)JMP DVAR1 ;段间间接寻址 3. 如果堆栈的起始地址为2200:0000,栈底为0100H,(SP)=00A8H,求 (1)栈顶地址; (2)SS的内容; (3)再存入数据5678H,3AF2H后,SP的内容。

4. 按下列要求写出指令:

(1)将AX寄存器的低4位清零,其余位不变; (2)将BX寄存器的低4位置1,其余位不变; (3)将AL寄存器的低4位保持不变,高4位取反;

(4)测试BX中的位1和位2,当这两位同时为0时将AL置0FFH,否则AL清零; (5)测试BX中的位1和位2,当这两位有一位为0时将AL置0FFH,否则AL清零; (6)将AL中保存的字母ASCII码变换成相应的大写字母的ASCII码; (7)将AL中保存的字母ASCII码变换成相应的小写字母的ASCII码; (8)将AX中的各位取反;

(9)将DX中的低7位取反,高9位不变; (10)将CX中的低8位与高8位互换。

5. 写出完成下述功能的程序段: (1)传送40H到AL寄存器; (2)将AL的内容乘以2; (3)传送16H到AH寄存器; (4)AL的内容加上AH的内容。 计算最后结果(AL)=? 5. 解:(1)MOV AL,40H (2)SHL AL,1 (3)MOV AH,16H (4)ADD AL,AH 执行后(AL)=96H

6. 设(BX)=11001011B,变量VAR的内容为00110010B,求下列指令单独执行后BX的内容:(1)XOR BX,VAR; (2)AND BX,VAR; (3)OR BX,VAR; (4)XOR BX,11110000B; (5)AND BX,00001111B; (6)TEST BX,1。 6. 解:(1)XOR BX,VAR; 执行后(BX)=00F9H (2)AND BX,VAR; 执行后(BX)=0002H (3)OR BX,VAR; 执行后(BX)=00FBH

(4)XOR BX,11110000B;执行后(BX)=003BH (5)AND BX,00001111B;执行后(BX)=00C4H (6)TEST BX,1 ; 执行后(BX)=00CBH(不变)

7. 选择题(各小题只有一个正确答案) (1)执行下列三条指令后: MOV SP,1000H PUSH AX CALL BX

a. (SP)=1000H; b. (SP)=0FFEH; c. (SP)=1004H; d. (SP)=0FFCH;

(2)要检查寄存器AL中的内容是否与AH相同,应使用的指令为: a. AND AL, AH b. OR AL, AH c. XOR AL, AH d. SBB AL, AH

(3)指令JMP NEAR PTR L1与CALL L1(L1为标号)的区别在于: a. 寻址方式不同; b. 是否保存IP的内容; c. 目的地址不同; d. 对标志位的影响不同。 7. 答:(1)d (2)c (3)b

8. 下列程序段执行后,求BX寄存器的内容:

MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL

8. 答:(BX)=C02DH

9. 指出下列指令中哪些是错误的,错在哪? (1)MOV DL, AX (2)MOV 8650H, AX (3)MOV DS, 0200H (4)MOV [BX], [1200H] (5)MOV IP, 0FFH

(6)MOV [BX+SI+3], IP (7)MOV AX, [BX][BP] (8)MOV AL, ES:[BP] (9)MOV DL, [SI][DI]

(10)MOV AX, OFFSET 0A20H (11)MOV AL, OFFSET TABLE (12)XCHG AL, 50H (13)IN BL, 05H (14)OUT AL, 0FFEH 9. 答:

(1)错,寄存器寻址方式中,目的操作数与源操作数长度必须一致 (2)错,目的操作数不可以是立即数

(3)错,MOV指令不允许将立即数传入段寄存器 (4)错, MOV指令的两个操作数不能同时为存储器 (5)错, IP不能作为MOV指令的目的操作数 (6)错, IP不能作为MOV指令的源操作数

(7)错,BX与BP不可以同时出现在源操作数当中 (8)对

(9)错,SI与DI是两个变址寄存器,不可以同时出现在源操作数中。

(10)错,OFFSET后面跟的应该是符号地址,再把符号地址的值作为操作数。 (11)错,TABLE的偏移地址是16位,目的与源长度不一致

(12)错,交换指令可以在寄存器之间,寄存器和存储器之间进行,不可以是立即数。 (13)错, BL不能作为IN指令的目的操作数,只能用AL或AX

(14)错,端口地址0FFEH>FFH, 应用DX间接寻址, 同时源操作数和目标操作数的位置颠倒了,应改为OUT DX, AL。

10.已知当前SS=1050H, SP=0100H, AX=4860H, BX=1287H,试用示意图表示执行下列指令过程中,堆栈中的内容和堆栈指针SP是怎么变化的? (1) PUSH AX (2) PUSH BX (3) POP BX (4) POP AX 10.答:

本文来源:https://www.bwwdw.com/article/bdfg.html

Top