Menu
CoddyTech

A Importância do Newline

Parte da seção Fundamentos do Journey de Assembly da Coddy. Lição 41 de 45.

Você tem adicionado 0x0a (quebra de linha) ao final das suas strings. Mas o que acontece se você esquecer?

Sem quebra de linha:

O texto é exibido, mas o cursor permanece na mesma linha. Qualquer saída futura aparecerá logo ao lado dele.

Exemplo sem quebra de linha:

section .data
    first db 'Hello'
    firstLen equ $ - first
    second db 'World'
    secondLen equ $ - second

section .text
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

Saída:

HelloWorld

Sem espaço. Sem quebra de linha. Tudo fica junto.

Com quebra de linha:

section .data
    first db 'Hello', 0x0a
    firstLen equ $ - first
    second db 'World', 0x0a
    secondLen equ $ - second

Saída:

Hello World

Cada string é exibida em sua própria linha.

O que a quebra de linha faz:

CaractereASCIIEfeito
0x0a10Move o cursor para o início da próxima linha

Erros comuns de quebra de linha:

ErroResultado
Nenhuma quebra de linhaO texto fica todo junto em uma única linha
Quebra de linha apenas no final da última stringAs strings anteriores ficam juntas, e a última passa para a linha seguinte
Quebra de linha no meio de uma stringQuebras de linha em lugares inesperados

A regra segura:

Sempre adicione 0x0a ao final de cada string que você quer em uma linha própria.

challenge icon

Desafio

Você recebe três strings sem quebras de linha. Sua tarefa é imprimi-las para que apareçam em três linhas separadas.

As strings são:

StringValor
word1'Apple'
word2'Banana'
word3'Cherry'

Requisitos:

  • Defina cada string com uma quebra de linha (0x0a) no final
  • Calcule automaticamente o comprimento de cada string
  • Imprima as três strings usando a chamada de sistema write
  • Encerre corretamente com o código 0

Experimente você mesmo

section .data
    ; TODO: Defina word1 com o 1º texto listado nas instruções e uma quebra de linha
    ; TODO: Defina word2 com o 2º texto listado nas instruções e uma quebra de linha
    ; TODO: Defina word3 com o 3º texto listado nas instruções e uma quebra de linha
    ; TODO: Calcule o comprimento de cada string

section .text
    global _start

_start:
    ; TODO: Imprima word1
    ; TODO: Imprima word2
    ; TODO: Imprima word3

    ; TODO: Encerre o programa corretamente
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

Pratique por conta própria: Playground de Assembly