计算机原理习题答案03

2026/1/18 4:59:08

第三章 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]

解: 目的操作数 源操作数 (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] 解:

目的操作数 源操作数 (1)寄存器相对寻址 寄存器寻址 (2)基址比例变址寻址 寄存器寻址 (3)比例变址寻址 寄存器寻址 (4)寄存器寻址 相对基址比例变址寻址

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

1

(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] (3) PUSH 5678H

(5) MOV [EAX+EAX],EAX (7) MOV BL,[AX+12]

(2) RCR EAX,10 (4) POP 1000H

(6) MOV AL,[ESP+ESP*2] (8) IMUL AL,BL,12

解:(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 PUSH POP

AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=? BX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=? AX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节[SP]=?, 栈顶第二字节[SP+1]=?

解:(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H (AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节[SP]=78H,栈顶第二字节[SP+1]=56H

2

(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 C ADD AL,A ADC AH,0 MOV YY,AX (2)MOV AX,AA ADD AX,BB MOV BL,C SUB BL,D IDIV BL MOV X,AL MOV Y,AH (3)MOV AL,A SUB AL,B AAS

MUL C

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 (2)SAL RCL (3)SAR

RCR

AX,1 BX,AX AX,1 AX,1 AX,BX AX,1 DX,1 DX,1 AX,1

8、指出以下指令执行后,标志寄存器OF、SF、ZF、AF、PF、CF的状态。

3

(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 解:

(1) (2) (3) (4) (5) (6) (7) (8)

9、在8086系统下,编写实现如下功能的程序段: (1)从地址为80H的端口中读入一个字节;

(2)如果该字节最高位为“1”,则将字节0FFH送到地址为81H的端口中,并退出程序; (3)如果该字节最高位为“0”,则转向第(1)步,继续循环扫描。

解: 参考程序段: AGAIN: IN

TEST JZ MOV OUT

OF 0 0 0 0 0 — 0 1 SF 0 1 0 1 — — 0 0 AL,1 ZF 0 0 1 0 — — 0 0 AF 0 1 1 1 — — — — PF 0 1 1 1 — — 0 1 CF 1 1 × × BL AL,BL

0 — 0 1 注:0表示结果为0,1表示结果为1,×表示结果不变,—表示结果不确定。

AL, 80H AL, 80H AGAIN AL, 0FFH 81H, AL

10、我们知道,MOV指令并不能直接修改CS、IP的值,但事实上,我们还可以通过其他方

法来达到修改CS、IP的目的。试编写一个程序段,使该程序段运行后,(CS)=0100H,(IP)=0000H。 解:

方法一、利用段间返回指令RETF:

MOV AX,0100H

PUSH AX ;段基址入栈 MOV AX,0

PUSH AX ;偏移量入栈 RETF

方法二、利用JMP指令实现段间跳转,假设ADDR为双字变量:

MOV WORD PTR ADDR,0 ;WORD PTR ADDR←偏移量

4

MOV JMP WORD PTR ADDR+2, 0100H DWORD PTR ADDR

;WORD PTR ADDR+2←段基址

5


计算机原理习题答案03.doc 将本文的Word文档下载到电脑
搜索更多关于: 计算机原理习题答案03 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219