NASM无法声明初始化数据

时间:2017-10-22 18:50:11

标签: assembly nasm x86-64

出于某种原因,我无法编写nasm程序。如果我尝试在.data部分放置一些内容,则会出错: error: comma expected after operand 1(如果我声明了signle变量),或者 如果声明了数组,则error: parser: instruction expected

我的代码(包括libs,声明数据,返回0和ret):

%include "../asm64_io/asm64_io.inc"

segment .data
label dw 1000             ; word labeled L2 with initial value 1000
segment .bss
segment .text
global asm_main
asm_main:
enter 0,0
;
mov rax, 0 ; return 0
leave
ret

然后我用

编译
    nasm -f elf64 prog.asm -o prog.o
    gcc -o prog prog.o ../asm64_io/driver64.o ../asm64_io/asm64_io.o

我可以声明我是否不使用asm64并使用_start标签作为入口点。

asm64_io.inc:

extern  read_int, read_string, read_char
extern  print_int,  print_string, print_char
extern  println_int,  println_string, println_char, print_nl 
extern  sub_dump_regs, sub_dump_mem, sub_dump_math, sub_dump_stack
%macro  dump_regs 1
push      qword %1
call      sub_dump_regs
%endmacro

1 个答案:

答案 0 :(得分:3)

我发现我从手册中复制的文本中有一些不可见的Unicode字符,这些字符混淆了编译器。