nasm - error: attempt to define a local label before any non local labels
nasm - error: attempt to define a local label before any non local labels
我是汇编语言的新手,我正在使用 nasm 汇编器进行研究。
我收到无法解决的错误:
error: attempt to define a local label before any non-local labels
在该程序的第 1 行:
.data
hello: db "hello world"
.code
..start
MOV AX,hello
MOV DS,AX
MOV AH,09h
INT 21h
.exit
end
我该如何解决?
您的代码有一些错误:变量 hello 不需要冒号,带有两个点的单词 start 不正确,您试图在不初始化数据段的情况下访问变量,显示字符串的代码不会执行此操作。
任何 x86 汇编程序都需要基本结构才能运行,然后您可以添加更多代码、过程等。接下来是基本结构:
.stack 100h
.data
my_variable db 'hello$'
.code
;INITIALIZE DATA SEGMENT.
mov ax,@data
mov ds,ax
call my_procedure
;FINISH.
mov ax,4c00h
int 21h
proc my_procedure
mov dx,offset my_variable
mov ah,9
int 21h
my_label:
ret
endp
首先你有堆栈,在本例中为 256 字节 (100h)。
接下来是变量的数据段。
代码段需要初始化数据段,否则您将无法访问您的变量。之后添加所有代码,但永远不要忘记正确完成程序。在底部你可以添加你的程序。
在程序中有一个标签和声明它的语法:标签名称后跟冒号,以及显示变量的正确方式。
希望对您有所帮助。
抱歉,我忘了:我用的是EMU8086编译器。
另一个编辑:注意 'hello' 末尾的“$”符号,对于以这种方式显示的任何字符串都是必需的。如果忘记了,也会显示奇怪的字符。
我是汇编语言的新手,我正在使用 nasm 汇编器进行研究。 我收到无法解决的错误:
error: attempt to define a local label before any non-local labels
在该程序的第 1 行:
.data
hello: db "hello world"
.code
..start
MOV AX,hello
MOV DS,AX
MOV AH,09h
INT 21h
.exit
end
我该如何解决?
您的代码有一些错误:变量 hello 不需要冒号,带有两个点的单词 start 不正确,您试图在不初始化数据段的情况下访问变量,显示字符串的代码不会执行此操作。
任何 x86 汇编程序都需要基本结构才能运行,然后您可以添加更多代码、过程等。接下来是基本结构:
.stack 100h
.data
my_variable db 'hello$'
.code
;INITIALIZE DATA SEGMENT.
mov ax,@data
mov ds,ax
call my_procedure
;FINISH.
mov ax,4c00h
int 21h
proc my_procedure
mov dx,offset my_variable
mov ah,9
int 21h
my_label:
ret
endp
首先你有堆栈,在本例中为 256 字节 (100h)。
接下来是变量的数据段。
代码段需要初始化数据段,否则您将无法访问您的变量。之后添加所有代码,但永远不要忘记正确完成程序。在底部你可以添加你的程序。
在程序中有一个标签和声明它的语法:标签名称后跟冒号,以及显示变量的正确方式。
希望对您有所帮助。
抱歉,我忘了:我用的是EMU8086编译器。
另一个编辑:注意 'hello' 末尾的“$”符号,对于以这种方式显示的任何字符串都是必需的。如果忘记了,也会显示奇怪的字符。