admin 管理员组文章数量: 887021
2024年1月25日发(作者:linux的mkdir)
二进制数转换为BCD
码
作者:佚名
来源:不详
录入:Admin
更新时间:2008-7-26 20:09:41
点击数:2
【字体:
】
本例为单字节二进制数(0X20)转换为非压缩BCD 码,存在0X25,0X24,0X23
中,0X25 为百位,0X23 为个位。
main: MOV a,@0xa4 ;赋值
MOV 0x20,a
MOV 0x21,a
MOV 0x22,a
MOV a,@0x0 ;0x23,0x24,0x25 单元清0
MOV 0x23,a
MOV 0x24,a
MOV 0x25,a
MOV a,@0x64 ;对100 的个数计数
MOV 0x26,a
MOV a,@0x25 ;百位存在0x25 中
MOV 0x04,a
call a0 ;调计数子程
MOV a,@0x0a ;对10 的个数计数
MOV 0x26,a
dec 0x04 ;个位存在0x24 中
call a0
MOV a,0x22 ;除去百位,十位,余下的即个位,存入0x23
MOV 0x23,a
self: jmp self
a0: ;计数子程
MOV a,0x26
sub 0x22,a
jbs 0x03,2
jmp a1
inc 0x00 ;无余数则对应位加1
MOV a,@0x0 ;0x21 与0x22 在返回时应保持相同
MOV 0x21,a
ret
a1: jbs 0x03,0 ;小于则跳a2
jmp a2
inc 0x00 ;大于则计数值加1
MOV a,0x22
MOV 0x21,a ;将0x22 保存到0x21 中
jmp a0 ;跳回a0 继续计数
a2: MOV a,0x21 ;0x21 中保存的减之前的数据,此时恢复到0x22
MOV 0x22,a
ret
eop
本例为单字节二进制数(0X20)转换为非压缩BCD 码,存在0X25,0X24,0X23 中,0X25 为百位,0X
23 为个位。
main: MOV a,@0xa4 ;赋值
MOV 0x20,a
MOV 0x21,a
MOV 0x22,a
MOV a,@0x0 ;0x23,0x24,0x25 单元清0
MOV 0x23,a
MOV 0x24,a
MOV 0x25,a
MOV a,@0x64 ;对100 的个数计数
MOV 0x26,a
MOV a,@0x25 ;百位存在0x25 中
MOV 0x04,a
call a0 ;调计数子程
MOV a,@0x0a ;对10 的个数计数
MOV 0x26,a
dec 0x04 ;个位存在0x24 中
call a0
MOV a,0x22 ;除去百位,十位,余下的即个位,存入0x23
MOV 0x23,a
self: jmp self
a0: ;计数子程
MOV a,0x26
sub 0x22,a
jbs 0x03,2
jmp a1
inc 0x00 ;无余数则对应位加1
MOV a,@0x0 ;0x21 与0x22 在返回时应保持相同
MOV 0x21,a
ret
a1: jbs 0x03,0 ;小于则跳a2
jmp a2
inc 0x00 ;大于则计数值加1
MOV a,0x22
MOV 0x21,a ;将0x22 保存到0x21 中
jmp a0 ;跳回a0 继续计数
a2: MOV a,0x21 ;0x21 中保存的减之前的数据,此时恢复到0x22
MOV 0x22,a
ret
eop
版权声明:本文标题:二进制数转换为BCD 码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1706191890h503598.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论