Неправильная комбинация кода операции и ошибки операндов

Я пытаюсь написать программу, которая берет двоичный ввод из текстового файла и отправляет его в качестве параметра в функцию сборки. Эта функция сборки должна выводить этот двоичный ввод на экран. Входные данные отправляются из кода c в код сборки по его адресу.

Когда я пытаюсь собрать свой ASM-файл, я получаю сообщение об ошибке "Недопустимая комбинация кода операции и операндов" на mov msg, [esp+8] линия. Я хочу скопировать мой char аргумент из стека к моей статической переменной. Почему это не действительная инструкция?

Полный код:

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

1 ответ

Решение

Интересно, что вы пытались сделать в этой строке:

mov msg, [esp+8]

Но вы не можете movиз памяти в память. Обратитесь к этой странице, например.

Если вы хотите переместить что-то из памяти в память, используйте регистр в качестве временного хранилища. Например:

mov eax, [var1]
mov [var2], eax
Другие вопросы по тегам