编译简单程序集时出错

时间:2017-01-07 21:05:57

标签: assembly x86 nasm

我正在学习asm,现在看到了一个脚本,但我无法编译它:

section .text
    global _start       ;must be declared for using gcc
_start:                     ;tell linker entry point
    mov     edx, [ebp+input_file]
    mov     eax, [edx+8]
    movsx   ecx, word ptr [eax]
    push    ecx
    mov     edx, [ebp+input_file]
    mov     eax, [edx+8]
    push    eax
    mov     ecx, [ebp+var_8]
    mov     edx, [ecx+2748h]
    push    edx
    call    memcpy
    int     0x80        ;call kernel
    mov     eax, 1      ;system call number (sys_exit)
    int     0x80        ;call kernel

section .data

当我使用:

编译此代码时
nasm -f elf *.asm; ld -m elf_i386 -s -o demo *.o

我得到了这个结果:

  

错误:操作数>后预期的逗号,冒号,装饰器或行尾。
  ld:找不到* .o:没有这样的文件或目录

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

ptr不是NASM中定义的关键词。只需删除它(在第6行),您的代码将编译:

movsx   ecx, word [eax]