Imprimindo Duas Strings
Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 40 de 45.
Você já sabe como imprimir uma string. Mas e se você quiser imprimir duas strings separadas? Por exemplo, "Hello " e depois "World!"?
Você simplesmente chama a syscall write duas vezes — uma vez para cada string.
Como funciona:
; Primeira impressão
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall
; Segunda impressão
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscallExemplo:
section .data
first db 'Hello ', 0x0a
firstLen equ $-first
second db 'World!', 0x0a
secondLen equ $-second
section .text
global _start
_start:
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
mov rax, 60
mov rdi, 0
syscallSaída:
Hello World!
Por que imprimir duas strings em vez de uma?
| Motivo | Exemplo |
|---|---|
| Reutilização | Imprimir a mesma saudação com nomes diferentes |
| Flexibilidade | Imprimir mensagens diferentes com base em condições |
| Organização | Manter mensagens diferentes separadas na memória |
Você pode imprimir quantas strings quiser:
Basta repetir a syscall write para cada string.
Desafio
Você recebeu duas strings: partOne com o valor 'Good' e partTwo com o valor 'bye'. Ambas já possuem uma nova linha ao final.
Escreva o código para imprimir partOne e depois partTwo para que a saída mostre:
Good
bye
A seção de dados e a syscall de saída já foram fornecidas. Você só precisa escrever as duas syscalls de escrita.
Experimente você mesmo
section .data
partOne db 'Good', 0x0a
partOneLen equ $-partOne
partTwo db 'bye', 0x0a
partTwoLen equ $-partTwo
section .text
global _start
_start:
; TODO: Imprimir partOne usando a syscall write
; TODO: Imprimir partTwo usando a syscall write
mov rax, 60
mov rdi, 0
syscall
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
1A Máquina
O que é CPUMemóriaRegistradores vs MemóriaComo as instruções funcionamPadrão de Dois ArquivosA Arquitetura x86-64