Assembly (Intel syntax + NASM) Error: attempt to define a local label before any non-local labels

Assembly (Intel syntax + NASM) Error: attempt to define a local label before any non-local labels

我对程序集很陌生,我正在尝试使用一个程序。因此,每当我尝试编译它时,我都会收到该行的错误,如代码注释下所列。

我想知道是否有人知道为什么 NASM 在我为其余汇编代码定义一些东西时检测到这个错误?

也许这与 main 的定义方式有关?

P.S。由于程序很长,我只列出了代码的第一部分。

感谢您的帮助

.xlist               ;attempt to define a local label before any non-local labels
include  stdlib.a     ;  parser: instruction expected
includelib stdlib.lib    ; parser: instruction expected
.list
.286

dseg            segment para public 'data' 
;  Unknown section attribute 'public' ignored on declaration of section `para'
h               word    ?
i               word    ?

cseg            segment para public 'code'
                assume  cs:cseg, ds:dseg

Main

在NASM中,以点开头的标签称为本地标签。它附加到最后一个全局标签,例如,

L:
.l2: ; it is really L.l2

因此您不能在任何全局标签之前使用本地标签

那根本不是 NASM 代码。正如@Jester 所说,它可能是 TASM 或 MASM。

NASM doesn't ASSUME,因此您可以 100% 确定这不是 NASM 代码。


这也绝对不是 Linux 代码。注意 .286 指令。这意味着它将是 16 位代码。即使您将语法转换为 NASM,生成的二进制文件也不会在您的 Linux 系统上做任何有用的事情。

(本题没有提到Linux,而是the followup does)。