北理工汇编语言实验报告2

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言实验报告

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

班级:05611102

姓名:肖枫

学号:1120111431

实验日期:2013.9.4晚上

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

一、实验要求和目的

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,试编程求这两组数的和差积商,并考

虑计算结果对标志寄存器中状态标志位的影响。

代码如下:

流程图:依次计算两组数的加减乘除,用add,sub,mul,div指令即可。

结果如图:

计算状态标志

表达式 CF(进位) AF(小进位) ZF(0) OF(溢出) SF(负数) PF(偶数个1)

087H +034H 0 0 0 0 0 1

087H -034H 0 0 0 0 0 1

087H *034H 0 0 0 0 0 1

087H/034H 0 1 0 0 0 0

0C2H+5FH 0 1 0 0 0 1

0C2H-5FH 0 1 0 0 0 1

0C2H*5FH 0 1 0 0 0 0

0C2H/5FH 0 1 0 0 0 0

结果分别为:0bbh 53h 1b6ch 2h余1f h 121h 63h 47feh 2h 余4h

2、在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和

与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据

来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现

上述运算。

FIRST DW 45 H,82H,96 H,57H

将数字存入内存,先16位加减开始

SECOND DW 12 H,46H,83 H,45H

流程图和代码见下:

注:16进制加减与十进制加减十分类似,唯一的区别是每次加完要是

是否加到最高位?

从最低位开始相加,结果存入thrid中

调整(AAD,DAS),故未画10进制运算流程图。

是,调整

16进制相加结束,再计算相减,而后为十进制运算

是,调整

否上次运算是否有进位?

上次运算是否有进位?

结果: 16进制结果 10进制结果FIRST +SECOND 57 C9 19 9CH 58 29 80 02D

FIRST -SECOND 33 3C 13 12H 33 36 13 12D

3、编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数

据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同

学自行给出初始值加以验证程序。

程序和流程图如图:

注:其中每步运算后都要考虑进位或退位,进行加法调整或减法 调整。

上步结果加Z

开始:计算X*Y

初始数据如图,最终结果:AX=1232h,DX=4541h

保存结果,结束

上步结果除Y 上步结果-V 上步结果-328

相关文档
最新文档