"Hello, World!" на ассемблере
Ничего нового не скажу, просто хотелось бы опубликовать простое упражнение, которое выполняли сегодня на курсах: набрать в текстовом редакторе исходник на ассемблере по образцу и откомпилировать. Всё это в среде Linux.
Компилируем, линкуем, запускаем:
Источник.
section .text
global _start ;декларируется для линкера (ld)
_start: ;точка входа
mov edx,len ;длина выводимого сообщения ("Hello, World!")
mov ecx,msg ;указатель на сообщение
mov ebx,1 ;файловый дескриптор (stdout - это тоже какбэ файл)
mov eax,4 ;номер системного вызова (sys_write)
int 0x80 ;обращаемся к ядру
mov eax,1 ;номер системного вызова (sys_exit)
int 0x80 ;обращаемся к ядру
section .data
msg db 'Hello, world!',0xa ;выводимая на экран строка как массив байт
len equ $ - msg ;ее длина (вычисляется в момент компиляции)
Компилируем, линкуем, запускаем:
$ nasm -f elf hello.asm # эта команда создаст файл hello.o - объектный файл в формате ELF
$ ld -s -o hello hello.o # эта команда сформирует исполняемый файл
$ ./hello
Источник.