MASM(8086)汇编语言行延续



我正在学习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编写的旧程序完全兼容。

无论如何,如果一位老师在考试中询问这种类型的语法深奥知识,他们真的是在问问题。如果你对其他一切都很了解,以至于对此感到担忧,那么你就可以通过考试了

最新更新