簡體   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