如何在程序集中进行十进制到十六进制的转换



我试图找出十进制中的12345如何在十六进制中产生0x39 0x30。有人能解释一下吗?自从开始组装已经有一段时间了。建议的帖子帮助了我一点,但没有一个例子来说明这是如何工作的。

.hword 0xAA55, 12345 ; inserts the bytes 0x55 0xAA 0x39 0x30

给定hword一次处理16位,12345如何给出十六进制的结果?

对于64位的值是否相同?只是用0xFF填充?

@dwelch -非常感谢。

汇编语言与这些有什么关系?没有。

127秒是多少分钟?你是怎么算出来的?每分钟60秒,对吧?127/60 = 2.116666....对吧?2余7,127秒等于2分7秒

4000秒是多少小时,分钟,秒?60秒每分钟,60分钟每小时,所以3600秒每小时,从最大的占位符开始,4000/3600等于1余400,所以1小时400秒。400秒/60等于6余40。所以4000秒等于1小时6分40秒。

我们在小学学过怎么做,对吗?从十进制到60进制的转换。这和十进制到十六进制有什么区别?它不是。

注意,个位是10的0次方,十位是10的1次方,百位是10的2次方,以此类推。秒是60的0次方,分钟是60的1次方,小时是60的2次方。

12345小数。十六进制占位符是多少?16的0次方等于1,16的1次方等于16,16的2次方等于256,16的3次方等于4096,16的4次方等于65536。12345比65536小,比4096大所以我们从这里开始,12345/4096 = 3余57。也就是16的3次方,也就是0x3xxx。57/256 = 0余数57所以是0x30xx。57/16 = 3余数9所以12345d = 0x3039.

则臂端为小端序,因此字节在内存中被替换为0x39,0x30。

如果将参数转换为十六进制,则更有意义(12345是0x3039):

.hword 0xAA55, 0x3039 ; inserts the bytes 0x55 0xAA 0x39 0x30

当您考虑到机器的端序时,0xAA55 0x3039变成了命名的55 aa 39 30。

最新更新