語言:組合語言
此副程式最大值為FFFFFFH轉16777215。
位數越大時會自動切換連加倍率,所以速度還OK(不會永遠都笨笨的加1)。
1.把欲轉換的十六進制值丟到hmode3(最高位元),hmode2,hmode1(最低位元)例如:
2.呼叫sum_dec.:
3.把數值從nmode4~nmode1中提出來
丟0CH進去hmode1其他為零,傳回值nmode1為12H。複製程式碼(Copy to clipboard)
nmode1 equ [55h] ;十進制傳回值最低位元組
nmode2 equ [56h] ;十進制傳回值
nmode3 equ [57h] ;十進制傳回值
nmode4 equ [58h] ;十進制傳回值最高位元組
hmode1 equ [5bh] ;十六進制引數最低位元組
hmode2 equ [59h] ;十六進制引數
hmode3 equ [5ah] ;十六進制引數最高位元組
;------hex to dec--------------
sum_dec:
clr nmode1
clr nmode2
clr nmode3
clr nmode4
sz hmode1
jmp seach
sz hmode2
jmp seach2
sz hmode3
jmp seach3
ret
seach:
inc nmode1
mov a,nmode1
clr status
daa nmode1
sz status
call redeem
sdz hmode1
jmp seach
sz hmode2
jmp seach2
sz hmode3
jmp seach3
ret
seach2:
dec hmode2
mov a,56h
add a,nmode1
clr status
daa nmode1
mov a,status
addm a,nmode2
mov a,02h
add a,nmode2
clr status
daa nmode2
mov a,status
addm a,nmode3
sz hmode2
jmp seach2
sz hmode3
jmp seach3
ret
seach3:
dec hmode3
mov a,36h
add a,nmode1
clr status
daa nmode1
mov a,status
addm a,nmode2
mov a,55h
add a,nmode2
clr status
daa nmode2
mov a,status
addm a,nmode3
sz c
inc nmode4
mov a,06h
add a,nmode3
daa nmode3
sz c
inc nmode4
sz hmode3
jmp seach3
ret
redeem:
mov a,status
addm a,nmode2
clr status
mov a,nmode2
daa nmode2
mov a,status
addm a,nmode3
ret
;-----------------------------
沒有留言:
張貼留言