3

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

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

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

PS我只列出了代码的第一部分,因为程序很长。

感谢您的帮助

.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
4

2 回答 2

3

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

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

所以你不能在任何全局标签之前有一个本地标签

于 2016-12-06T12:16:28.253 回答
2

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

NASM 没有ASSUME,因此您可以 100% 确定这不是 NASM 代码。


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

(这个问题没有提到Linux,但后续有)。

于 2016-12-08T16:01:24.073 回答