欢迎来到天天文库
浏览记录
ID:25562609
大小:156.82 KB
页数:8页
时间:2018-11-21
《实验2—BCD码相乘.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验2—BCD码相乘一、实验目的掌握码制之间的转换方法及乘法运算二、实验内容实现BCD码的乘法,要求被乘数和乘数(0~99)以压缩BCD码形式存放,各占1个字节内存单元。乘积存放在另外2个字节内存单元中。三、流程图准备开始DATA1、DATA2由压缩BCD码转为16进制码十六进制码相乘得到十六进制结果果将十六进制结果转为十进制结果暂存于一字符串将暂存的结果复制到待输出字符串调用DOS功能输出运算结果返回DOS,结束程序四、参考程序DATASSEGMENTDATA1DB10HDATA2DB75HDECIDB0AHPRODUCTDW?COUNTDB0STO
2、REDB4DUP('0');因不明确乘积为几位数,故结果暂存于此DISDB'RESULT:$$$$$'DATASENDSCODESSEGMENTASSUMEDS:DATAS,CS:CODESMULTIPLY:MOVAX,DATASMOVDS,AXDATA1_BCD_H:MOVCH,DATA1ANDCH,0FH;CH保存DATA1个位数MOVCL,4SHRDATA1,CL;右移得DATA1十位数MOVAL,DATA1MULDECIADDAL,CHMOVDL,AL;转换完毕,放入DL暂存DATA2_BCD_H:MOVDH,DATA2ANDDH,0FH;DH
3、保存DATA2个位数SHRDATA2,CL;右移得DATA2十位数MOVAL,DATA2MULDECIADDAL,DH;转换完毕,放入AL暂存,等待相乘MULDLMOVPRODUCT,AXMOVSI,0MOVCX,4TRANSFER:;将十六进制结果转换为十进制结果存入STOREDIVDECICMPAL,0JZQUIT;各位数字均已找出,退出循环ADDSTORE[SI],AHMOVAH,0INCSILOOPTRANSFERQUIT:ADDSTORE[SI],AH;最高位复制进待输出字符串INCSIMOVCX,SIMOVDI,0COPY:MOVAL,ST
4、ORE[SI-1]MOVDIS[7+DI],ALINCDIDECSILOOPCOPY;运算结果复制到待输出字符串DISPLAY:LEADX,DISMOVAH,09HINT21HMOVAH,4CHINT21HCODESENDSENDMULTIPLY五、DEBUG截图:进制转换前,DATA1、DATA2中内容如下:进制转换后DATA1的转换结果存在DL中,为0A,而DATA2的转换结果存在AL中,为4B:相乘后乘积存在PRODUCT中,如下,为02EEH。转换回十进制,以ASCII码形式存放在STORE中,结果如下:结果复制到待输出字符串DIS后,如下所示
5、,翻译出来是’RESULT:750$’。程序运行结果:符合预期。
此文档下载收益归作者所有