Menu
Coddy logo textTech

Juntando Tudo

Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 39 de 45.

Você aprendeu todas as quatro partes da syscall write:

RegistradorO que ele contémValor para saída na tela
raxNúmero da syscall1 (write)
rdiDescritor de arquivo1 (stdout)
rsiEndereço do bufferEndereço da sua string
rdxContagem de bytesComprimento da sua string

Agora é hora de juntar tudo.

O padrão completo da syscall write:

mov rax, 1          ; número da syscall para write
mov rdi, 1          ; descritor de arquivo (stdout)
mov rsi, msg        ; endereço da string
mov rdx, msgLen     ; número de bytes para imprimir
syscall             ; solicita ao SO para imprimir

Um programa completo e funcional:

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

O que este programa faz:

PassoO que acontece
1Imprime "Hello, World!" na tela
2Move para uma nova linha
3Encerra corretamente com o código 0

A ordem importa:

Você deve configurar os registradores antes de executar syscall. A ordem das instruções mov não importa, desde que todas as quatro estejam configuradas antes de syscall.

challenge icon

Desafio

Escreva um programa completo que imprima a mensagem "Assembly is fun" seguida por uma nova linha, e então saia de forma limpa.

A string e seu comprimento já estão definidos. Você só precisa escrever o código dentro de _start:.

Experimente você mesmo

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

section .text
    global _start

_start:
    ; TODO: Configurar e chamar a syscall write
    ; Use rax=1, rdi=1, rsi=msg, rdx=msgLen

    ; TODO: Sair de forma limpa com o código 0
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos