操作码和操作数组合无效错误

Nop*_*ope 4 x86 assembly nasm

我正在尝试编写一个程序,该程序从文本文件中获取二进制输入并将其作为参数发送给汇编函数。该汇编函数必须将此二进制输入打印到屏幕上。输入通过其地址从 C 代码发送到汇编代码。

当我尝试汇编 asm 文件时,出现“操作码和操作数的无效组合”错误mov msg, [esp+8]。我想将我的chararg 从堆栈复制到我的静态变量。为什么这不是有效的指令?

完整代码是:

segment .data
        len equ 31
segment .bss
        msg resb 0
segment .text
global sequence_generator

sequence_generator:

       push ebp
       mov ebp, esp
       mov msg, [esp+8]

       mov eax,4
       mov ebx,1
       mov ecx,msg
       mov edx,len
       int 80h

       pop ebp
       ret
Run Code Online (Sandbox Code Playgroud)

Rus*_*nov 6

我想知道您在这一行中尝试过做什么:

mov msg, [esp+8]
Run Code Online (Sandbox Code Playgroud)

但你不可以mov从一个记忆到另一个记忆。例如,请参阅此页面。

如果要将某些内容从内存移动到内存,请使用寄存器作为临时存储。例如:

mov eax, [var1]
mov [var2], eax
Run Code Online (Sandbox Code Playgroud)