实验五十进制数的BCD加、减法实验

上传人:简****9 文档编号:114621909 上传时间:2019-11-12 格式:DOC 页数:4 大小:46KB
返回 下载 相关 举报
实验五十进制数的BCD加、减法实验_第1页
第1页 / 共4页
实验五十进制数的BCD加、减法实验_第2页
第2页 / 共4页
实验五十进制数的BCD加、减法实验_第3页
第3页 / 共4页
实验五十进制数的BCD加、减法实验_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验五十进制数的BCD加、减法实验》由会员分享,可在线阅读,更多相关《实验五十进制数的BCD加、减法实验(4页珍藏版)》请在金锄头文库上搜索。

1、学号: 姓名: 班级: 汇编语言实验 1 实验五 十进制数的 BCD 加、减法实验 一、实验要求和目的 1熟悉 BCD 码的基本知识 2熟悉汇编语言 BCD 码多字节加减法基本指令的使用方法; 3掌握 BCD 码调整指令的使用方法。 二、软硬件环境 1硬件环境:微机 CPU 486 以上,500MB 以上硬盘,32M 以上内存; 2软件环境:装有 MASM 5.0、DEBUG、LINK 和 EDIT 等应用程序。 三、实验涉及的主要知识单元 1、BCD 码的介绍 BCD 码是一种用二进制编码的十进制数,又称二十进制数。它是用 4 位二进制数表 示一个十进制数码的,由于这 4 位二进制数的权为

2、8421,所以 BCD 码又称 8421 码。在 IBM PC 机中,表示十进制的 BCD 码可以用压缩的 BCD 码和非压缩的 BCD 码两种格式表示。 (1)压缩的 BCD 码 压缩的 BCD 码用 4 位二进制数表示一个十进制数位,整个十进制数形式为一个顺序的 以 4 位为一组的数串。 (2)非压缩的 BCD 码 非压缩的 BCD 码则以 8 位二进制数表示一个十进制数位,8 位中的低 4 位表示 8421 的 BCD 码,而高 4 位则没有意义。 2、BCD 码的调整指令 1)压缩的 BCD 码调整指令 DAA 加法的十进制调整指令 该指令把 AL 中的和调整到压缩的 BCD 格式,这

3、条指令之前必须执行 ADD 或 ADC 指令, 加法指令必须把两个压缩的 BCD 码相加,并把结果存放在 AL 寄存器中。 功能:如果 AL 寄存器中低 4 位大于 9 或辅助进位(AF)=1,则(AL)=(AL)+6 且 (AF)=1;如果(AL)=0A0H 或(CF)=1,则(AL)=(AL)+60H 且(CF)=1。同时, SF、ZF、PF 均有影响。 比如: MOV AL,68H ;(AL)=68H,表示压缩 BCD 码 68 MOV BL,28H ;(BL)=28H,表示压缩 BCD 码 28 ADD AL,BL;二进制加法:(AL)=68H+28H=90H DAA ;十进制调整:(

4、AL)=96H ;实现压缩 BCD 码加法:68+28=96 DAS 减法的十进制调整指令 该指令把 AL 中的差调整到压缩的 BCD 格式,这条指令之前必须执行 SUB 或 SBB 指令, 减法指令必须把两个 BCD 码相减,并把结果存放在 AL 寄存器中。 功能:如果(AF)=1 或 AL 寄存器中低 4 位大于 9,则(AL)=(AL)6 且(AF) 学号: 姓名: 班级: 汇编语言实验 2 =1;如果(AL)=0A0H 或(CF)=1,则(AL)=(AL)60H 且(CF)=1。同时 SF、ZF、PF 均受影响。 比如: MOV AL,68H ;(AL)=68H,表示压缩 BCD 码

5、68 MOV BL,28H ;(BL)=28H,表示压缩 BCD 码 28 SUB AL,BL ;二进制减法:(AL)=68H28H=40H DAS ;十进制调整:(AL)=40H ;实现压缩 BCD 码减法:6828=40 2)非压缩的 BCD 码调整指令 AAA 加法的 ASCII 调整指令 执行的操作:(AL)把 AL 中的和调整到非压缩的 BCD 格式 (AH)(AH)+调整产生的进位值 这条指令之前必须执行 ADD 或 ADC 指令,加法指令必须把两个非压缩的 BCD 码相加, 并把结果存放在 AL 寄存器中。 功能:如果 AL 的低 4 位大于 9 或(AF)=1,则: (AL)=

6、(AL)+6 (AH)=(AH)+1 (AF)=(CF)=1 且 AL 高 4 位清零。 否则:(CF)=(AF)=0; AL 高 4 位清零。 AAS 减法的 ASCII 调整指令 执行的操作:(AL)把 AL 中的差调整到非压缩的 BCD 格式 (AH)(AH)+调整产生的借位值 这条指令之前必须执行 SUB 或 SBB 指令,减法指令必须把两个非压缩的 BCD 码相减, 并把结果存放在 AL 寄存器中。 功能:如果 AL 的低 4 位大于 9 或(AF)=1,则: (AL)=(AL)6 (AH)=(AH)1 (AF)=(CF)=1 且 AL 高 4 位清零。 否则:(CF)=(AF)=0

7、; AL 高 4 位清零。 其他标志位 OF、PF、SF、ZF 不确定。 AAM 乘法的非压缩 BCD 码调整指令 语句格式:AAM 功能:被调整的乘积在 AX 中,对 AL 按 10 取模,则: (AL)/ 0AHAH(商):AL(余数) 其中 AH 为商,AL 为余数,标志位 AF、CF、OF、PF、SF、ZF 受影响。 AAD 除法的非压缩 BCD 码调整指令 语句格式:AAD 功能:除法运算前,先调整被除数 AX 内容,使: (AL)=(AL)+(AH)*0AH (AH)=0 即把非压缩型十进制数变成二进制数。 3、多精度 BCD 码相加程序示例 分别计算长度为 2 字节的压缩 BCD

8、 码和非压缩的 BCD 码的相加。 学号: 姓名: 班级: 汇编语言实验 3 首先分析程序: (1)分析程序设计 这里我们仍然采用高地址优先的方式来存放多精度数,高位相加的时候采用带进位相 加。只是由于 BCD 码的加法是十进制数相加,所以每次相加之后都要进行调整。压缩的 BCD 码加法采用指令 DAA 进行调整,非压缩的 BCD 码采用指令 AAA 进行调整。 (2)具体程序设计 ;压缩的 BCD 码相加计算 MOV AL,34H ADD AL,89H DAA MOV 2000H,AL MOV AL,18H ADC AL,27H DAA MOV 2001H,AL ;非压缩的 BCD 码相加计

9、算 MOV AL,34H ADD AL,89H AAA MOV 2002H,AL MOV AL,18H ADC AL,27H AAA MOV 2003H,AL 四、实验内容与步骤四、实验内容与步骤 1、实验内容 (1)编写程序,实现长度为 2 字节的缩与非压缩的 BCD 码相减。 (2)编写程序,实现一个长度为 3 字节 2 字节的压缩与非压缩的 BCD 码相减。 2、实验步骤 (1)预习 BCD 码相加减的基本知识,根据实验内容,画出流程图; (2)根据所画的流程图编写相应的程序段; (3)利用 DEBUG 的 A 命令输入对应程序片段,调试并分析结果是否正确。 (4)对写好的程序片段,利用 DEBUG 的 T、P 命令或 G 命令查看数据区,核对实验 结果。 学号: 姓名: 班级: 汇编语言实验 4 五、思考与练习 在例子中没有考虑最高位溢出的问题,若考虑到最高位可能发生溢出,该如何修改程 序。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号