Función "Hola mundo" sin usar C printf

ACTUALIZADO

Es mi segundo día trabajando conNASM. Después de entender esto a fondo

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

Quería envolver estas cosas dentro de una función de ensamblaje. Todos (o la mayoría de) los ejemplos en la web están usandoextern y llamandoprintf funcion deC (vea el código a continuación) - y no quiero eso. Quiero aprender a crear una función "Hello World" en el ensamblaje sin usarC printf (o incluso otras llamadas a funciones externas).

global  _main
extern  _printf

section .text
    _main:
        push    message
        call    _printf
        add     esp, 4
        ret
section .data
    message: db "Hello, World", 10, 0

Actualizar

Estoy practicando el ensamblado para Linux, pero como no tengo una caja de Linux, estoy ejecutando mi código de ensamblaje aquícompile_assembly_online.

Respuestas a la pregunta(3)

Su respuesta a la pregunta