"fh" 后缀在英特尔汇编中的“38fh”之类的数字上意味着什么
What does the "fh" suffix mean on a number like "38fh" in Intel assembly
我在网上找遍了,但我找不到"fh"在下面的指令and eax, 38fh
中的意思。我知道 "h" 代表十六进制, "d" 代表十进制,但我以前从未见过 fh。
如果 Intel 汇编程序(即 MASM)令牌以数字(0 到 9)开头,则假定整个令牌是一个值。如果该值以 h
结尾,则汇编程序假定它是 H 十进制。
在您的例子中,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' 保留为小写,那么对于汇编新手来说可能更容易看到 f
是一个十六进制数字。
我在网上找遍了,但我找不到"fh"在下面的指令and eax, 38fh
中的意思。我知道 "h" 代表十六进制, "d" 代表十进制,但我以前从未见过 fh。
如果 Intel 汇编程序(即 MASM)令牌以数字(0 到 9)开头,则假定整个令牌是一个值。如果该值以 h
结尾,则汇编程序假定它是 H 十进制。
在您的例子中,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' 保留为小写,那么对于汇编新手来说可能更容易看到 f
是一个十六进制数字。