北理工汇编语言实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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