汇编二进制转十六进制为什么要加07h

 我来答
百度网友dd2a4ae
推荐于2018-03-29 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1627万
展开全部
这是十六进制数转成显示时使用的ASCII码时的处理中的一个问题。

十六进制数使用0~F共16个字符表示。

我们知道,“0”这个字符的ASCII码值是30H,“1”这个字符的ASCII码值是31H,…… ,“9”这个字符的ASCII码值是39H。当某一位十六进制的数的值在0~9范围内的时候,将这个数的“值”转成它显示的“字”,即转成ASCII码,只需要加30H即可。
比如,一个字节存储的数为05H,加上30H后变成35H,就是“5”这个字符了。

十六进制数所用的字符中除了“0” ~ “9”这几个数字字符外,还有“A” ~“F”这几个字母。字母转换时的处理要求与数字不一样。
当一个字节存储的数为0AH的时候,要转成字母“A”,需要加上37H,才能得到“A”的ASCII码值 41H。
同样的,0BH要转成“B”(42H),也要加上37H。

也就是说,0-9的值转成对应的数字字符,要加30H。A-F的值转成对应的字母,加了30H还不够,还需要再加上一个 7 ,结果才对。

所以,对一个00H ~0FH之间的数,要用十六进制格式显示,就这么处理:
1. 不管它需要用数字表示还是字母表示,先加上30H再说。
2. 加过30H以后,检查它是不是“0” ~ “9”之间,是的话就只需要用数字表示,可以直接送去显示了。
3. 若加过30H以后的结果在“9”(39H)以上,说明是字母。它们的值是在3AH ~3FH范围内。对它们,再加上一个 7 ,就可以变成 41H("A") ~ 46H("F"),这样送去显示也就对了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式