2013-10-16 4 views
0

Je suis vraiment perdu ici, parce que je reçois une combinaison invalide d'opcode et d'erreurs d'opérande, peu importe comment j'essaie ce morceau de code. J'ai déclaré un tampon dans .bss, mais je ne peux pas déplacer une valeur à cet emplacement à partir d'un registre, et je n'arrive pas à comprendre pourquoi.NASM MOV de registre à tampon

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

Évidemment, je suis juste essayer de récupérer le nombre d'arguments de ligne de commande donnée. S'il y a un moyen plus facile de le faire, je suis tout ouïe, mais je suis particulièrement préoccupé par la raison pour laquelle je ne peux pas déplacer une valeur dans un tampon mémoire.

Répondre

2

Vous ne pouvez pas déplacer la mémoire vers la mémoire de cette manière. Vous aurez à faire

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

Ou:

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