如何把一位16进制的数转换成对应的ASCII码 2如何把一位16进制的数转换成对应的ASCII码 2
如何把一位16进制数转化为对应的ASCII码 功能:把1位16进制数转换为对应的ASCII码
入口参数:al的低4位为要转换的16进制数
出口参数:al含对应的ASCII码
htoasc proc
and al,0fh
add al,90h ------->从这里起后面的不懂,给解释下。
daa
adc al,40h
daa
ret
htoasc endp
补充:之前第一段话说的有问题,所以修改了下,如下:(另外提交的时候没注意,第一个兄弟的回答已经是...
如何把一位16进制的数转换成对应的ASCII码 2
如何把一位16进制数转化为对应的ASCII码 功能:把1位16进制数转换为对应的ASCII码
入口参数:al的低4位为要转换的16进制数
出口参数:al含对应的ASCII码
htoasc proc
and al,0fh
add al,90h ------->从这里起后面的不懂,给解释下。
daa
adc al,40h
daa
ret
htoasc endp
补充:之前第一段话说的有问
,所以修改了下,如下:(另外提交的时候没注意,第一个兄弟的回答已经是正确的了^_^)
主要思想是0~9转为对应的ASCII码时加30h,(即48D)而a,b,c,d,e,f则加37h(即55D),比30h多出来的7h就是通过adc(多加了CF的01h)以及daa(多加了06h)实现的。
先说对0~9的,以5为例,
and al,0fh
add al,90h
变为95h
daa
这个时候的daa,由于95h低位,高位都小于9,且无进位,所以不变 adc al,40h
95h + 40h + CF = D5h daa
低位不变,高位大于9,所以加60h,变为35h,且CF = 1 最终结果为35h,即字符5对应的ascii码53.
然后是A~F,以C为例:
and al,0fh
add al,90h
变为9Ch
daa
这个时候的daa,先看低位,由于低位是C,大于9,所以加06h,结果变为A2h,再看高位,高位A,大于9,所以加60h,变为02h,CF = 1(有进位)
adc al,40h
adc操作,02h + 40h + CF = 43h daa
此时43h低高位都小于9,所以无变化。最后结果43h,也即C的ASCII码67
本文档为【如何把一位16进制的数转换成对应的ASCII码 2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。