gpt4 book ai didi

assembly - MASM (8086) 汇编语言行延续

转载 作者:行者123 更新时间:2023-12-02 21:40:00 28 4
gpt4 key购买 nike

我正在学习8086的汇编语言,我想知道是否有续行符,例如:

    mov ah,\
09
mov dx,offset msg
int 21h

我曾经读过,“\”符号用于行继续,但我在 MASM 中收到错误,因为“\”符号不起作用。

最佳答案

MASM 5.1 中引入了行继续字符。它是单个反斜杠字符 (\),并且必须作为行上的最后一个非空格字符放置。这本质上与您在问题中建议的语法相同,将单个逻辑行分解为两个或多个物理行。

从 MASM 6.1(可能是 6.0;我找不到该版本的手册副本)开始,您可以在续行反斜杠之后放置注释。这些被有效地视为空白,允许您编写如下代码:

mov ah,  \          ; continue onto the next line
09
mov dx, offset msg
int 21h

但我同意评论者的观点——这不太可能提高代码的可读性。我已经用汇编语言编写了很多代码,但从未发现有必要这样做。汇编语言助记符太短了,我无法想象为什么即使保持 80 列宽度,也会出现指令空间不足的情况。

另请注意,在 MASM 6.1 中,初始值设定项中的尾随逗号意味着该行继续到下一行。因此,以下声明是合法的:

EvenNumbers DB  02h, 04h, 06h, 08h,
0Ah, 0Ch, 0Eh, 0Fh

OutputStr DB "Hello ",
"world!"

这是唯一一个可以换行到第二行的地方,并且不需要繁琐的语法即可支持它。

此版本还将每行的最大字符数从 128 提高到 512。确实没有理由使用早于 6.1 的 MASM 版本。即使您需要编译分段的 DOS 程序,MASM 6.1 也能做到,并且与 MASM 5.1 编写的旧程序完全兼容。

无论如何,如果讲师在考试中询问这种类型的句法深奥问题,他们在问题方面确实是在摸底。如果您对其他所有事情都很了解,以至于担心这一点,那么您就能顺利通过考试。

关于assembly - MASM (8086) 汇编语言行延续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41585136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com