assembly - "fh"后缀对于 Intel 汇编中的 "38fh"这样的数字意味着什么

标签 assembly x86 intel masm radix

我在网上搜索过,但我找不到以下指令和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 ,这可能会导致某种形式的语法错误。人们可能会遇到的问题 - 如果十六进制值以字母 AF 开头,我如何使用 h 后缀表示它?很简单,前面加个0就可以了。这可以工作 和 eax, 0f8h

正如 Fifoernik 指出的一个技巧是使用不同的大写字母来使后缀脱颖而出:38Fh。对于刚接触汇编程序的人来说,如果将 F 设为大写,同时将后缀字符“h”保留为小写,则可能会更容易看出 f 是一个十六进制数字。 .

关于assembly - "fh"后缀对于 Intel 汇编中的 "38fh"这样的数字意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720738/

相关文章:

c++ - 改进 AVX 中的非水平分配

macos - lldb 是否与 fortran 一起工作?

c++ - 相同的操作需要不同的时间

windows - sub 指令怎么可能导致无效指针读取?

assembly - 如何创建包含 'fake' 指令的 x86 二进制文件

macos - 关闭 6 核 Intel Xeon 中的超线程

intel - intel的TLB结构

c++ - 检查 __m128i 是否为零?

function - 为什么这个程序集产生 24 而不是 4?

x86 - 为什么这个为 NASM 编写的 'hello world' x86 引导加载程序代码在没有 [BITS 16] 和 [ORG 0x7C00] 指令的情况下工作?