二进制加、减法编程实验

上机实验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字的两个数据相加的。改变DATA1DATA2的值再单步运行,观察程序运行的过程以及对标志位的影响。理解该程序后,试绘制出该程序对应的流程图,并完成下面的内容。

四、实验内容与步骤

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)记录实验结果。

 

 

六、作业提交

把绘制的流程图、编写的源代码(两个:(1)实现长度为2字的两个多精度数相减;

(2)实现一个长度为3字的多精度数和一个长度为2字的多精度数相加减)放在word文档里,并提交到教育在线系统。

 

 

猜你喜欢

转载自blog.csdn.net/xu_benjamin/article/details/82807322