Aprender / Lição 13

INC, DEC e operações lógicas

Lição 13 de 13Iniciante8 min
Laboratório · 13 / 15

INC e DEC: um passo de cada vez

0 de 15 concluídos
Seu robô-guia

RAX começa com 5. Use só INC e DEC para fazer RAX chegar a 7.

Blocos

Seu programa

1 instrução
  1. 01 MOV
    mov rax, 5

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

INC RAX soma 1 e DEC RAX subtrai 1, sem precisar de origem. Duas vezes INC levam 5 a 7.

Este laboratório modela MOV, ADD, SUB, INC, DEC, AND, OR, XOR, CMP, saltos de igualdade e pilha. Os registradores começam sem valor; a aritmética usa 64 bits sem sinal (subtrair abaixo de zero dá a volta para um valor enorme). Só ZF é representada, e cada execução recomeça do início. Repetições param após 200 passos. A pilha aparece como uma lista simples. Não simula memória por endereço, outras flags, chamadas ao Linux ou um processador completo.

Consultar a lição completa
Entender melhor · INC, DEC e operações lógicas
O que você vai aprender

Somar e subtrair 1 com INC e DEC e usar AND, OR e XOR para trabalhar com bits.

Rascunho: um passo de cada vez

INC soma 1 a um registrador e DEC subtrai 1. Elas não precisam de origem: o próprio registrador é o destino. Assim como as outras contas, o resultado usa 64 bits sem sinal e atualiza ZF. Usar INC RAX é o mesmo que ADD RAX, 1, mas mais curto e direto. DEC RAX abaixo de zero dá a volta para o maior valor de 64 bits, como no SUB.

Rascunho: trabalhando com bits

AND, OR e XOR comparam dois valores bit a bit. AND mantém um bit ligado só quando ele está ligado nos dois; OR liga o bit se estiver ligado em qualquer um; XOR liga o bit quando eles são diferentes. Todas atualizam ZF: 1 se o resultado for zero. Um truque comum é XOR RAX, RAX: como cada bit é igual a ele mesmo, o resultado é sempre 0. Use o seletor BIN do laboratório para ver os bits mudando.

Um exemplo, passo a passo

Exemplo comentadox86-64 · Intel / NASM · Linux
; Trecho x86-64 · Intel / NASM · Linux
mov rax, 13   ; 1101 em binário
inc rax       ; 14
and rax, 3    ; mantém os dois bits mais baixos
xor rbx, rbx  ; zera RBX

Experimentar no laboratório

Entendendo cada passo

  1. RAX recebe 13, que em binário é 1101.
  2. INC soma 1: RAX passa a valer 14 (1110).
  3. AND com 3 (0011) mantém só os dois bits mais baixos: 1110 AND 0011 = 0010, ou seja, 2.
  4. XOR RBX, RBX zera RBX, e ZF liga.

Exercícios curtos

Previsão de resultado

Depois de mov rax, 6 e and rax, 3, quanto vale RAX?

Escolha uma resposta

Pratique no laboratório

O laboratório no topo desta página traz o desafio desta lição. Desafios que usam este conteúdo: INC e DEC: um passo de cada vez, AND: mantenha só alguns bits, XOR: zere sem digitar 0.

Para guardar

INC e DEC mudam um registrador em 1; AND, OR e XOR trabalham bit a bit, e todas atualizam ZF.

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

Para se aprofundar

Esta lição é uma explicação didática e simplificada. Para conferir os detalhes e ir além, consulte as fontes oficiais: