您所在位置: 网站首页 / 西安交大微机实验报告二.docx / 文档详情
西安交大微机实验报告二.docx 立即下载
2024-10-24
约1.9千字
约5页
0
378KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

西安交大微机实验报告二.docx

西安交大微机实验报告二.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验二分支程序的设计

实验目的
学习提示信息的显示及键盘输入字符的方法。
掌握分支程序的设计方法。
实验内容
在提示信息下,从键盘输入原码表示的二位十六进制有符号数。当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。
程序代码
CRLF	MACRO
MOV	AH,02H
MOV	DL,0DH
INT	21H
MOV	AH,02H
MOV	DL,0AH
INT	21H
ENDM
DATA	SEGMENT
MESS1	DB'INPUTDATA:',0DH,0AH,'$'
MESS2	DB'THISDATAIS+',0DH,0AH,'$'
MESS3	DB'THISDATAIS-',0DH,0AH,'$'
MESS4	DB'THISDATAISZERO',0DH,0AH,'$'
DATABUF	DB3
ACTLEN	DB?
STRING	DB3DUP(?)
DATA	ENDS
SSEG	SEGMENT	PARASTACK'STACK'
DB	50DUP(0)
SSEG	ENDS
CODE	SEGMENT
ASSUME	CS:CODE,SS:SSEG,DS:DATA
START:
	MOV	AX,DATA
	MOV	DS,AX
	MOV	AX,SSEG
	MOV	SS,AX
	MOV	DX,OFFSETMESS1
	MOV	AH,09H
	INT	21H
	MOV	AH,0AH
	MOV	DX,OFFSETDATABUF
	INT	21H
	CRLF
	MOV	AL,STRING
	CMP	AL,38H
	JAE	NEGATIVE
	CMP	AL,30H
	JNZ	POSITIVE
	MOV	AL,STRING[1]
	CMP	AL,30H
	JNZ	POSITIVE
	MOV	DX,OFFSETMESS4
	MOV	AH,09H
	INT	21H
	JMP	RR
NEGATIVE:
	MOV	DX,OFFSETMESS3
	MOV	AH,09H
	INT	21H
	JMP	RR
POSITIVE:
	MOV	DX,OFFSETMESS2
	MOV	AH,09H
	INT	21H
	JMP	RR
RR:
	MOV	AX,4C00H
	INT	21H
CODE	ENDS
END	START
调试过程
将代码编译链接成EXE文件,然后进入DEBUG进行调试。
利用U指令反汇编程序,结果如下图:

	观察代码段地址范围,在信息提示输入的地方设置断点,即标号18的地方,运行程序,结果如下图:

	输入45,经过反汇编,第一条分支结束后的代码段标号是2B,所以把第二个断点设在2B处,运行程序,结果如下图,可以看到在此处分支选择判断正确,不进入NEGATIVE分支。继续在第二个分支结束的时候设置断点以查看分支选择是否正确,断点设在2F处,运行程序,结果如下图,可以看到程序进入第二个分支选择,因为45是正数,高位不为零。程序运行结果显示“THISDATAIS+”,结果正确。


下面将指令IP修改为0000,继续调试。
标号18的地方设断点,输入40,标号2B的地方设断点,运行程序,结果如下图:

由结果可以看出,分支选择判断正确,在32的地方设断点,运行程序查看,输出结果正确。
继续调试,输入90,在2B的地方设断点,直接进入第一个选择分支“NEGATIVE”,结果显示“THISDATAIS-”,正确,如下图所示。

继续调试,输入00,依次在18、2B、32、36、3D五个地方设断点,查看程序运行情况,结果如下图:



由结果可以看到,程序在每个分支选择处都判断正确,并最终输出正确显示:THISDATAISZERO。
习题回答
1.在DEBUG跟踪某条分支的时候,断点应该下在什么位置?如何查看标志位的变化情况?
答:断点应该下在分支结束后第一条指令前以查看每次分支选择是否正确。
用DEBUG命令中的-R命令可以查看标志位的情况。
2.从键盘输入的数字在键盘缓冲区是怎样分布的?用图简单地示意,用哪几条相关的DEBUG命令查看?
答:输入的数字以ASCII码形式存在键盘缓冲区,先输入的在低位地址。
在程序执行到输入字符以后设置断点,用DEBUG命令中的D0000命令查看DS段可以看到数据情况。
例如:

3.若输入的是非法字符而不是十六进制数,此程序会得到什么结果?如何改进?
答:若输入非法字符,显示结果不确定,可能为正,也可能为负。
例如:


改进方法:在本程序前加入一个分支,判断输入的数是否在十六进制数的范围,若在所限定范围之外输出提示“ERROR”,若在范围内再继续向下运行程序。
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

西安交大微机实验报告二

文档大小:378KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用