Я следую этим видеоурокам на языке ассемблера.Я в основном пытаюсь проработать пример "Привет, мир".Вот что у меня есть:
.data
str:
.ascii "Hello World"
.text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $str, %ecx
movl $11, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
Это компилируется просто отлично, но когда я запускаю его, текст не выводится на терминал.Понятия не имею, что я делаю не так.Какое бы значение я ни поместил в регистр ecx, ничего не изменится, ничего не произойдет.
Кроме того, другой вопрос, как работает системный вызов при вызове инструкции int 0x80?Некоторые данные были перемещены в регистры, но когда мы попадаем в системный вызов, он не «использует» ни одно из этих значений.Идет ли он и получает то, что было перемещено в эти регистры самостоятельно?
Некоторая системная информация, которая может быть полезна:
dominic-@-freebsd-9 ~/dev/asm/tutorial > uname -a
FreeBSD freebsd-9 5.5-RELEASE FreeBSD 5.5-RELEASE #0: Tue May 23 14:58:27 UTC 2006 root@perseus.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386