Menu
Coddy logo textTech

Integrando todo

Parte de la sección Fundamentos del Journey de Assembly de Coddy — lección 39 de 45.

Has aprendido las cuatro partes de la llamada al sistema (syscall) write:

RegistroLo que contieneValor para salida por pantalla
raxNúmero de syscall1 (write)
rdiDescriptor de archivo1 (stdout)
rsiDirección del búferDirección de tu cadena
rdxRecuento de bytesLongitud de tu cadena

Ahora es el momento de ponerlo todo junto.

El patrón completo de la syscall write:

mov rax, 1          ; número de syscall para write
mov rdi, 1          ; descriptor de archivo (stdout)
mov rsi, msg        ; dirección de la cadena
mov rdx, msgLen     ; número de bytes a imprimir
syscall             ; pedir al SO que imprima

Un programa funcional completo:

section .data
    msg db 'Hello, World!', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

Qué hace este programa:

PasoQué sucede
1Imprime "Hello, World!" en la pantalla
2Se mueve a una nueva línea
3Finaliza limpiamente con el código 0

El orden importa:

Debes configurar los registros antes de ejecutar syscall. El orden de las instrucciones mov no importa siempre que las cuatro estén configuradas antes de syscall.

challenge icon

Desafío

Escribe un programa completo que imprima el mensaje "Assembly is fun" seguido de una nueva línea, y luego finalice limpiamente.

La cadena y su longitud ya están definidas. Solo necesitas escribir el código dentro de _start:.

Pruébalo tú mismo

section .data
    msg db 'Assembly is fun', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    ; TODO: Configurar y llamar a la syscall write
    ; Usar rax=1, rdi=1, rsi=msg, rdx=msgLen

    ; TODO: Salir limpiamente con el código 0
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos