我正在学习8086的汇编语言,我想知道是否有续行字符,例如:
mov ah,\
09
mov dx,offset msg
int 21h
我曾经读过,'\'符号用于行继续,但是我在MASM中收到错误,因为'\'符号不起作用。
答案 0 :(得分:5)
在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编写的旧程序完全兼容。
无论如何,如果一位教练在考试中询问这种类型的语法esoterica,他们真的在问题方面刮到了底部。如果你对其他一切都了如指掌,以至于你很担心这一点,那么你就会为考试做好准备。