ADD AH,'A'-'0'-10 为啥是65-48-10?不是应该41-30-10吗?
如题,没明白,只能求教大家了
1. 有这样的指令集?//可能RISC有吧
ADD AH,'A'-'0'-10
->
ADD AH,'A'
SUB AH,'0'
SUB AH,10
2. 看看关于常用进制转换方面的书
'A' 字符A的ASCII码 0x41(16进制)=4*16+1=65(10进制)
'0' 字符0的ASCII码 0x30(16进制)=3*16+0=48(10进制)
10 如果是0x10(16进制)=16,如果是0x0A(16进制)=10(10进制)
计算的时候按同种单位来算,不要混算
'A'-'0'-10 按照10进制来计算:65-48-10=7
'A'-'0'-10 按照16进制来计算:0x41-0x30-0x0A=0x07=7
3. 根据你的计算可以猜测
你是为了按16进制的方式显示数字
'0'~'9'的ASCII码为0x30~0x39
'A'~'F'的ASCII码为0x41~0x46
0~9很简单,直接加0x30就行了
而10以上,直接加的话
10+0x30=0x0A+0x30=0x3A是显示不了'A'的
那么根据ASCII表的布局,再多加7
0x3A+7=0x41,是'A'的ASCII,B~F以此类推.