概述
上机实验03 二进制加、减法编程实验
一、实验要求和目的
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指令
格式:SBB 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)具体程序设计
DATA SEGMENT
DATA1 DW 5311H,8A13H ;表示数据8A135311H
DATA2 DW 4783H,9526H ;表示数据95264783H
RESULT DW 2 DUP(?) ;存放多字节加法的结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DATA1
MOV DX,DATA1+2
ADD AX,DATA2 ;低字部分相加
ADC DX,DATA2+2 ;高字部分带进位相加
MOV RESULT,AX ;存放低字部分相加结果
MOV RESULT+2,DX ;存放高字部分相加结果
CODE ENDS
END START单步运行调试上面的程序,理解上面程序是如何实现长度为2字的两个数据相加的。改变DATA1、DATA2的值再单步运行,观察程序运行的过程以及对标志位的影响。理解该程序后,试绘制出该程序对应的流程图,并完成下面的内容。
四、实验内容与步骤
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)画出各程序流程图;
(2)列出程序清单,加上适量注释;
(3)回答思考问题;
(4)记录实验结果。
六、作业提交
把绘制的流程图、编写的源代码(两个:(1)实现长度为2字的两个多精度数相减;
(2)实现一个长度为3字的多精度数和一个长度为2字的多精度数相加减)放在word文档里,并提交到教育在线系统。
最后
以上就是典雅茉莉为你收集整理的二进制加、减法编程实验的全部内容,希望文章能够帮你解决二进制加、减法编程实验所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复