汇编(Intel语法+ NASM)错误:尝试在任何非本地标签之前定义本地标签

时间:2016-12-06 12:11:37

标签: assembly nasm 32-bit intel-syntax

关于程序集我很新,我正在尝试使用程序。因此,每当我尝试编译它时,我都会得到该行的错误,如代码中的注释所列。

我想知道当我为其余的汇编代码定义一些内容时,是否有人知道为什么NA​​SM会检测到这些错误?

也许它必须对主要定义方式做些什么?

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

2 个答案:

答案 0 :(得分:2)

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

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

所以你不能在任何全球标签之前拥有本地标签

答案 1 :(得分:2)

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

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

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

(这个问题没有提到Linux,但是the followup does)。