Неправильная комбинация кода операции и ошибки операндов
Я пытаюсь написать программу, которая берет двоичный ввод из текстового файла и отправляет его в качестве параметра в функцию сборки. Эта функция сборки должна выводить этот двоичный ввод на экран. Входные данные отправляются из кода 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