"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 ,这可能会导致某种形式的语法错误。人们可能有的问题 - 如果十六进制值以字母 AF 开头,我如何使用 h 后缀表示它?很简单,前面加个0就行了。这会起作用 and eax, 0f8h .

正如 Fifoernik 指出的那样 一个技巧是使用不同的大小写来突出后缀:38Fh。如果将 f 设为大写 ​​F 而将后缀字符 'h' 保留为小写,那么对于汇编新手来说可能更容易看到 f 是一个十六进制数字。