《微机原理、汇编语言与接口技术》韩晓茹(习题解答全套 联系客服

发布时间 : 星期三 文章《微机原理、汇编语言与接口技术》韩晓茹(习题解答全套更新完毕开始阅读88c1ddd478563c1ec5da50e2524de518974bd309

最新精品文档,知识共享!

解:(1)ADD AL, BL

DAA

ADC AL, BH DAA

XCHG AL, AH SUB DAS

MOV DL, AL MOV AL, DH SBB DAS

MOV DH, AL

2.16 简述指令的“DAA”和“DAS”对BCD码运算后进行调整的规则。 解:DAA的调整规则:

if (AL低4位>9 或 AF=1)then AL=AL+06H ; AF=1 ; endif

if (AL高4位>9 或 CF=1)then AL=AL+60H ; CF=1 ; endif

DAS的调整规则:

if (AL低4位>9 或 AF=1)then AL=AL-06H ; AF=1 ; endif

if (AL高4位>9 或 CF=1)then AL=AL-60H ; CF=1 ; Endif

AL, CH AL, CL

XCHG AL, AH

(2)MOV AL,DL

最新精品文档,知识共享!

2.17 用程序段实现对存入在BX,AX的双字进行左移5位。 解:

2.18 试分析下列程序完成什么功能?

MOV SHL MOV SHL SHR OR

CL,4 DX,CL BL,AH AX,CL BL,CL DL,BL

SHL RCL SHL RCL SHL RCL SHL RCL SHL RCL

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

解:把32位二进制代码(DX, AX)联合左移4位。

2.19 已知程序段如下:

MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX

试问:(1)每条指令执行后,AX寄存器的内容是什么? (2)每条指令执行后,CF,SF及ZF的值分别是什么? (3)程序运行结束时,AX及DX寄存器的值为多少? 解:

MOV MOV ROL DEC

AX,1234H CL,4 AX,CL AX

;AX内容为1234H,CF、SF、ZF的值保留初值 ;AX内容为1234H,CF、SF、ZF同上 ;AX内容为2341H,CF=1、SF=0、ZF=0 ;AX内容为2340H,CF=1、SF=0、ZF=0

最新精品文档,知识共享!

MOV MUL

CX,4 CX

;AX内容为2340H,CF=1、SF=0、ZF=0 ;AX内容为8D00H,CF=0、SF=0、ZF=0

2.20 程序中的“转移”是个什么概念?CPU执行转移指令是如何实现转移的? 解:程序中的“转移”是指改变程序的顺序执行过程,某条指令执行完后,不是紧接着执行该指令后面的指令,而是执行其它的指令。CPU是通过改变CS和IP指令指针的值来实现转移的。

2.21 设(DS)=2000H,(BX)=0030H,(SI)=0202H,(20232H)=00H,(200233H)=06H,

分别执行下述两条指令后,实际转移的目标地址物理地址多少? (1)JMP (2)JMP

BX

Word PTR[BX+SI]

解:(1)目的地址为0030H

(2)转移的目标地址为:由[BX+SI]寻址得存储单元的地址为20232H,目的地址为0600H。

2.22 编写指令序列,实现下述要求

(1) 使AX寄存器的低 4 位清零,其余位不变。 (2) 使BX寄存器的低4 位置1,其余位不变。

(3) 测试 BX中的位0 和位4,当这两位同时为零时,将AL置1,否则AL置0。 解:(1)AND AX, 0FFF0H

(2)OR

JZ

AX, 000FH NEXT

;ZF=1,表明这两位同时为0,转走将AL置1 ;ZF=0,表明这两位不同时为0,将AL清0

(3)TEST AX, 0011H

MOV AL,0 JMP EXIT

NEXT: MOV AL,1 EXIT:

2.23 下面程序段在什么情况下执行结果是(AH)=0?

BEGIN: IN AL, 60H

TEST AL, 80H JZ BRCH1 XOR AX, AX JMP STOP

最新精品文档,知识共享!

BRCH1: MOV AH, 0FFH STOP: ……

解:从60H端口读到是数据最高位为1时,使(AH)为0;数据最高位为0时,使(AH)为0FFH。

2.24 “CALL”指令与“JMP”指令相同之处是什么?不同之处是什么?

解:相同之处:“CALL”指令和“JMP”指令都能实现程序的控制转移,改变程序顺序指令的过程。

不同之处:“CALL”指令执行时,使程序转移到子程序中执行,执行完子程序后,还是会回到调用程序,继续执行紧跟在“CALL”指令之后的那条指令。但“JMP”指令执行完后一般不会去执行紧跟在“JMP”指令之后的那条指令。

2.25 叙述8086/8088CPU执行指令“CALL DWORD PTR[100H]”的步骤。

2.26 设下列程序执行前,栈顶指针SS:SP为1000H:0220H,试求:

POP CX POP BX POP AX RET 4

(1) 画出该程序执行后的堆栈存储情况示意图。 解:使堆栈指针加10,上面的5个字的内容出栈,图略。 (2) 给出当前栈顶SS和SP的值。

(SS)=1000H, (SP)=022AH

2.27 一双字长的带符号数放在X和X+2中(X为变量),试编写一程序对这个数求其绝

对值。 解:

TEST [X+2], 8000H ;测试最高位,判断正负,负数好取绝对值 JZ MOV MOV NOT NOT ADD ADC

DONE AX, X DX, [X+2] AX DX AX, 1 DX, 0