2016-06-09 20 views
3

我在網上搜索了所有內容,但在以下指令and eax, 38fh中找不到「fh」的含義。我知道「h」代表十六進制,「d」代表十進制,但我從來沒有見過fh。「fh」後綴在英特爾彙編中的「38fh」等數字上的含義

+2

這是數字* 3f8 *十六進制。以* h *結尾的文字以十六進制指定數字。 * 3f8h *爲十進制* 1016 *。 –

+0

當然!這對我來說很愚蠢......謝謝:) –

+1

不客氣。你並不孤單,例如我輸錯了數字,實際上是38f而不是3f8 :) –

回答

5

如果英特爾彙編程序(即MASM)令牌以數字(0到9)開頭,則假定整個令牌都是一個值。如果值以h結尾,則彙編程序假定它是H exllcimal。

在您的情況下,38fh以數字開頭,因此它被假定爲一個值。在你的情況下令牌的結尾是h(或H),所以它被視爲十六進制數字。因此38f被視爲十六進制值。 f恰好是一個有效的十六進制數字。 38f是十進制的911和二進制的1110001111。

如果您有像f8h這樣的令牌,則會出現問題。因爲它以一個字母開頭(不是數字0到9),它將被視爲一個標識符或符號。如果顯示爲and eax, f8h,這可能會導致某種形式的語法錯誤。問題可能有 - 如果十六進制值以字母A開頭F如何使用h後綴代表它?很簡單,只需在前面放置一個0即可。這將工作and eax, 0f8h

由於Fifoernik指出一招是使用不同的資本,使後綴脫穎而出:38Fh。對於一個新來的人來說,彙編程序可能會更容易發現f是一個十六進制數字,如果它被作成大寫F而留下後綴字符'h'小寫。