您的当前位置:首页正文

汇编实验二 算术运算类操作实验(基础与设计)

来源:好兔宠物网


汇编语言实验报告

实验二 算术运算类操作实验(基础与设计)

班级: 姓名: 学号: 实验日期:

汇编语言实验报告 班级: 姓名: 学

号:

实验二 算术运算类操作实验(基础与设计)

一、实验要求和目的

1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握BCD 码调整指令的使用方法

二、软硬件环境

1、硬件环境:计算机系统 windows;

2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识

本实验主要进行算术运算程序设计和调试,涉及到的知识点包括: 1.加减法处理指令

主要有加法指令 ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。 2.乘除法指令和符号位扩展指令

主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。 3.BCD 码的调整指令

主要有非压缩的 BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。

8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令, 可对表 1 所示的数据类型进行数据运算。 数制 带符号 运算符 操作数 无符号 组合 +、- 非组合 +、-、×、÷ +、-、×、÷ 字节、字、多精度 二进制 BCD码 字节(二位数字) 字节(一位数字) 表 1 数据类型数据运算表

各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不 再赘述。

四、实验内容与步骤

1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考 虑计算结果对标志寄存器中状态标志位的影响

2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和 与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据 来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现

1

上述运算。

3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数 据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同 学自行给出初始值加以验证程序。

五、程序设计:

实验1:流程图如下:

开始

输入数据

进行运算

输出结果

结束 实验2:以16进制加法为例,流程图如下: 开始

输入FIRST 和SECOND

SI=3,CX=4

Y CX=0? N 输出 [THIRD+1][SI]=FIRST[SI]+SECOND[SI] THIRD

CX-1,SI-1 结束

其他程序流程图类似。

六、实验过程及结果:

实验1:

1. 根据要求,设计程序如下:

汇编语言实验报告 班级: 姓名: 学

号:

2. 编译代码,生成OBJ文件,再生成EXE文件,可成功运行。 3. 进行程序调试可得运算结果如下: 087H+034H的结果:

087H-034H的结果:

087H×034H的结果:

3

087H/034H的结果:

0C2H+5FH的结果:

0C2H-5FH的结果:

0C2H×5FH的结果:

0C2H÷5FH的结果:

4.总结两组数的和差积商及标志状态位情况如下表:

计算 表达式 087H+034H 087H-034H 087H*034H 087H/034H 0C2H+5FH 0C2H-5FH 0C2H*5FH 0C2H/5FH 结果 0BBH 53H 1B6CH 商2H 余1FH 121H 63H 47FE 商2H 余4H CF NC NC NC NC NC NC NC NC AF NA NA NA NA AC AC NA NA ZF NZ NZ NZ ZR NZ NZ NZ ZR 状态标志 OF NV NV NV NV NV NV NV NV SF PL PL PL PL PL PL PL PL PF PE PE PE PE PE PE PO PE

汇编语言实验报告 班级: 姓名: 学

号:

状态标志位 CF 0 最高有效位向高位无进位 1 最高有效位向高位有进位 0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况) AF ZF OF 同符号数相减时,或不减,其结果符号与减数不同。 1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不0 CF OF=0 0 乘积的高一半为0(字节操作的(AH)或字操作的1 CF OF=1 1 乘积的高一半不为0 0 不 确 定 1 加法 减法 乘法 除法 够减的情况 (DX)) 两数符号相反(正数-负数,或负而结果符号与减数相同。 无影响 无影响 CF OF=0 0 乘积的高一半为0(字(AH)或字操作的(DX)) 无影响 无影响 无影响 无影响 无影响 无影响 CF OF=1 1 乘积的高一半不为0 结果不为零 结果为零 两个不同符号数相加,或同符号数相加,结果符号与其相同。 两个同符号数相加(正负数+负数),结果符号与其相反。 数+正数 或 同符号数相数-正数),节操作的SF PF 结果不为负 结果为负 实验2: 1. 根据要求,编译程序如下:

FIRST+SECOND的16进制:

5

FIRST-SECOND的16进制:

FIRST+SECOND的10进制:

汇编语言实验报告 班级: 姓名: 学

号:

FIRST-SECOND的10进制:

7

2. 编译代码,生成OBJ文件,再生成EXE文件,可成功运行。 3. 进行程序调试可得运算结果如下: FIRST+SECOND的16进制结果:

FIRST-SECOND的16进制结果:

汇编语言实验报告 班级: 姓名: 学

号:

FIRST+SECOND的10进制结果:

FIRST-SECOND的10进制结果:

4. 最终结果如下: FIRST+SECOND FIRST-SECOND

十六进制结果 57H,C8H,19H,9CH 33H,3CH,13H,12H 十进制结果 58,29,80,03 33,36,13,12 9

实验3:

1. 依据题意编写代码如下:

2.编译代码,生成OBJ文件,再生成EXE文件,可成功运行。 3.进行程序调试可得运算结果如下:

即商为82H,余数为1FH

七、实验感想:

经过两次实验,渐渐熟悉了编程环境,对汇编语言中的二进制、十六进制、十进制、BCD

码的表示形式有了一定了解,也对从汇编课上学习到的有关BCD码调整指令方面理论知识有了更深刻的认识,经过自己动手编程,熟悉了二进制多字节加减法基本指令的使用方法以及无符号数和有符号数乘法和除法指令的使用,通过分析和思考,掌握了各类运算类指令对个状态标志位的影响和测试方法。

因篇幅问题不能全部显示,请点此查看更多更全内容