admin 管理员组文章数量: 1184232
2024年12月22日发(作者:authentication rejected)
/*==========================================================================*/
// ------------------------------------------------ 16进制转换为10进制 ------------------------------------------
/*==========================================================================*/
Hex_to_Dec_prog:
div_Start_qian:
ar = dx
ax = 0x03E8
ar = ar – ax ;; 判断数值是否大于1000;是:循环减1000计数;否:跳到百位
if nc jmp div_Start_bai_before
dx = ar;
ar = rm[div_bak]
ar++ ;; 大于1000,减一次1000,div_bak数值+1
rm[div_bak] = ar;
jmp div_Start_qian
div_Start_bai_before:
ar = rm[div_bak]
slz ar,2
slz ar,2 ;; 将div_bak寄存器的数值左移4bit(即保存千位);
rm[div_bak] = ar;
;;-------------------------------------------------------------------------------------------
div_Start_bai:
ar = dx
ax = 0x0064
ar = ar – ax ;; 判断数值是否大于100;是:循环减100计数;否:跳到十位
if nc jmp div_Start_shi_wei_bofore
dx = ar;
ar = rm[div_bak]
ar++ ;; 大于100,减一次100,div_bak数值+1
rm[div_bak] = ar;
jmp div_Start_bai
div_Start_shi_wei_bofore:
ar = rm[div_bak]
slz ar,2
slz ar,2 ;; 将div_bak寄存器的数值左移4bit(即保存百位);
rm[div_bak] = ar;
;;-------------------------------------------------------------------------------------------
div_Start_shi_wei:
ar = dx
ax = 0x000a
ar = ar - ax ;; 判断数值是否大于10;是:循环减10计数;否:跳到个位
if nc jmp div_Start_ge_wei_bofore
dx = ar;
ar = rm[div_bak]
ar++ ;; 大于10,减一次10,div_bak数值+1
rm[div_bak] = ar;
jmp div_Start_shi_wei
div_Start_ge_wei_bofore:
ar = rm[div_bak]
slz ar,2
slz ar,2 ;; 将div_bak寄存器的数值左移4bit(即保存十位);
rm[div_bak] = ar;
;;-------------------------------------------------------------------------------------------
div_Start_ge_wei:
ar = dx
ax = rm[div_bak]
ar = ar + ax ;; 最后加上个位的数值,得出10进制数(BCD)
Hex_to_Dec_prog_exit:
Rets
//*********** 转换的结果是:每4-bit代表一个数位,从左到右:千百十个 ************//
版权声明:本文标题:16进制转10进制 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1734895797a1605854.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论