读书人

十六进制有关问题

发布时间: 2012-03-11 18:15:38 作者: rapoo

十六进制问题
从键盘输入一个数(十进制),将其转换为十六进制后输出在显示屏上。
请大家给出转换的算法和代码
我觉得无规律可寻
0---9 0---9
10--15 A---F
16--25 10--19
26--31 1A--1F
....
谢了!

[解决办法]
提示:
1、首先可以造一十十六的映射表:
table db 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
2、根接收字符串的中的字符行循操作,(例子如入的十是26,用除16取余法分得到十六的各位。)
1).26/16=1 余10 ah=10送bx,然后再mov dl,[bx]、xor dh,dh取得十六最低位,然后
2).1/16=0 余1 ah=1送bx,同可用mov dl,[bx]、xor dh,dh取得十六次低位;
然后
3).循出示即可以屏幕上看到由十26後的十六1A
3、在第2中用到了div指令,於div指令的LZ自己看!


[解决办法]
楼上的说的已经非常详细了:

(1)输入一个数十进制(无符号)将其转换为十六进制的方法是:将十进制数除以16, 保留余数作为当前位十六进制数字的值,重复这个过程直到商为0为止.
(2)如果是有符号的十进制转换为十六进制:则首先将十进制整数的绝对值转换为十六进制,再进一步计算该十六进制数字的补码.(关于补码你查一书就知道了.)

楼上所说的:
( '2 '-30H)*10~1=20

'2 '-30H这是因为数字0的ASCII值为30H,1-9的ASCII值是依次递增的.数字2的ASCII值为32H,
32-30就得到了数字2.


读书人网 >汇编语言

热点推荐