
实验四 二进制加、减法编程实验.doc
3页实验四 二进制加、减法编程实验(设计性实验)一、实验要求和目的1.熟悉汇编语言二进制多字节加法基本指令的使用方法;2.熟悉汇编语言二进制多字节减法基本指令的使用方法;3.掌握汇编语言编程的一般结构二、软硬件环境1.硬件环境:微机 CPU 486 以上,500MB 以上硬盘,32M 以上内存;2.软件环境:装有 MASM 5.0、DEBUG、LINK 和 EDIT 等应用程序三、实验涉及的主要知识单元1、二进制加法基本指令(1)ADD 指令格式:ADD DST,SRC该指令把源操作数(SRC)指向的数据与目的操作数( DST)相加后,将结果放到目的操作数(DST )中,所执行的操作:(DST)(SRC)+(DST)SRC 和 DST 不能同时为存储器操作数和段寄存器,同时 SRC 和 DST 的数据类型要匹配,要同是字节或字受影响的标志位有:OF,SF,ZF,AF,PF,CF 2)ADC 指令格式:ADC DST,SRC所执行的操作:(DST)(SRC)+(DST)+CF 了解清楚进位是怎样加的该指令把两个操作数(SRC 和 DST)相加以后,再加上进位标志 CF,将结果放到目的操作数(DST )中。
受影响的标志位有:OF,SF,ZF,AF, PF,CF ADC 指令多用于多精度数据相加2、二进制减法基本指令(1)SUB 指令格式:SUB DST,SRC所执行的操作:(DST) (DST)-(SRC)该指令把源操作数(SRC)指向的数据与目的操作数( DST)相减后,将结果放到目的操作数(DST)中,SRC 和 DST 不能同时为存储器操作数和段寄存器(,同时 SRC 和DST 的数据类型要匹配,要同是字节或字受影响的标志位有:OF, SF,ZF , AF,PF,CF 2)SBB 指令格式:ADC DST,SRC(DST) (DST)-(SRC) -CF 了解清楚进位是怎样减的该指令把两个操作数(SRC 和 DST)相减以后,再减去 CF,将结果放到目的操作数(DST)中受影响的标志位有:OF,SF,ZF,AF,PF ,CF SBB 指令多用于多精度数据相加3、多精度数相加程序设计示例将两个双字长度的数分别相加并将结果存放在 result 中首先进行题目分析:(1)如何存放多精度数?多精度数的存放有两种方式,高地址优先(如 1234H,5678H 表示 56781234H)和低地址优先(如 1234H,5678H 表示 12345678H) ,具体的存放方式由用户根据自己的习惯选择。
在这里虑我们使用了高地址优先的存储方式2)分析程序设计由于汇编语言的 ADD,ADC,SUB,SBB 指令都不支持两个操作数都是存储器操作数的情况,因此将一个操作数的低字放到寄存器 AX 中,高字放到寄存器 DX 中分别完成高字部分的加法,高字部分的带进位加法3)具体程序设计:实现 DATA1+DATA2 放在 RESULT 中数据段定义如下,完成代码段DATA SEGMENTDATA1 DW 5311H,8A13H ;表示数据 8A135311HDATA2 DW 4783H,9526H ;表示数据 95264783HRESULT DW 2 DUP(?) ; 存放多字节加法的结果DATA ENDS四、实验内容与步骤1、实验内容(1)编写程序,实现长度为 2 字的两个多精度数相减2)编写程序,实现一个长度为 3 字的多精度数和一个长度为 2 字的多精度数相加减2、实验步骤(1)预习多精度数加减法基本知识,根据实验内容,画出流程图;(2)利用 EDIT 或其他编辑软件,编写汇编源程序,取名为 “ch2ex1.ASM”、“ch2ex2.ASM”3)汇编、连接该源程序,产生“ch2ex1.EXE” 、 “ch2ex2.EXE”文件;(4)对“ch2ex1.EXE”和“ch2ex2.EXE”文件进行调试运行:利用 DEBUG 的 T 命令或G 命令和 D 命令查看数据区的加减法结果是否正确。
五、实验要求与提示1、 实验要求(1)画出各程序流程图;(2)列出程序清单,加上适量注释;(3)回答思考问题;(4)记录实验结果六、思考与练习以及测评标准在例子中没有考虑最高位溢出的问题,若考虑到最高位可能发生溢出,该如何修改程序。
