教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高中教育 >

80X86汇编语言程序设计教程(杨季文)课后习题答案(2)

来源:网络收集 时间:2026-09-17
导读: 1、现场和返回地址的保护; MOV AX, OFFSET ADDRESS PUSH AX JMP XXX ... RET 2、寄存器内容的保护; PUSH AX PUSH BX ... POP BX POP AX 3、传递参数; PUSH [BX] CALL XXX ... XXX: POP AX ... 4、存储局部变量;

1、现场和返回地址的保护;

MOV AX, OFFSET ADDRESS

PUSH AX

JMP XXX

...

RET

2、寄存器内容的保护;

PUSH AX

PUSH BX

...

POP BX

POP AX

3、传递参数;

PUSH [BX]

CALL XXX

...

XXX:

POP AX

...

4、存储局部变量;

PUSH DS

PUSH CS

POP DS

...

POP DS

题2.29 在本章介绍的8086/8088指令中,哪些指令把寄存器SP作为指针使用?8086/8088指令集中,哪些指令把寄存器SP作为指针使用?

答: 以下指令把寄存器SP作为指针使用:

1、PUSH

2、POP

80X86汇编语言程序设计教程(杨季文)课后习题答案

3、PUSHF

4、POPF

5、PUSHA

6、POPA

7、RET

8、CALL

9、RETF

题2.30 请说说标志CF的用途。请至少给出使标志CF清0的三种方法。

答: CF的用途主要有:

1、配合条件转移语句进行条件转移;

2、配合移位指令实现操作数之间的位转移;

3、常作为子程序的出口参数;如DOS磁盘文件管理功能调用等;

CF清0的方法:

法一:

CLC

法二:

ADD AX,0FFFFH

法三:

CMP AX,0

题2.31 请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF的状态。

MOV AL,89H

ADD AL,AL

ADD AL,9DH

CMP AL,0BCH

SUB AL,AL

DEC AL

INC AL

答:

INSTRUCTION CF ZF SF OF PF AF

MOV AL,89H 0 0 0 0 0 0

ADD AL,AL 1 0 0 1 1 1

80X86汇编语言程序设计教程(杨季文)课后习题答案

ADD AL,9DH 0 0 1 0 1 0

CMP AL,0BCH 1 0 1 0 1 0

SUB AL,AL 0 1 0 0 1 0

DEC AL 0 0 1 0 1 1

INC AL 0 1 0 0 1 1

题2.32 什么是除法溢出?如何解决16位被除数8位除数可能产生的溢出?

答: 除法溢出是指除数如果是0,或者在8位除数时商超过8位,或者在16位除时商超过16位,则认为是除法溢出,引起0中断;

首先要确定8位除数不能为0,其次要确定商的最大值不能超过8位,如果超过8位,则可 采用16位的除法;

题2.33 请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、PF的状态: MOV AL,45H

AND AL,0FH

OR AL,0C3H

XOR AL,AL

答: INSTRUCTION ZF SF PF

MOV AL,45H 0 0 0

AND AL,0FH 0 0 1

OR AL,0C3H 0 1 0

XOR AL,AL 1 0 1

题2.34 “MOV AX,0”可寄存器AX清0。另外再写出三条可使寄存器AX清0的指令。 答: 法一:

XOR AX,AX

法二:

AND AX,0

法三:

SUB AX,AX

题2.35 请写出如下程序片段中每条移位指令执行后标志CF、ZF、SF和PF的状态。 MOV AL,84H

SAR AL,1

SHR AL,1

80X86汇编语言程序设计教程(杨季文)课后习题答案

RCL AL,1

SHL AL,1

ROL AL,1

答:

INSTRUCTION CF ZF SF PF

MOV AL,84H 0 0 0 0

SAR AL,1 0 0 1 0

SHR AL,1 0 0 0 0

ROR AL,1 1 0 0 0 (该命令不影响SF位)

RCL AL,1 1 0 0 0

SHL AL,1 0 0 1 0

ROL AL,1 1 0 1 0

题2.36 8086/8088中,哪些指令把寄存器CX作为计数器使用?哪些指令把寄存器BX作为基指针寄存器使用?

答: 8086/8088中,以下指令把寄存器CX作为计数器使用:

1、LOOP

2、LOOPE

3、LOOPZ

4、LOOPNZ

5、LOOPNE

6、JCXZ

以下指令把寄存器BX作为基指针寄存器使用:

1、MOV

2、XCHG

3、LEA

4、LDS

5、LES

6、ADD

...

题2.37 请不用条件转移指令JG、JGE、JL和JLE等指令实现如下程序片段的功能: CMP AL,BL

JGE OK

80X86汇编语言程序设计教程(杨季文)课后习题答案

OK: ......

答: 如下命令可实现同样功能:

PUSH CX ;Reserve CX

XOR CX,CX ;CX=0

MOV CH,02H ;CH=02H

MOV CL,AL ;CL=AL

MOV BH,0H ;BH=0

SUB CX,BX ;If CH=2, AL>=BL; If CH=1, AL<BL

SHR CX,8 ;CX=2 or 1

LOOP OK ;If CX=2 jmp to OK; If CX=1 Exchange AL,BL

XCHG AL,BL

OK:

POP CX ;Revert CX

......

题2.38 段间转移和段内转移的本质区别是什么?8086/8088哪些指令可实现段间转移? 答: 段间转移和段内转移的本质区别是有没有对CS进行设置,如果设置了新的CS代码寄存器,程序将转移到另一个段中,即实现了段间转移;否则CS和原来一致,则在同一代码段中继续进行,只是IP指针进行了调整,即为段内转移;

8086/8088中如下指令可以实现段间转移:

1.JMP FAR PTR LEAEL

2.JMP OPRD

3.CALL

4.RET/RETF

题2.39 8086/8088的条件转移指令的转移范围有多大?如何实现超出范围的条件转移? 答: 8086/8088的条件转移指令的转移范围只能从-126到+129之间,如果出现超出 范围的条件转移,要借助无条件转移命令JMP;

题2.40 相对转移和绝对转移的区别是什么?相对转移的有何优点?

答: 相对转移和绝对转移的区别是相对转移记录了目标地址与当前地址的差值,而绝对转移在转移命令中直接包含了目标地址;

相对转移有利于程序的浮动,比如说增加了命令语句等;

80X86汇编语言程序设计教程(杨季文)课后习题答案

题2.41 请指出下列指令的错误所在:

MOV CX,DL

XCHG [SI],3

POP CS

MOV IP,AX

SUB [SI],[DI]

PUSH DH

OR BL,DX

AND AX,DS

MUL 16

AND 7FFFH,AX

DIV 256

ROL CX,BL

MOV ES,1234H

MOV CS,AX

SUB DL,CF

ADC AX,AL

MOV AL,300

JDXZ NEXT

答: MOV CX,DL

XCHG [SI],3

POP CS

MOV IP,AX

SUB [SI],[DI]

PUSH DH

OR BL,DX

AND AX,DS

MUL 16

AND 7FFFH,AX

DIV 256

ROL CX,BL

MOV ES,1234H

MOV CS,AX

SUB DL,CF

ADC AX,AL

MOV AL,300 POP指令的对象不能是CS,PUSH可以 IP不能是源也不能是目的 PUSH和POP只能处理16位的操作 …… 此处隐藏:2646字,全部文档内容请下载后查看。喜欢就下载吧 ……

80X86汇编语言程序设计教程(杨季文)课后习题答案(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/132329.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)