我在网上搜索过,但我找不到以下指令和eax, 38fh
中的“fh”的含义。我知道“h”代表十六进制,“d”代表十进制,但我以前从未见过 fh。
最佳答案
如果英特尔汇编程序(即 MASM)标记以数字(0 到 9)开头,则假定整个标记是一个值。如果值以 h
结尾,汇编器假定它是 H 十进制。
在您的情况下 38fh
以数字开头,因此假定它是一个值。在您的情况下,标记的结尾是 h
(或 H
),因此它被视为十六进制数字。因此 38f
被视为十六进制值。 f
恰好是一个有效的十六进制数字。 38f
十进制为 911,二进制为 1110001111。
如果您有像 f8h
这样的 token ,就会出现问题。因为它以字母(而不是数字 0 到 9)开头,所以它将被视为标识符或符号。如果它显示为 and eax, f8h
,这可能会导致某种形式的语法错误。人们可能会遇到的问题 - 如果十六进制值以字母 A 到 F 开头,我如何使用 h
后缀表示它?很简单,前面加个0就可以了。这可以工作 和 eax, 0f8h
。
正如 Fifoernik 指出的一个技巧是使用不同的大写字母来使后缀脱颖而出:38Fh。对于刚接触汇编程序的人来说,如果将 F
设为大写,同时将后缀字符“h”保留为小写,则可能会更容易看出 f
是一个十六进制数字。 .
关于assembly - "fh"后缀对于 Intel 汇编中的 "38fh"这样的数字意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720738/