![多字节多进制加法运算实验报告_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/e20a68f9-5316-43a9-9f50-edfb6ad40d8e/e20a68f9-5316-43a9-9f50-edfb6ad40d8e1.gif)
![多字节多进制加法运算实验报告_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/e20a68f9-5316-43a9-9f50-edfb6ad40d8e/e20a68f9-5316-43a9-9f50-edfb6ad40d8e2.gif)
![多字节多进制加法运算实验报告_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/e20a68f9-5316-43a9-9f50-edfb6ad40d8e/e20a68f9-5316-43a9-9f50-edfb6ad40d8e3.gif)
![多字节多进制加法运算实验报告_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/e20a68f9-5316-43a9-9f50-edfb6ad40d8e/e20a68f9-5316-43a9-9f50-edfb6ad40d8e4.gif)
![多字节多进制加法运算实验报告_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-2/17/e20a68f9-5316-43a9-9f50-edfb6ad40d8e/e20a68f9-5316-43a9-9f50-edfb6ad40d8e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多字节、多进制加减运算 学生: 何绍金 学号: 2 专业班级:自动化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 及存放被加数、加数、计算结果的内存单元。示例程序如下:;多字节无符号压缩BCD 码加法运算rlen data 30h; 存放计算结果字节数len data 31h; 存放相加字节
3、数; r0 定位40h,r1 定位50h; 此处的程序的问题是前面字节的进位没有处理,; 只是对最后字节相加处理了进位ORG 0000h;ADDl: PUSH PSW ;保护标志寄存器内容CLR C ;进位位清0MOV rlen,#00H ;和的字节数先清0ADD: MOV A,R0 ;取被加数ADD A,R1 ;求和DA A ;十进制调整MOV R0,A ;保存INC R0 ;地址增1INC R1INC rlen ;字节数增1DJNZ len,ADD ;所有字节未加完继续,否则向下执行JNC ADD20 ;和的最高字节无进位转ADD20MOV R0,#01H ;和的最高字节地址内容为01HI
4、NC rlenADD20: POP PSWRETEND多字节加法运算一般是按从低字节到高字节的顺序进行的,所以必须考虑低字节向高字节的进位情况,被加数和加数的压缩BCD 码,最大不超过99,而99+99+1(进位)=199,此时不需要使用ADDC 指令,但当两字节当最低两字节相加后,必须使用“DA A”进行十进制调整,调整后产生进位。而最高两字节相加后应考虑是否有进位。若有进位,应向和的最高位字节地址写入01H,这时和数将比加数或被加数多出一个字节。2单字节带符号数加法运算编程范例:两个8 位二进制带符号数加法,被加数和加数分别存于BLK 和BLK+1 单元,和超过8 位要占两个单元,设为SU
5、M 和SUM+1 单元。解:两个带符号数的加法是作为补码加法处理的。由于和超过8 位,因此,和就是一个16 位带符号数,符号位在16 位数的最高位。为此,直接相加进位是不够的,还要做一些处理。例如-65 和-65 相加,若直接求和产生溢出,即使扩展到16 位,结果也不正确。如:-65 1 0 1 1 1 1 1 lB+) -65 1 0 1 1 1 1 1 1B0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 OB现在这个16 位数的最高位为0,两个负数相加变为正数,显然是错误的。处理的方法是先将8 位带符号数扩展成16 位带符号数,然后再相加。若是8 位正数,则高8 位扩展为00H
6、;若是8 位负数,则高8 位扩展为0FFH。这样处理后,再按双字节相加,就可以得到正确的结果。如上例,由于是负数,高8 位应是全1,然后再加:-65 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1B+) -65 1 1 1 1 1 1 1 1 1 0 1 l 1 1 1 1B1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0B,最高位的进位丢失不计。换算成真值为130,结果正确。在编程时,判别加数和被加数的符号位,再决定是否要将高8 位改为0FFH。程序如下:BLK DATA 30HSUM DATA 40HORG 0000hMAIN:MOV R0,#BLK ;R0
7、指向被加数MOV R1,#SUM ;R1 指向和MOV R2,#0 ;高8 位先设为0MOV R3,#0MOV A,R0 ;取出被加数JNB ACC.7,N1 ;若是正数转移到N1MOV R2,#0FFH ;若是负数高8 位为全1N1:INC R0 ;修改即指针MOV B,R0 ;取加数到BJNB B.7,N2 ;若是正数转移N2MOV R3,#0FFH ;若是负数高8 位为全1N2:ADD A,B ;低8 位相加 MOV R1,A ;存低8 位和INC R1 ;修改R1 指针MOV A,R2 ;准备加高8 位ADDC A,R3 ;高8 位相加MOV R1,A ;存高8 位和SJMP $END
8、3多字节无符号压缩BCD 码减法运算为了使用“DA A”指令对十进制减法进行调整,必须采用对减数求补相加的方法,以9AH 为模减去减数即得到减数的补数。设被减数低字节地址存在R1,减数低字节地址存在R0,字节数存在len;差的低字节地址存在R0,差的字节数存在rlen。(1)入口参数:R0:减数地址指针;R1:被减数地址指针;len:字节数(2)出口参数:R0:差的地址指针R3:差的字节数(3)使用资源: A,R0,R1,内部RAM 单元范例程序如下:rlen data 30h ; 存放计算结果字节数len data 31h ; 存放相加字节数ORG 0000h;SUBCD: MOV rlen
9、,#00H ;差字节单元清0CLR 07H ;符号位清0CLR C ;借位位清033SUBBCD: MOV A,#9AH ;减数对模100 求补SUBB A,R0ADD A,R1 ;补码相加DA AMOV R0,A ;存结果INC R0INC R11NC rlenCPL C ;进位求反以形成正确借位DJNZ len,SUBCDl ;未减完去SUBCDl,减完向下执行JNC SUBCD2 ;无借位去别m 返回主程序,否则继续SETB 07H ;有借位,置“1”符号位SUBCD2: RETEND程序中对减数求补后与被减数相加,用“DA A”指令进行调整。若二者相加调整后结果无进位(C=0),则表示
10、二者相减有借位;若二者相加调整后有进位(C;1),则表示二者相减无借位。所以必须对进位标志位C 进行求反操作,才能得到正确结果。6、 实验思考题1.检查结果是否正确:打开资源管理窗口,键入DS:0030H,窗口便会显示从30H地址开始,寄存器的值,其中,30H是一加数的值,31H则是另一加数的值,在窗口中把30H值改为01,31H改为02,再次运行程序后,在资源管理中键入DS:0040H,40H地址显示的值便是03,结果符合要求。2分析 DA A指令的作用。答:被加数A与加数R1都是以补码的形式进行运算,即形式上是十进制的相加,但在单片机中是以二进制进行运算即十六进制进行运算的,结果自然也就是
11、二进制的,DA指令就是为了把结果调整为十进制的运算结果,但以二进制形式存储。3说明怎样处理单字节有符号数的减法?答:先将8位带符号数扩展成16位带符号数,然后再相加。若是8位正数,则高8位扩展为00H;若是8位负数,则高8位扩展成0FFH。这样处理后,再按双字节相加,就可以得到正确的结果。附:实验源代码:1程序清单和注释BLK DATA 30HSUM DATA 40HORG 0000hMAIN:MOV R0,#BLK ;R0 指向被加数MOV R1,#SUM ;R1 指向和MOV R2,#0 ;高 8 位先设为 0MOV R3,#0MOV A,R0 ;取出被加数JNB ACC.7,N1 ;若是正数转移到 N1MOV R2,#0FFH ;若是负数高 8 位为全 1N1:INC R0 ;修改即指针MOV B,R0 ;取加数到 B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高压液压柱塞泵马达项目发展计划
- 2025年度绿色建筑项目财产赠与合同
- 持续改进教学工作的机制计划
- 高危行业的安全防控计划
- 合理安排急诊排班的重要性计划
- 黑龙江省龙东地区2024-2025学年高一上学期期末考试生物试卷 含解析
- 2025年卫星数据采集系统合作协议书
- 家用电器能效等级划分制度
- 2025年服装、鞋帽加工机械合作协议书
- 2025年储冷、蓄热装置项目建议书
- 2024化工园区危险品运输车辆停车场建设规范
- 自然辩证法概论之马克思主义自然观
- 我国新能源汽车充电桩行业发展痛点和方向,机械工程论文
- 临床中药学-课件
- 2023年山东科技职业学院单招综合素质考试笔试模拟试题及答案解析
- 警察行政法课件
- 数学与生活小报
- 挖掘数学专业课程的思政元素-以空间解析几何为例
- 人力资源管理手册(全集)
- 儿科学教学课件肾病综合征
- 2023高中物理步步高大一轮 第四章 专题强化七 圆周运动的临界问题
评论
0/150
提交评论