
emu8086仿真系统中的输入输出与十进制加法实现
下载需积分: 9 | 41KB |
更新于2024-09-09
| 52 浏览量 | 举报
收藏
"输入输出实验"
本实验主要目的是让学生熟悉emu8086仿真系统,并掌握在该环境下实现控制台输入输出的基本操作。实验的核心任务是设计并单步调试一个简单的程序,实现一位十进制数的加法运算,具体表现为在屏幕上显示"3+2=5"的过程,其中"3"和"2"由用户输入,"="和"5"由程序自动输出。
在8086微处理器中,与输入输出相关的功能通常通过中断服务来实现。在这个实验中,使用了INT 21H中断,它是MS-DOS提供的BIOS服务之一,用于处理键盘输入和屏幕输出。例如,当AH寄存器设置为1时,调用INT 21H可以读取键盘输入;而当AH设置为2时,可以将DX寄存器中的ASCII码送到屏幕输出。
实验的流程大致如下:
1. **获取第一个输入数字**:通过将AH设置为1,调用INT 21H中断读取键盘输入。输入的ASCII码会存储在AL寄存器中,然后通过SBB指令减去ASCII码30H('0'的ASCII码),得到十进制数的BCD形式,并将其存入BL寄存器。
2. **显示加号**:将ASCII码43H('+'的ASCII码)放入DX寄存器,AH设为2,调用INT 21H中断在屏幕上显示加号。
3. **获取第二个输入数字**:重复步骤1,但这次结果存入CL寄存器。
4. **执行加法运算**:使用ADD指令将BL和CL中的两个BCD数相加,结果存回BL。由于BCD数的特殊性,可能需要使用DAA指令进行调整,确保结果依然保持在BCD格式。
5. **显示等于号**:将ASCII码61H('='的ASCII码)放入DX寄存器,显示等于号。
6. **显示结果**:将加法运算后的结果转换为ASCII码并显示。这需要将结果拆分为高位和低位,分别进行处理。高位通过左移4位并加上30H得到对应的ASCII码,低位通过与0FH(二进制1111)进行按位与运算,再加30H得到ASCII码。
7. 最后,再次调用INT 21H中断,将结果的ASCII码发送到屏幕上,完成整个运算过程的显示。
这个实验不仅强化了对emu8086仿真环境的理解,也提供了实际编写和调试汇编语言程序的经验,有助于提升学生的编程技能和逻辑思维能力。同时,通过亲手操作,学生能够更深入地理解CPU与外部设备之间的交互方式,以及如何利用中断服务进行输入输出操作。
相关推荐





HelloCWen
- 粉丝: 27
最新资源
- 学习vc++串口通信,掌握《Visual C++/Turbo C串口通信编程实践》源代码精髓
- Matlab实现最大后验概率算法详解
- 地方青年旅行社程序开发指南
- SSH学生管理系统:初学者指南与自定义功能实践
- 迅雷软件笔试精选题目解析:C/C++考点全覆盖
- LDAP协议系列标准rfc 2251-2254中文版解读
- Visual C++计算器源代码错误分析与修正
- 软件开发项目全系列文档管理与指南
- 项目开发需求分析的关键步骤与指南
- C#入门与提高教程:全面掌握.NET编程
- ANOVA分析入门:实验数据分析技术指南
- Powerbuilder9.0实现获取本地IP地址与主机名方法分享
- 轻松商城:基于JSP的高效率电子商务解决方案
- ASP.NET 成绩管理系统设计与实现
- 空调营销与智软冶金行业项目方案书设计模板
- C#语言创建IIS网站的完整源代码
- MFC界面编程实例教程:创建位图按钮
- HTMLParser.jar在中文网页解析中的应用及文档
- C#多线程编程深度指南与实践手册
- 深入理解VSS6.0d及其在ASP.NET中的应用教程
- 利用JSP+Servlet+Ajax实现Yahoo和Google动态搜索框
- 浙江大学概率论与数理统计习题解析
- ASP.NET+C#实现的DayPilotMonthPicker日程控件源码分析
- C语言实现工程实用算法详解