Функция «Hello World» без использования C printf
ОБНОВЛЕНО
Это мой второй день работы сNASM
, После полного понимания этого
section .programFlow
global _start
_start:
mov edx,len
mov ecx,msg
mov ebx,0x1 ;select STDOUT stream
mov eax,0x4 ;select SYS_WRITE call
int 0x80 ;invoke SYS_WRITE
mov ebx,0x0 ;select EXIT_CODE_0
mov eax,0x1 ;select SYS_EXIT call
int 0x80 ;invoke SYS_EXIT
section .programData
msg: db "Hello World!",0xa
len: equ $ - msg
Я хотел обернуть этот материал внутри функции сборки. Все (или большинство) примеров в Интернете используютextern
и звонитprintf
функцияC
(см. код ниже) - и я не хочу этого. Я хочу научиться создавать функцию "Hello World" в сборке без использованияC
printf
(или даже другие внешние вызовы функций).
global _main
extern _printf
section .text
_main:
push message
call _printf
add esp, 4
ret
section .data
message: db "Hello, World", 10, 0
Обновить
Я занимаюсь сборкой для Linux, но так как у меня нет Linux-бокса, я запускаю свой ассемблерный код здесьcompile_assembly_online.