@nekolov

Может кто то подробно объяснить как работает данный NASM код?

Знающие люди подскажите максимально подробно как работает данный код. Буду рад если у кого то выйдет объяснить сложные вещи простыми словами.

Я не уверен что верно понимаю как происходит обращение к системным функциям посредством прерываний... у каждой функции есть свой h код? Предположу что так... следовательно аргументы в них передаются всегда заранее в четко определенные регистры посредством mov.

; секция определения переменных
SECTION .DATA
	hello:     db 'Hello world!',10
	helloLen:  equ $-hello

; Насколько я понял... точка входа
SECTION .TEXT
	GLOBAL _start 

_start:
	mov eax,4            ; 'write' system call = 4     если верно понял то вызываем api функцию для записи
	mov ebx,1            ; file descriptor 1 = STDOUT
	mov ecx,hello        ; string to write         записываем нашу строку в регистр ECX
	mov edx,helloLen     ; length of string to write   пишем длину нашей строки в регистр EDX
	int 80h              ; call the kernel    здесь все это выполняем посредством вызова необходимого прерывания?

	; Terminate program   заканчиваем программу
	mov eax,1            ; 'exit' system call          ; передаем аргументы в нашу будущую функцию? 
	mov ebx,0            ; exit with error code 0  ; передаем аргументы в нашу будущую функцию? 
	int 80h              ; call the kernel                ;вызываем нашу функцию посредством вызова необходимого прерывания?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev
software engineer
Вызов системной функции 80р - *nix syscall
https://syscalls.kernelgrok.com/

Передать нужно дескриптор открытого на запись файла, строку для записи, размер строки в символах.

В регистр eax устанавливаете номер функции (4 = sys_write)
В ebx дескриптор файла (в данном случае 1 - STDOUT, то есть вывод в консоль)
В ecx ссылка на строку
В edx - длина строки.

Строка выводится на экран.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы