- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验—BCD码相乘
实验2—BCD码相乘
一、实验目的
掌握码制之间的转换方法及乘法运算
二、实验内容
实现BCD码的乘法,要求被乘数和乘数(0~99)以压缩BCD码形式存放,各占1个字节内存单元。乘积存放在另外2个字节内存单元中。
三、流程图
四、参考程序
DATAS SEGMENT
DATA1 DB 10H
DATA2 DB 75H
DECI DB 0AH
PRODUCT DW ?
COUNT DB 0
STORE DB 4 DUP(0) ;因不明确乘积为几位数,故结果暂存于此
DIS DB RESULT:$$$$$
DATAS ENDS
CODES SEGMENT
ASSUME DS:DATAS,CS:CODES
MULTIPLY:
MOV AX,DATAS
MOV DS,AX
DATA1_BCD_H:
MOV CH,DATA1
AND CH,0FH ;CH保存DATA1个位数
MOV CL,4
SHR DATA1,CL ;右移得DATA1十位数
MOV AL,DATA1
MUL DECI
ADD AL,CH
MOV DL,AL ;转换完毕,放入DL暂存
DATA2_BCD_H:
MOV DH,DATA2
AND DH,0FH ;DH保存DATA2个位数
SHR DATA2,CL ;右移得DATA2十位数
MOV AL,DATA2
MUL DECI
ADD AL,DH ;转换完毕,放入AL暂存,等待相乘
MUL DL
MOV PRODUCT,AX
MOV SI,0
MOV CX,4
TRANSFER: ;将十六进制结果转换为十进制结果存入STORE
DIV DECI
CMP AL,0
JZ QUIT ;各位数字均已找出,退出循环
ADD STORE[SI],AH
MOV AH,0
INC SI
LOOP TRANSFER
QUIT:
ADD STORE[SI],AH ;最高位复制进待输出字符串
INC SI
MOV CX,SI
MOV DI,0
COPY:
MOV AL,STORE[SI-1]
MOV DIS[7+DI],AL
INC DI
DEC SI
LOOP COPY ;运算结果复制到待输出字符串
DISPLAY:
LEA DX,DIS
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END MULTIPLY
五、DEBUG截图:
进制转换前,DATA1、DATA2中内容如下:
进制转换后DATA1的转换结果存在DL中,为0A,而DATA2的转换结果存在AL中,为4B:
相乘后乘积存在PRODUCT中,如下,为02EEH。
转换回十进制,以ASCII码形式存放在STORE中,结果如下:
结果复制到待输出字符串DIS后,如下所示,翻译出来是’RESULT:750$’。
程序运行结果:
符合预期。
文档评论(0)