Assembly MASM(8086)汇编语言行延拓

Assembly MASM(8086)汇编语言行延拓,assembly,x86,masm,x86-16,Assembly,X86,Masm,X86 16,我正在学习8086的汇编语言,我想知道是否有行延续字符,例如: mov ah,\ 09 mov dx,offset msg int 21h 我曾经读过一篇文章,在行继续中使用了“\”符号,但我在MASM中遇到了一个错误,因为“\”符号不起作用。行继续字符是在MASM 5.1中引入的。它是单个反斜杠字符(\),必须作为行中最后一个非空格字符放置。这与您在问题中提出的语法基本相同,将一条逻辑线拆分为两条或多条物理线 从MASM 6.1(可能是6.0;我找不到该版本的

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


无论如何,如果一个老师在考试中问起这种句法上的深奥,他们真的是在问问题。如果你对其他事情都非常了解,以至于对此感到担忧,那么你就要通过考试了。

行继续通常是用我所知道的编程语言完成的,而不是汇编语言(尽管我只与lc3进行过交互)。至少对于lc3来说,这是你做不到的。我还建议不要这样做,因为这样做不会使代码更具可读性。谢谢gabeio回答我的问题,我也同意这样做不会使代码更具可读性,但我马上就要考试了,我想知道这件事,以防老师问我这件事,这样我就知道该说什么了,我想我会确切地告诉他你所说的,它不会使代码更具可读性:D.
\
延续应该在
MASM 6.0
+中工作,并且肯定在
NASM
中工作。不清楚您使用的是什么版本。。。可能会在你的问题中包含这些信息。我正在使用版本5,我会在谷歌上搜索更新的版本,如果你有MASM 6.0+的链接,请将其放在评论中:),非常感谢:)