Ассемблер, 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 шт):

Автор решения: Илья К

ты размещаешь строку внутри исполняемого кода, в определённый момент процессор пытается "выполнить" ее как команду.

раздели секцию кода и секцию данных

как разделить ищи сам, это не сложно.

→ Ссылка
Автор решения: insolor

Скорее всего вы вытащили этот кусок кода из примера для DOS - об этом говорит то, что в нем используется прерывание int 21h. Даже если поправить другие проблемы в этом коде, программа с использованием такого прерывания не будет работать на современных операционных системах (без эмулятора).

За основу программ для SASM проще брать те примеры, которые идут вместе с этой IDE.

→ Ссылка