概述
???? 2022.5.12 早八 实验二
实验二 输入输出实验
文章目录
- 前言
- 1.1 实验要求
- 1.2 理论分析
- 1.3 汇编语言
- 1.4 实验结果
前言
????本文章是 【微机原理技术接口】 专栏的文章,主要是实验内容
????微机原理技术接口专栏 传送门
????提示:本文的环境是emu8086仿真系统。
1.1 实验要求
熟悉emu8086仿真系统,实现控制台输入输出,实现两位十进制数猜数字游戏(基本要求:输入两位数和预设值比较,对于输出>小于输出<对于输出=并退出)
1.2 理论分析
输入的两位数分别利用DOS 1号输入功能,高位(第一次输入)暂存到DH,低位(第二次输入)放到AL,利用AAD指令,将AX寄存器中非压缩型BCD码转换成为真正的二进制数,并存放在AL,之后用CMP指令与设定的数值比较,之后利用JE、JA判断大小并跳转。
扩展:如果大于或小于,利用DOS 2号功能输出0A(换行)、0D(回车),实现每次输出都换行。
1.3 汇编语言
????提示:所有实验源码已在Github整理
BGN:
MOV AH,1
INT 21H ;调用DOS 1号输入功能
AND AL,15 ;与运算,将高位清零,假设输入3D=33H,将高位清零
MOV DH,AL ;第一个数暂存到DH
MOV AH,1
INT 21H ;调用DOS 1号输入第二个数
AND AL,15 ;高位清零
MOV AH,DH ;第一个数做为高位给AH,第二个数在AL不变
AAD ;AAD指令 AL=AH*0AH+AL AH=0.实质上是将AX寄存器中非压缩型BCD码转换成为真正的二进制数,并存放在AL寄存器中
CMP AL,N ;若大于CF=0,小于CF=1,等于CF=1.ZF=1
JE JEND ;零标志位ZF=1转移
MOV DL,'>'
JA J1 ;高于或者不低于转移,CF=0
MOV DL,'<'
J1:
MOV AH,2
INT 21H ;调用2号输出>
JMP BGN ;猜的结果大/小,继续返回BGN
JEND:
MOV DL,'='
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H ;调用DOC 4CH中断程序
N DB 35 ;赋初值,猜的数为十进制35
扩展,每次输出都换行
BGN:
MOV AH,1
INT 21H ;调用DOS 1号输入功能
AND AL,15 ;与运算,将高位清零,假设输入3D=33H,将高位清零
MOV DH,AL ;第一个数暂存到DH
MOV AH,1
INT 21H ;调用DOS 1号输入第二个数
AND AL,15 ;高位清零
MOV AH,DH ;第一个数做为高位给AH,第二个数在AL不变
AAD ;AAD指令 AL=AH*0AH+AL AH=0.实质上是将AX寄存器中非压缩型BCD码转换成为真正的二进制数,并存放在AL寄存器中
CMP AL,N ;若大于CF=0,小于CF=1,等于CF=1.ZF=1
JE JEND ;零标志位ZF=1转移
MOV DL,'>'
JA J1 ;高于或者不低于转移,CF=0
MOV DL,'<'
J1:
MOV AH,2
INT 21H ;调用2号输出>
MOV DL,0AH
INT 21H ;调用2号换行
MOV DL,0DH
INT 21H ;调用2号回车
JMP BGN ;猜的结果大/小,继续返回BGN
JEND:
MOV DL,'='
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H ;调用DOC 4CH中断程序
N DB 35 ;赋初值,猜的数为十进制35
1.4 实验结果
不换行单步运行
换行单步运行
思考内容
- 控制符的显示输出
控制字符可以使用DOS 2号功能,如本实验的扩展要求,通过查ASCII表,得到换行和回车的十六进制数,保存到DL中,调用DOS INT 21后输出 - 类似分支功能有哪些不同指令的实现方法
无条件转移JMP,条件转移JC/JNC,条件转移指令JZ/JNZ(判断CF位),JZ/JNZ(判断ZF位),JO/JNO(判断OF位),JP/JPE、JNP/JPO(判断PF位),JS/JNS(判断SF位),JA/JAE/JB/JBE(判断CF或CF+ZF位),JG/JGE/JL/JLE(判断SF+OF或SF+OF+ZF)
最后
以上就是孤独大地为你收集整理的微机原理与技术接口 实验二 输入输出实验的全部内容,希望文章能够帮你解决微机原理与技术接口 实验二 输入输出实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复