为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

实验报告 实验三无符号二进制数的乘法运算.doc

2017-11-22 10页 doc 100KB 155阅读

用户头像

is_624976

暂无简介

举报
实验报告 实验三无符号二进制数的乘法运算.doc实验报告 实验三无符号二进制数的乘法运算.doc EDA实验报告 之 实验三 无符号双字节数的乘法运算 1、实验目的:熟悉软件的操作,掌握算术操作类指令; 2、实验要求: 1)、进一步熟悉熟悉软件的操作; 2)、熟悉算术操作类指令; 3)、写出实验报告。 3、实验题目:无符号双字节数的乘法运算 1)、编写程序,把内部RAM地址为5BH、5AH 和59H、58H中的两个双字节无符号二进制数相乘(其中5BH与5AH中的内容构成一个乘数,高位在5BH中;59H与58H中的内容构成另一个乘数,高位在59H中),把乘积...
实验报告  实验三无符号二进制数的乘法运算.doc
实验报告 实验三无符号二进制数的乘法运算.doc EDA实验报告 之 实验三 无符号双字节数的乘法运算 1、实验目的:熟悉软件的操作,掌握算术操作类指令; 2、实验要求: 1)、进一步熟悉熟悉软件的操作; 2)、熟悉算术操作类指令; 3)、写出实验报告。 3、实验题目:无符号双字节数的乘法运算 1)、编写程序,把内部RAM地址为5BH、5AH 和59H、58H中的两个双字节无符号二进制数相乘(其中5BH与5AH中的内容构成一个乘数,高位在5BH中;59H与58H中的内容构成另一个乘数,高位在59H中),把乘积放在内部RAM的5FH、5EH、5DH和5CH单元中(高位在5FH单元中)。 2)、把乘积转换为压缩的BCD码,结果放在内部RAM的4FH、4EH、4DH、4CH和4BH单元中(高位在4FH单元中)。 4、 实验内容: 1) 使用的仪器、仪,开发平台型号 本实验用到了wave6000软件。电脑一台。 2) 性能指标、技术要求、思路、软件 性能指标、技术要求见实验题目部分; 思路方案:(下页) 思路方案: 双字节无符号二进制数相乘 算法原理: 设a、b、c、d都是8位二进制数,z是8位二进制数0, 则ab?cd=(az+zb)(cz+zd)=aczz+ zbcz + zadz +zzbd acHzzz + acLzz 第 1 页 /共 8 页 bcHzz + bcLz adHzz + adLz bdHz + bdL +) 字节4 字节3 字节2 字节1 可见用4次乘法指令和多次加法指令可求出乘积. 多字节二进制数转换为BCD数子程序BINBCD2 算法原理: 70(dddddddd),d,2,?,d,2,((((((d,2,d),2,d),2),?d),2,d7654321027076510举例: 十进制数 二进制数 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1)二进制数左移1位, C=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 十进制ADDC \ DA 2)二进制数左移1位, C=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 十进制ADDC \ DA 3)二进制数左移1位, C=1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 十进制ADDC \ DA 4)二进制数左移1位, C=1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 十进制ADDC \ DA 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 对应于原来二进制的高4位 注意: * 例中乘2^7 ,但移位8次, 其中十进制单元第一次自身相加时扣除了一次乘2操作; d),2,di,1i * ADDC配合DA指令可以实现 „„ 操作 ; 流程图: 双字节无符号二进制数相乘 流程图1: 第 2 页 /共 8 页 设A,B,C,D都是8位二进制数, 计算AB*CD R0=5CH(乘积存放地址)R3,R2为临时寄存器 计算B*D@R0=bdL(R3)=bdHRO地址加一 计算A*D;(R3)=adL+bdH(R2)=adH+进位 计算B*C;(R3)=adL+bdH+bcL@R0=(R3);R0地址加一;(R2)=adH+bcH+进位 R1=0 判断第三次加法是否产生进位 是 R1加一否 计算A*C;R0地址加一@R0=acl+adH+bcH R0加一;@R0=acH+R1(进位) 程序结束 多字节二进制数转换为BCD数子程序BINBCD2 流程图2: 第 3 页 /共 8 页 多字节二进制数转换 为压缩BCD数: 请BCD数单元 计数器置为二进 制数位数 二进制数左移 BCD数*2 + 进位 位否否十进制调整 字节数到 是 位数到 是 返回 3) 源程序 第 4 页 /共 8 页 ORG 0000H MOV R0,#5CH ;乘积存放地址低位 MUL1: MOV A,5AH ;求b*d MOV B,58H MUL AB MOV @R0,A ;存放bdL,字节1 MOV R3,B ;暂存bdH MOV A,5BH MOV B,58H ;求a*d MUL AB ADD A,R3 MOV R3,A ;(R3)=adL+bdH,字节2 MOV A,B ADDC A,#0 MOV R2,A ;(R2)=adH+求字节2时可能的进位 ,字节3 MOV A,5AH ;求b*c MOV B,59H MUL AB ADD A,R3 INC R0 ;地址加一 MOV @R0,A ;字节2= adL+bdH+bcL MOV A,B ADDC A,R2 MOV R2,A ; (R2)=adH+bcH+求字节2时可能的进位,字节3 MOV R1,#0 JNC LAST ;求刚才的字节3时有无向上的进位 INC R1 ;地址加一 LAST: MOV A,5BH ;求a*c MOV B,59H MUL AB ADD A,R2 INC R0 ;地址加一 MOV @R0,A ;存放 acL+ adH+bcH,字节3 MOV A,B ADDC A,R1 ;ach+进位 INC R0 MOV @R0,A ;存放ach+进位,字节4 MOV R5,#04H ;二进制字节数计数器 MOV R1,#10H ;内部RAM单元 MOV R0,#5CH ;刚才的乘积低位地址 LOOP: ;此循环实现数据的搬移 第 5 页 /共 8 页 MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R5,LOOP BINBCD2: MOV R1,#4BH ;转换后存到地址(低位) MOV R2,#04H ;二进制数字节数 INC R2 ;转换后的BCD字节数比二进制数字节数多一个 CLR A BB0: MOV @R1,A INC R1 DJNZ R2,BB0 MOV A,#04H ;求“X”出现的总次数 MOV B,#8 MUL AB MOV R3,A BB3: MOV R0,#10H MOV R2,#04H CLR C BB1: MOV A,@R0 ;二进制数左移1位,最高位在C中 RLC A MOV @R0,A INC R0 DJNZ R2,BB1 MOV R2,#04H INC R2 ;十进制字节数比二进制字节数多1 MOV R1,#4BH BB2: MOV A,@R1 ;十进制数X 2 ,十进制调整 ADDC A,@R1 ;二进制左移一位后的C DA A MOV @R1,A INC R1 DJNZ R2,BB2 DJNZ R3,BB3 SJMP $ 第 6 页 /共 8 页 4) 实验步骤,完成情况 4.1 在WAVE 6000中新建文件,并将代码写入文件中,保存为EXPERIMENT3.ASM; 4.2 在WAVE 6000中新建项目,并在模块文件中包含上述EXPERIMENT3.ASM文件, 最后保存为EXPERIMENT3.PRG。 4.3 编译程序,按照提示改正错误的地方,直到没有语法错误为止。 4.4 完成上一步后,检查是否有逻辑错误。 本实验中,乘数放在58H开始的4个字节单元,我们假定 (58H)=45,(59H)=2E,(5AH)=57,(5BH)=2B,即是两乘数为:11845*11095。乘积放 在内部RAM的5FH、5EH、5DH和5CH单元中(高位在5FH单元中),最开始 时均为0;如下所示: 在loop上一条指令设置断点,全速运行,检验乘法子程序结果是否正确: 2E57H*452EH = 07D55073H,结果正确。 第 7 页 /共 8 页 现在把乘积转换为压缩的BCD码,结果放在内部RAM的4FH、4EH、4DH、4CH 和4BH单元中(高位在4FH单元中),这些单元的初始值均为0。由上图可以看出。 取消断点,全速运行,检验转换为压缩的BCD码子程序是否正确。 07D55073H = 131420275(十进制),结果正确。 换用其他的数,再次验证,结果均正确。实验完毕。 5、本实验遇到的问题及解决方案 总的来说,做这个实验没有遇到太麻烦的问题。不过在老师没有讲《实验程序及设计方法》之前,对乘法的流程虽说有了一定的想法,但不是很全面,而对BCD转换脑袋是一片空白,不知道如何下手。上完课后,感觉豁然开朗。参考上的方法,也很快设计出了程序,并得到了结果。 怎么说呢,感觉这个程序很有代表性吧,以后遇到相似的问题,也会触类旁通。 6、对本实验的改进和疑难问题: 改进之处: 可以将字节数再增大一些,做三字节无符号二进制数相乘,或四字节„„ 把条件设得更苛刻一点,做0FFH*0FFH,不过好像也没什么意义,O(?_?)O 2009-4-16 第 8 页 /共 8 页
/
本文档为【实验报告 实验三无符号二进制数的乘法运算.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索