emu8086仿真系统中的输入输出与十进制加法实现
需积分: 9 139 浏览量
更新于2024-09-09
收藏 41KB DOC 举报
"输入输出实验"
本实验主要目的是让学生熟悉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与外部设备之间的交互方式,以及如何利用中断服务进行输入输出操作。
2012-12-29 上传
2021-10-02 上传
2021-12-07 上传
2016-04-10 上传
2024-09-03 上传
2023-06-01 上传
2010-05-12 上传
2021-10-02 上传
HelloCWen
- 粉丝: 27
- 资源: 12
最新资源
- LoadRunnerUserManual
- Linux常用指令20条
- opencms教程2---安装opencms7
- opencms教程3---工作区
- 文献检索和阅读方法_科研
- Thinking in JAVA
- 如何做到从午夜开始,每隔 1.5 小时保存一次 WinCC 过程值
- 从0到c (linux c编程入门教程)
- 基于zigbee的火灾报警系统设计
- DBExpress+dbxopenmysql50.dll说明
- AJAX学习帮助文档
- 编程新手真言 DOC版
- Building Powerful and Robust Websites with Drupal 6.pdf
- blazeds_dev_guide
- makefile学习资料.pdf
- 有关CMMI3级资料,欢迎同仁下载