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代表一个数位,从左到右:千百十个 ************//


本文标签: 数值 进制 计数 是否