“fh”后缀对英特尔汇编中的“38fh”这个数字意味着什么

时间:2016-06-09 08:32:59

标签: assembly x86 intel

我在网上搜索过,但我找不到“fh”在以下说明and eax, 38fh中的含义。我知道“h”代表十六进制,“d”代表十进制,但我以前从未见过fh。

1 个答案:

答案 0 :(得分:4)

如果英特尔汇编程序(即 MASM )令牌以数字(0到9)开头,则假定整个令牌是一个值。如果值以h结束,则汇编程序假定它是 H exadecimal。

在您的情况下,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'小写。