nasm - 错误:尝试在任何非本地标签之前定义本地标签

时间:2015-03-18 16:45:27

标签: assembly x86 nasm

我是汇编语言的新手,我正在使用nasm汇编程序开展工作。 我收到了这个我无法解决的错误:

  

错误:尝试在任何非本地标签之前定义本地标签

在该计划的第1行:

.data
hello:  db  "hello world"   
.code
..start
    MOV AX,hello        
    MOV DS,AX
    MOV AH,09h
    INT     21h
.exit
end

我该如何解决?

1 个答案:

答案 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
  1. 首先你有堆栈,在这种情况下,256字节(100h)。

  2. 接下来是变量的数据段。

  3. 代码段需要初始化数据段,否则您将无法访问变量。之后,您添加了所有代码,但永远不要忘记正确完成程序。在底部,您可以添加您的程序。

  4. 在程序中有一个标签和声明它的语法:label-name后跟冒号,以及显示变量的正确方法。

  5. 希望这会对你有所帮助。

    抱歉,我忘记了:我使用的是EMU8086编译器。

    另一个编辑:注意'hello'末尾的'$'符号,这是你用这种方式显示的任何字符串所必需的。如果你忘了它,也会显示奇怪的字符。