多字节、多进制加法运算实验报告

多字节、多进制加法运算实验报告

ID:35249507

大小:18.61 KB

页数:8页

时间:2019-03-22

多字节、多进制加法运算实验报告_第1页
多字节、多进制加法运算实验报告_第2页
多字节、多进制加法运算实验报告_第3页
多字节、多进制加法运算实验报告_第4页
多字节、多进制加法运算实验报告_第5页
资源描述:

《多字节、多进制加法运算实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、多字节、多进制加减运算学生:何绍金学号:201203870408专业班级:自动化1202指导老师:杨东勇2014年12月一、实验目的1.学习多字节压缩BCD码加减法运算的程序设计;2.学习单字节有符号数加减运算的程序设计。二、实验设备统一电子开发平台三、实验要求1.编写通用4字节压缩BCD码的加、减法运算程序;2.编写通用单字节有符号二进制数加、减法运算程序;四、实验原理(单字节带符号数加法运算)对于简单的8位加减可以直接调用指令就可以了。例如加法可以使用指令ADD以及带进位加ADDC,但单字节加减法只能在256之内进行运

2、算;在实际应用中经常需要进行多字节运算,从而处理更大的数据。该实验介绍单片机BCD码多字节加、减运算通用程序的设计。五、实验过程1.多字节无符号压缩BCD码加法运算假设多字节无符号被加数的最低字节的地址为R0,加数的最低字节地址为R1,字节数共为len;计算结果的地址于被加数相同。(1)入口参数:R0:被加数地址指针;R1:加数地址指针;len:字节数。(2)出口参数:@R0:计算结果;rLen:计算结果字节数。(3)使用资源:ACC,R0、R1,内部RAM单元len、rlen及存放被加数、加数、计算结果的内存单元。示例程

3、序如下:;多字节无符号压缩BCD码加法运算rlendata30h;存放计算结果字节数lendata31h;存放相加字节数;r0定位40h,r1定位50h;此处的程序的问题是前面字节的进位没有处理,;只是对最后字节相加处理了进位ORG0000h;ADDl:PUSHPSW;保护标志寄存器内容CLRC;进位位清0MOVrlen,#00H;和的字节数先清0ADD:MOVA,@R0;取被加数ADDA,@R1;求和DAA;十进制调整MOV@R0,A;保存INCR0;地址增1INCR1INCrlen;字节数增1DJNZlen,ADD;所

4、有字节未加完继续,否则向下执行JNCADD20;和的最高字节无进位转ADD20MOV@R0,#01H;和的最高字节地址内容为01HINCrlenADD20:POPPSWRETEND多字节加法运算一般是按从低字节到高字节的顺序进行的,所以必须考虑低字节向高字节的进位情况,被加数和加数的压缩BCD码,最大不超过99,而99+99+1(进位)=199,此时不需要使用ADDC指令,但当两字节当最低两字节相加后,必须使用“DAA”进行十进制调整,调整后产生进位。而最高两字节相加后应考虑是否有进位。若有进位,应向和的最高位字节地址写入

5、01H,这时和数将比加数或被加数多出一个字节。2.单字节带符号数加法运算编程范例:两个8位二进制带符号数加法,被加数和加数分别存于BLK和BLK+1单元,和超过8位要占两个单元,设为SUM和SUM+1单元。解:两个带符号数的加法是作为补码加法处理的。由于和超过8位,因此,和就是一个16位带符号数,符号位在16位数的最高位。为此,直接相加进位是不够的,还要做一些处理。例如-65和-65相加,若直接求和产生溢出,即使扩展到16位,结果也不正确。如:-651011111lB+)-6510111111B00000001011111

6、1OB现在这个16位数的最高位为0,两个负数相加变为正数,显然是错误的。处理的方法是先将8位带符号数扩展成16位带符号数,然后再相加。若是8位正数,则高8位扩展为00H;若是8位负数,则高8位扩展为0FFH。这样处理后,再按双字节相加,就可以得到正确的结果。如上例,由于是负数,高8位应是全1,然后再加:-651111111110111111B+)-6511111111101l1111B1111111101111110B,最高位的进位丢失不计。换算成真值为—130,结果正确。在编程时,判别加数和被加数的符号位,再决定是否要将

7、高8位改为0FFH。程序如下:BLKDATA30HSUMDATA40HORG0000hMAIN:MOVR0,#BLK;R0指向被加数MOVR1,#SUM;R1指向和MOVR2,#0;高8位先设为0MOVR3,#0MOVA,@R0;取出被加数JNBACC.7,N1;若是正数转移到N1MOVR2,#0FFH;若是负数高8位为全1N1:INCR0;修改即指针MOVB,@R0;取加数到BJNBB.7,N2;若是正数转移N2MOVR3,#0FFH;若是负数高8位为全1N2:ADDA,B;低8位相加.MOV@R1,A;存低8位和INC

8、R1;修改R1指针MOVA,R2;准备加高8位ADDCA,R3;高8位相加MOV@R1,A;存高8位和SJMP$END3.多字节无符号压缩BCD码减法运算为了使用“DAA”指令对十进制减法进行调整,必须采用对减数求补相加的方法,以9AH为模减去减数即得到减数的补数。设被减数低字节地址存在R1,减数低字节

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。