Comparações e desvios
CMP: compare sem alterar
RAX guarda 5. Compare RAX com 5 e confira se o valor guardado mudou.
Blocos
Seu programa
1 instrução- 01 MOV
mov rax, 5
Resultado
Aguardando suas instruções
Simulador didático · blocos equivalem a instruções Intel/NASM. Não executa Assembly nativo.
Entender melhor
CMP faz uma subtração “de teste” e não guarda o resultado. RAX continua 5; ZF ligou porque eram iguais.
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 completaEntender melhor · Comparações e desvios
Entender como CMP e JE permitem escolher um caminho.
Escolhendo o próximo passo
Até aqui seguimos instruções em sequência. Um desvio muda qual instrução será executada em seguida. Um rótulo nomeia o destino desse desvio.
CMP compara dois operandos como uma subtração, mas não grava o resultado neles. Ela atualiza flags. A flag de zero, chamada ZF, é ativada quando os valores comparados são iguais.
Desviar quando for igual
JE significa “salte se igual”. Depois de CMP, JE consulta a flag de zero para decidir se vai ao rótulo. JMP é um salto incondicional: ele sempre muda o caminho.
Não coloque uma operação que modifica as flags entre CMP e o salto sem compreender o efeito. Aqui fazemos a comparação e o desvio um após o outro.
Um exemplo, passo a passo
; Trecho x86-64 · Intel / NASM · Linux
mov rax, 5
mov rbx, 0
cmp rax, 5
je igual
mov rbx, 1
jmp fim
igual:
mov rbx, 2
fim: ; fim do trecho, não encerra o processoEntendendo cada passo
- CMP encontra valores iguais e ativa ZF.
- JE segue para igual, pulando a atribuição de 1.
- RBX recebe 2. O rótulo fim apenas marca uma posição; não é a chamada exit.
Uma comparação produz indicadores; o salto condicional consulta esses indicadores.
Revisão complementar
Qual valor fica em RBX no fim do trecho?
Marcação opcional, salva apenas neste navegador. Clique novamente para desfazer.