我是汇编语言的新手,我正在使用nasm汇编程序开展工作。 我收到了这个我无法解决的错误:
错误:尝试在任何非本地标签之前定义本地标签
在该计划的第1行:
.data
hello: db "hello world"
.code
..start
MOV AX,hello
MOV DS,AX
MOV AH,09h
INT 21h
.exit
end
我该如何解决?
答案 0 :(得分:1)
您的代码有一些错误:变量 hello 不需要冒号,单词开始有两个点不对,您试图访问该变量没有初始化数据段,显示字符串的代码就不会这样做。
任何汇编程序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)。
接下来是变量的数据段。
代码段需要初始化数据段,否则您将无法访问变量。之后,您添加了所有代码,但永远不要忘记正确完成程序。在底部,您可以添加您的程序。
在程序中有一个标签和声明它的语法:label-name后跟冒号,以及显示变量的正确方法。
希望这会对你有所帮助。
抱歉,我忘记了:我使用的是EMU8086编译器。
另一个编辑:注意'hello'末尾的'$'符号,这是你用这种方式显示的任何字符串所必需的。如果你忘了它,也会显示奇怪的字符。