MASM (8086) 汇编语言行延续
MASM (8086) assembly language line continuation
我正在学习8086的汇编语言,想知道是否有续行符,例如:
mov ah,\
09
mov dx,offset msg
int 21h
我读过一次在行继续中使用了“\”符号,但我在 MASM 中遇到错误,因为“\”符号不起作用。
MASM 5.1 引入了换行符。它是一个反斜杠字符 (\
),并且必须放在该行的最后一个非 space 字符。这基本上与您在问题中建议的语法相同,将单个 logical 行分解为两个或多个 physical 行。
从 MASM 6.1(可能是 6.0;我找不到那个版本的手册副本)开始,您可以在续行反斜杠之后放置注释。这些被有效地视为白色space,允许您编写这样的代码:
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 编写的旧程序完全兼容。
无论如何,如果讲师在考试中问到 这种 类型的句法深奥知识,那么他们在问题方面确实是在摸底。如果你对其他一切都了如指掌以至于担心这一点,那么你将顺利通过考试。
我正在学习8086的汇编语言,想知道是否有续行符,例如:
mov ah,\
09
mov dx,offset msg
int 21h
我读过一次在行继续中使用了“\”符号,但我在 MASM 中遇到错误,因为“\”符号不起作用。
MASM 5.1 引入了换行符。它是一个反斜杠字符 (\
),并且必须放在该行的最后一个非 space 字符。这基本上与您在问题中建议的语法相同,将单个 logical 行分解为两个或多个 physical 行。
从 MASM 6.1(可能是 6.0;我找不到那个版本的手册副本)开始,您可以在续行反斜杠之后放置注释。这些被有效地视为白色space,允许您编写这样的代码:
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 编写的旧程序完全兼容。
无论如何,如果讲师在考试中问到 这种 类型的句法深奥知识,那么他们在问题方面确实是在摸底。如果你对其他一切都了如指掌以至于担心这一点,那么你将顺利通过考试。