emu8086仿真系统中的输入输出与十进制加法实现

需积分: 9 2 下载量 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与外部设备之间的交互方式,以及如何利用中断服务进行输入输出操作。