2015-07-12 94 views
-2

我想弄清楚十進制12345如何在十六進制產生0x39 0x30。任何人都可以解釋嗎?自組裝以來已經有一段時間了。建議的帖子對我有點幫助,但沒有一個例子可以說明這是如何工作的。十進制到十六進制轉換在彙編中如何工作?

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

給定一次16位的hword處理,12345如何給出十六進制結果?

64位的值是否相同?剛剛用0xFF填充?

@dwelch - 非常感謝。

回答

1

彙編語言與這些有什麼關係?沒有。

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.這與十進制到16進制有什麼不同?它不是。

注意位置是10到電源0,十位是10到電源1,幾百到10電源2等等。秒爲60的電源0,分鐘的位置爲60的電源1,小時的位置爲60的電源2.

12345十進制。我們的16位佔位符是什麼? 16到電源0是1,16到電源1是16,16到電源2是256,16到電源3是4096,16到電源4是65536.12345小於65536並且大於4096所以我們從那裏開始,12345/4096 = 3剩餘57.因此,對於電源3位置或0x3xxx是16。 57/256 = 0,餘數57就是0x30xx。 57/16 = 3餘數9 so 12345d = 0x3039。

然後手臂是little endian,這樣byteswaps在內存中的0x39,0x30。

1

如果轉換的參數爲十六進制,它更有意義(12345 0x3039):

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

當你考慮到機器的字節順序,0xAA55將0x3039成爲命名55 AA 39 30。