繁体   English   中英

MASM (8086) 汇编语言行延续

[英]MASM (8086) assembly language line continuation

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

无论如何,如果教师在考试中询问这种句法秘诀,他们真的是在问问题。 如果您对其他一切都非常了解以至于担心这一点,那么您将通过考试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM