8086型微机实验:二进制双字加减法子程序

需积分: 2 1 下载量 176 浏览量 更新于2024-07-25 收藏 112KB DOC 举报
本文档主要介绍了在微机实验环境下使用8086/Pentium架构的汇编语言进行基础算术操作,即二进制双字的加法和减法子程序设计。8086是早期的x86微处理器系列,而Pentium则是它的后续型号,这些指令集在当时的计算机科学教育中被广泛使用。 首先,我们看到的是减法子程序。该程序的目标是实现R0R1减去R2R3的结果存入R4R5。程序的步骤如下: 1. 定义堆栈段(STACKSEGMENT),用于存储临时数据。 2. 数据段(DATASEGMENT)定义了变量R0到R7,每个都是双字(DW)类型,用于存储操作数。 3. 代码段(NDWSUBSEGMENT)中的`MAINPROCFAR`是程序的入口点,它使用`ASSUME`指令设置程序的段寄存器,如CS(代码段)、DS(数据段)和SS(堆栈段)。 4. 在`START`标号处,首先保存当前的数据段(PUSHDS),然后将AX寄存器置零,作为指令的起始点。 5. 将数据段地址加载到AX,并将其设置为当前的数据段(MOVAX,DATA)。 6. 对R1和R3执行减法操作(SUB AX, R3),结果保存在R5。 7. 同理,对R0和R2执行带借位的减法(SBB AX, R2),结果保存在R4。 8. 最后,通过`RET`指令返回到调用此子程序的地方。 接下来是二进制双字加法子程序,其目的是将R0R1与R2R3相加并结果存入R4R5。这个过程的实现逻辑与减法程序类似,只是将`SUB`指令替换为`ADD`,并将最终结果保存在不同的寄存器中。 总结来说,这两个子程序展示了如何在汇编语言中进行基本的二进制计算,这对于理解计算机底层工作原理,特别是指令集架构和内存管理至关重要。在微机实验中,这类练习有助于培养学生的编程技能和对硬件的理解,特别是在处理和操作二进制数据时。同时,这也体现了早期计算机硬件和软件开发的基本实践,对于学习现代的高级编程技术有着历史价值。