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

发布于 2024-12-25 23:59:15 字数 442 浏览 1 评论 0原文

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


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

根据我的经验,就汇编器而言,两种表示形式之间没有真正的区别:即使混合使用,它也能很好地与两者一起工作。

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

我可以看到,它可以帮助防止我们通常认为是十进制的数字所引起的混乱(对于初级汇编程序员来说),就像在我的 16 与 16H 示例中一样,其中 16 实际上是十进制 22 的十六进制 - 我我自己也曾多次被这个错误所困扰。但清晰度真的是唯一的标准吗?

EDIT: I asked around a bit, and apparently my mistake was this: we usually edit our 8086 Assembly code in a special debug.exe environment on MS-DOS. This particular environment indeed defaults to hexadecimal numbers, but other assemblers for 8086 default to decimal.


In writing Assembly language (e.g. for Intel's 8086), we can represent numbers either as 3F or 3FH, or as 16 or 16H, because all numbers default to hexadecimal notation.

In my experience there is no real difference between both representations as far as the Assembler is concerned: it works happily with both, even when mixed.

My question is: are there any strict rules on when or when not to append -h/-H after a number?

I can see that it can help to prevent the confusion (for beginning Assembly programmers) that would arise from seeing numbers we usually think of as decimal, as in my 16 vs. 16H example where the 16 is actually hexadecimal for decimal 22 -- I myself have been bitten by this error several times. But is clarity really the only criterion?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甚是思念 2025-01-01 23:59:15

是的,有严格的规则,并且应该在汇编器的文档中提及它们(通常在名为“数字文字”的部分中)。老实说,我从未遇到过默认为十六进制的汇编器;几乎所有这些都默认为十进制。语法可以是遍地开花;十六进制最常见的表示法是 [0]dddh 和 0xddd,但有时您也可以使用 h'ddd、$ddd 或 16_ddd。

Yes, there are strict rules and they should be mentioned in the documentation of your assembler (usually in a section named "Numeric literals"). To be honest, I've never encountered an assembler which defaults to hex; pretty much all of them default to decimal. The syntax can be all over the map; the most common notations for hex are [0]dddh and 0xddd, but sometimes you can also have h'ddd, $ddd or 16_ddd.

忘年祭陌 2025-01-01 23:59:15

我不相信所有汇编器都假设所有数字常量都是十六进制,所以它是一个好主意,不仅为了清晰,而且为了可移植性。

I don't believe all assemblers assume all numeric constants are in hex, so its a good idea not just for clarity, but for portability.

心是晴朗的。 2025-01-01 23:59:15

在 MS DOS 中,使用 debug 作为汇编代码的编译器,即使您没有在值后面添加 H,它也会将值读取为十六进制。

In MS DOS using debug as the compiler for your assembly code it will read values as HEX even if you don't put an H after the value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文