Aprender / Lição 12

Desafio final: repetir e guardar

Lição 12 de 12Iniciante12 min
Laboratório · 12 / 12

Desafio final: repita e guarde

Seu robô-guia

Faça RAX contar de 0 até 3 com uma repetição e, no fim, copie o resultado para RBX.

Blocos

Seu programa

4 instruções
  1. 01 MOV
    mov rax, 0
  2. 02 RÓTULO
    inicio:
  3. 03 ADD
    add rax, 1
  4. 04 CMP
    cmp rax, 3

Resultado

PROCESSADORx86-64
RAX64 bits—
RBX64 bits—
RCX64 bits—

Aguardando suas instruções

ZF · indicador de zero—

Simulador didático · blocos equivalem a instruções Intel/NASM. Não executa Assembly nativo.

Entender melhor

Um destino, um salto para trás e uma comparação formaram a repetição. Ao parar, RBX recebeu a cópia de 3.

Este laboratório modela MOV, ADD, SUB, CMP, saltos de igualdade e pilha. Os registradores começam sem valor; a aritmética usa 64 bits sem sinal. Só ZF é representada, e cada execução recomeça do início. Repetições param após 200 passos. Não simula memória, outras flags, chamadas ao Linux ou um processador completo.

Consultar a lição completa
Entender melhor · Desafio final: repetir e guardar
O que você vai aprender

Combinar repetição, comparação e cópia para resolver um problema completo.

Juntando tudo o que você aprendeu

Neste desafio, você vai usar quase tudo: guardar um valor inicial, somar a cada volta, comparar com um limite, saltar de volta enquanto o limite não for alcançado e, no fim, guardar o resultado em outro registrador.

Uma repetição nasce de um destino marcado e de um salto para trás. Cada volta executa os mesmos passos. A comparação decide quando parar; sem ela, o programa nunca terminaria. O laboratório interrompe repetições longas demais.

Pensar antes de montar

Antes de montar, descreva o plano em português: começar em zero, somar um, verificar se chegou a três, voltar se ainda não chegou e, por fim, copiar o resultado. Esse plano evita tentativas às cegas.

Depois de executar, acompanhe o passo a passo. Conte quantas vezes a soma aconteceu e confira o valor de ZF a cada comparação. Se o resultado não for o esperado, ajuste um bloco por vez e tente de novo.

Um exemplo, passo a passo

Exemplo comentadox86-64 · Intel / NASM · Linux
; Trecho x86-64 · Intel / NASM · Linux
mov rax, 0
inicio:
    add rax, 1
    cmp rax, 3
    jne inicio
mov rbx, rax

Entendendo cada passo

  1. RAX começa em 0 e o rótulo inicio marca o começo da repetição.
  2. A cada volta, RAX aumenta 1 e é comparado com 3. JNE volta enquanto forem diferentes.
  3. Quando RAX chega a 3, ZF liga, o salto não acontece e RBX recebe uma cópia de 3.
Para guardar

Problemas maiores são resolvidos combinando instruções simples em um plano claro.

Revisão complementar

Previsão de resultado

Quantas vezes a instrução add rax, 1 é executada no exemplo?

Escolha uma resposta

Marcação opcional, salva apenas neste navegador. Clique novamente para desfazer.