当前位置: 代码迷 >> 汇编语言 >> 求教为何这段代码可以让一位十六进制数码变成ascii码
  详细解决方案

求教为何这段代码可以让一位十六进制数码变成ascii码

热度:899   发布时间:2013-02-26 00:00:00.0
求教为什么这段代码可以让一位十六进制数码变成ascii码

;al=待转换的十六进制数码
;al=ascii码
htoasc proc
        and al,0fh
        add al,90h
        daa
        adc al,40h
        daa
        ret
htoasc endp

------解决方案--------------------------------------------------------
不好意思,#2~#5错了

调用htoasc前,设al=01h,调用后al=31h,即‘1’
htoasc proc
        and al,0fh
        add al,90h ;al=91h
        daa        ; al=91h,cf=0,af=0
        adc al,40h ; al=40h+91h=d1h
        daa        ; al=d1h+60h=31h,cf=1
        ret
htoasc endp

调用htoasc前,设al=0Bh,调用后al=41h,即‘B’
htoasc proc
        and al,0fh
        add al,90h ;al=9bh
        daa        ; al=9bh+6=01h,cf=1,af=0
        adc al,40h ; al=40h+cf+01h=42h
        daa        ; al=42h
        ret
htoasc endp
  相关解决方案