何时在汇编中将-h / -H附加到十六进制数字的规则?

时间:2012-01-11 16:52:52

标签: assembly x86 hex dos

编辑:我问了一下,显然我的错误是这样的:我们通常在MS-DOS上的特殊debug.exe环境中编辑我们的8086汇编代码。这个特定的环境确实默认为十六进制数,但8086的其他汇编器默认为十进制。


在编写汇编语言时(例如,对于英特尔8086),我们可以将数字表示为3F或3FH,或者表示为16或16H,因为所有数字都默认为十六进制表示法。

根据我的经验,就汇编程序而言,两种表示形式之间没有真正的区别:它与两者都很愉快,即使是混合的。

我的问题是:对于何时或何时不在数字后附加-h / -H,有没有严格的规定?

我可以看到它可以帮助防止因看到我们通常认为是十进制的数字而产生的混淆(对于开始汇编程序员),如在我的16和16H示例中,其中16实际上是十进制的十六进制22 - 我自己被这个错误多次咬了。但清晰度真的是唯一的标准吗?

3 个答案:

答案 0 :(得分:2)

是的,有严格的规则,应该在汇编程序的文档中提及它们(通常在名为“Numeric literals”的部分中)。说实话,我从未遇到过默认为十六进制的汇编程序;几乎所有这些都默认为十进制。语法可以遍布地图;十六进制最常见的符号是[0] dddh和0xddd,但有时你也可以使用h'ddd,$ ddd或16_ddd。

答案 1 :(得分:1)

我不相信所有的汇编程序都假设所有数字常量都是十六进制的,所以它不仅仅是为了清晰,而且是为了便携性。

答案 2 :(得分:0)

在MS DOS中,使用debug作为汇编代码的编译器,即使你没有在值之后放置H,它也会将值读为HEX。