Ассемблер, Program received signal SIGILL, Illegal instruction
Есть код на ассемблере nasm:
mov edx, hello
mov ah, 09h
hello db 'Hello world$'
int 21h
xor eax, eax
При запуске в SASM получаю ошибку Program received signal SIGILL, Illegal instruction конкретно на строке hello db 'Hello world$'. Пробовал менять местами её со строкой int 21h, но тогда ошибка кидалась на строку int 21h. Что мне поменять, или как вывести на экран строку в SASM?
p.s. Если ошибка очень тупая, не судите строго, пожалуйста, я такой-же тупой
Ответы (2 шт):
ты размещаешь строку внутри исполняемого кода, в определённый момент процессор пытается "выполнить" ее как команду.
раздели секцию кода и секцию данных
как разделить ищи сам, это не сложно.
Скорее всего вы вытащили этот кусок кода из примера для DOS - об этом говорит то, что в нем используется прерывание int 21h. Даже если поправить другие проблемы в этом коде, программа с использованием такого прерывания не будет работать на современных операционных системах (без эмулятора).
За основу программ для SASM проще брать те примеры, которые идут вместе с этой IDE.