Assembly 从寄存器到缓冲区的NASM MOV

Assembly 从寄存器到缓冲区的NASM MOV,assembly,syntax,nasm,Assembly,Syntax,Nasm,我在这里真的迷路了,因为无论我如何尝试这段代码,我都会得到操作码和操作数错误的无效组合。我已经在.bss中声明了一个缓冲区,但是我不能将一个值从寄存器移动到那个位置,我也不知道为什么 numArgs: resb 4 mov dword numArgs, [esp+4] 显然,我只是试图检索给定的命令行参数的数量。如果有更简单的方法,我洗耳恭听,但我特别关心的是为什么我不能将一个值移动到内存缓冲区。你不能像那样将内存移动到内存中。你必须这样做 mov eax,[es

我在这里真的迷路了,因为无论我如何尝试这段代码,我都会得到操作码和操作数错误的无效组合。我已经在.bss中声明了一个缓冲区,但是我不能将一个值从寄存器移动到那个位置,我也不知道为什么

    numArgs:     resb 4
    mov dword    numArgs, [esp+4]

显然,我只是试图检索给定的命令行参数的数量。如果有更简单的方法,我洗耳恭听,但我特别关心的是为什么我不能将一个值移动到内存缓冲区。

你不能像那样将内存移动到内存中。你必须这样做

mov eax,[esp+4]
mov [numArgs],eax
或:

push dword [esp+4]
pop dword [numArgs]