微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社
发布时间:2024-10-08
发布时间:2024-10-08
微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社 (周杰英 张萍 郭雪梅 著)
第3章 80x86指令系统
习题与参考答案
1、指出下列指令中操作数的寻址方式(8086系统)。
(1) MOV AX,100 (2) MOV AX,[100] (3) MOV DL,[BP+SI]
(4) MOV [BX],CX (5) MOV DX,[SI] (6) MOV 1234H[BX],DS (7) MOV [DI+5678H],AL
(8) MOV 12[BP][DI],BH (9) POP CX
(10)MOV
AX,[BX+SI+10]
解:
2、指出下列指令中操作数的寻址方式(80386系统)。
(1) MOV [EBX+12H],AX (2) MOV [EBP+EDI*2],EBX (3) MOV [EBX*4],BX
(4) MOV EDX,[EAX+ESI*8-12H]
解:
3、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。
(1) PUSH 1234H
(2) MOV CS,AX (3) IN
AX, 300 (4) MOV AX,[DX+12] (5) MOV
BX,[BX]
(6) MOV DS,1000H (7) XCHG AL,AL (8) MOV AL,100H (9) MOV DX,AL (10)LEA BL,[BX+5] (11)LEA DX,BX (12)MOV [1000H],12H
(13)ADD AX,DS (14)SUB [0100H],BYTE PTR [0001] (15)SHL
BL,2
(16)SHR
CL,CL
微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社 (周杰英 张萍 郭雪梅 著)
(17)MUL AL,BL (18)INT 400
解:(1)非法,8086系统不允许PUSH指令的操作数为立即数;
(2)非法,MOV指令中CS不能作为目的操作数; (3)非法,端口号大于0FFH;
(4)非法,DX不能出现在中括号[]内; (5)合法;
(6)非法,不能把立即数赋给段寄存器; (7)合法;
(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;
(9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配; (10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器; (11)非法,LEA指令的源操作数只能是存储器操作数;
(12)非法,指令存在歧义,无法确定传送的是字节还是字; (13)非法,段寄存器不能参与算术运算;
(14)非法,源和目的寄存器不能同为存储器操作数;
(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中; (16)合法;
(17)非法,在8086系统中MUL指令没有双操作数的用法; (18)非法,中断类型号大于0FFH。
4、指出以下指令中,哪些指令是非法的,并说明为什么(80386系统)。
(1) MOV AX,12[EBX][SI*16] (2) RCR EAX,10
(3) PUSH 5678H (5) MOV (7) MOV
解:(1)非法,比例因子只能是1、2、4、8,不能是16;
(2)合法; (3)合法;
(4)非法,POP指令的目的操作数不能是立即数; (5)合法;
(6)非法,ESP只能作为基址寄存器,不能作为变址寄存器;
(7)非法,在386系统中AX不能作为基址寄存器,也不能作为变址寄存器; (8)合法。
5、假设(AX)=1234H,(BX)=5678H,(SP)=1000H,指出执行下面的程序段后,各相关寄存器
及堆栈段中的内容。 PUSH AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=? PUSH POP
BX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=? AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=?
(4) POP (6) MOV
1000H
AL,[ESP+ESP*2]
[EAX+EAX],EAX BL,[AX+12]
(8) IMUL AL,BL,12
解:(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H
(AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节[SP]=78H,栈顶第二字节[SP+1]=56H
微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社 (周杰英 张萍 郭雪梅 著)
(AX)=5678H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H
6、假设A、B、C、D、X、Y为字节变量,AA、BB、YY为字变量,试利用算术运算指令编写
程序段,完成以下各算术运算题。
(1)计算YY←A+B*C,其中A、B、C都是无符号数;
(2)计算(AA+BB)/(C-D),商赋给X,余数赋给Y,其中AA、BB、C、D都是带符号数; (3)计算YY←(A-B)*C,其中A、B、C都是未组合BCD码。 解:
(1)MOV AL,B
MUL ADD ADC
C AL,A AH,0 YY,AX AX,AA AX,BB BL,C BL,D BL X,AL Y,AH AL,A AL,B C
MOV (2)MOV
ADD MOV SUB IDIV MOV MOV
(3)MOV SUB AAS
MUL
AAM
MOV YY, AX
7、利用移位指令编写程序段,实现以下运算。
(1)计算AX←AX*10,其中AX为无符号数;
(2)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位
计算(DX,AX)←(DX,AX)*2。
(3)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位
计算(DX,AX)←(DX,AX)/2。
解: (1)SHL
MOV SHL SHL ADD
AX,1 BX,AX AX,1 AX,1 AX,BX AX,1 DX,1 DX,1 AX,1
(2)SAL RCL (3)SAR
RCR
8、指出以下指令执行后,标志寄存器OF、SF、ZF、AF、PF、CF的状态。
微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社 (周杰英 张萍 郭雪梅 著)
(1)(AL)=0FFH,(BL)=20H,执行指令:ADD AL,BL (2)(AL)=01H, (BL)=02H,执行指令:CMP AL,BL (3)(AL)=0FFH,执行指令:INC AL (4)(AL)=0,执行指令:DEC AL
(5)(AL)=0F0H,(BL)=04H,执行指令:IMUL (6)(AX)=1F0H,(BL)=08H,执行指令:DIV BL (7)(AL)=12H, (BL)=34H,执行指令:TEST (8)(AL)=98H,执行指令:SAL 解:
9、在8086系统下,编写实现如下功能的程序段:
(1)从地址为80H的端口中读入一个字节;
(2)如果该字节最高位为“1”,则将字节0FFH送到地址为81H的端口中,并退出程序; (3)如果该字节最高位为“0”,则转向第(1)步,继续循环扫描。
解: 参考程序段:
AGAIN: IN AL, 80H
TEST AL, 80H
JZ MOV OUT
AGAIN AL, 0FFH 81H, AL AL,1 BL AL,BL
注:0表示结果为0,1表示结果为1,×表示结果不变,—表示结果不确定。
10、我们知道,MOV指令并不能直接修改CS、IP的值,但事实上,我们还可以通过其他方法来达到修改CS、IP的目的。试编写一个程序段,使该程序段运行后,(CS)=0100H,(IP)=0000H。 解:
方法一、利用段间返回指令RETF:
MOV PUSH MOV PUSH RETF
AX,0100H AX AX,0 AX
;段基址入栈 ;偏移量入栈
方法二、利用JMP指令实现段间跳转,假设ADDR为双字变量:
MOV WORD PTR ADDR,0 ;WORD PTR ADDR←偏移量
微机原理、汇编语言与接口技术 第三章 习题答案 人民邮电出版社 (周杰英 张萍 郭雪梅 著)
MOV JMP
WORD PTR ADDR+2, 0100H DWORD PTR ADDR
;WORD PTR ADDR+2←段基址
上一篇:《民航概论》期末考试试卷(A)
下一篇:中国文学史知识点经编