实验五 十进制数的BCD加、减法实验.doc_第1页
实验五 十进制数的BCD加、减法实验.doc_第2页
实验五 十进制数的BCD加、减法实验.doc_第3页
实验五 十进制数的BCD加、减法实验.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学号: 姓名: 班级: 汇编语言实验 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 位二进制数的权为 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 格式,这条指令之前必须执行 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 ;十进制调整:(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 码 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)=(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; 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 码和非压缩的 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 码相加计算 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 命令输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论