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)。
我对程序集很陌生,我正在尝试使用一个程序。因此,每当我尝试编译它时,我都会收到该行的错误,如代码注释下所列。
我想知道是否有人知道为什么 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)。