分支程序实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩:计算机原理实验室实验报告
课程:汇编语言与微机原理
姓名:
专业:网络工程
学号:
日期:2016年12月
太原工业学院
计算机工程系
实验二:分支程序实验
实验环境PC机+Win 2003+emu8086 实验日期2016.11 一.实验内容
1.实现两位十进制数猜数字游戏。基本要求:从键盘输入两位数和程序中预设数值比较,当输入数据大于预设数值时,屏幕输出‘>’;当输入数据小于预设数值时,屏幕输出‘<’;当输入数据等于预设数值时输出‘=’并退出。
2.在实现上述基本功能的基础上,注意显示输出时的格式控制,实现每次输出都换行。
3.扩展实现:当输入数据大于预设数值两倍以上时,显示输出远大于‘>>’;当输入数据比预设数值的二分之一还小时,显示输出远小于‘<<’。
二.理论分析或算法分析
基础要求,在初始时,假设要猜的数位50,程序运行时将其转换为BCD传给CX,然后通过中断输入第一个数,假设为(11),然后将其与50进行比较,会有三种分支(大于,等于,小于),然后通过转移指令输出(>,<,=),然后再跳到程序开始端继续输入,继续判断跳到哪个分支,知道输入的数等于要猜的数50,程序结束
拓展要求,只需在原基础上进行修改,判断,当输入的数小于初始数的1/2或大于初始数的2倍,则显示<<或>>
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)基础要求
org 100h
jlp:
mov AX, Num
aad
mov cx, ax
mov AH, 1
int 21h
mov BH, al
int 21h
mov BL, al
and bx, 0f0fH
mov ax, bx
aad
mov bx, ax
cmp bx, cx
jz jequ
ja jbig
mov dl, '<'
mov ah, 2
int 21h
jmp jp1
jbig:
mov dl, '>'
mov ah, 2
int 21h
jmp jp1
jp1:
mov dl, 13
int 21h
mov dl, 10
int 21h
jmp jlp
jequ:
mov dl, '='
mov ah, 2
int 21h
jmp $
Num dw 0500h ret
拓展要求
org 100h
jlp:
mov AX, Num aad
mov cx, ax
mov AH, 1
int 21h
mov BH, al
int 21h
mov BL, al
and bx, 0f0fH mov ax, bx
aad
mov bx, ax
cmp bx, cx
jz jequ
ja jbig
mov dl, '<'
mov ah, 2
int 21h
shl bx,1
cmp bx,cx
jae jp1
mov ah,2
int 21h
jmp jp1
jbig:
mov dl, '>'
mov ah, 2
int 21h
shr bx,1
cmp bx,cx
jbe jp1
int 21h
jmp jp1
jp1:
mov dl, 13
int 21h
mov dl, 10
int 21h
jmp jlp
jequ:
mov dl, '='
mov ah, 2
int 21h
jmp $
Num dw 0305h
ret
四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)基础要求
拓展要求
五.结论
通过本次实验,是我对分支程序有了更多的了解与认识,以及对部分中断和转移类指令有
了更深的理解,之前一直困扰的关于BCD码修正和比较大小也得到了解决,总之实验收获颇多!