Aprender / Lição 6

Operações aritméticas

Lição 6 de 12Iniciante9 min
Laboratório · 06 / 12

Uma instrução depois da outra

Seu robô-guia

RAX guarda 10 e RBX guarda 4. Use RBX numa soma e depois subtraia para RAX terminar em 11.

Blocos

Seu programa

2 instruções
  1. 01 MOV
    mov rax, 10
  2. 02 MOV
    mov rbx, 4

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

Cada passo parte do resultado anterior: 10 + 4 = 14 e 14 − 3 = 11. RBX continuou com 4.

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 · Operações aritméticas
O que você vai aprender

Calcular uma sequência de adições e subtrações entre registradores.

O resultado fica no destino

ADD e SUB podem usar outro registrador como origem. Em ADD RAX, RBX, o novo valor de RAX é a soma dos valores anteriores de RAX e RBX. RBX não é alterado.

Faça uma pequena tabela com os valores após cada linha. Isso evita tentar resolver o programa inteiro de uma só vez. Não pule a inicialização dos registradores.

Números têm limites

Registradores têm tamanho fixo. Se um resultado ultrapassa os bits disponíveis, ele não cresce sem limite: a aritmética é limitada pela largura do operando. As flags (indicadores de estado) ajudam a identificar determinadas condições.

Neste primeiro exemplo, usamos valores positivos pequenos, sem ultrapassar esse limite. Números negativos podem ser representados por complemento de dois, uma convenção que será aprofundada em conteúdos futuros.

Um exemplo, passo a passo

Exemplo comentadox86-64 · Intel / NASM · Linux
; x86-64 · Intel / NASM · Linux
mov rax, 10   ; RAX = 10
mov rbx, 4    ; RBX = 4
add rax, rbx  ; RAX = 14, RBX continua 4
sub rax, 3    ; RAX = 11

Entendendo cada passo

  1. Inicializamos os dois registradores para não depender de valores desconhecidos.
  2. A soma usa RBX, mas escreve apenas em RAX.
  3. A subtração parte de 14 e chega a 11. RBX termina com 4.
Para guardar

Acompanhe cada instrução e mantenha separado o valor de cada registrador.

Revisão complementar

Finalidade da instrução

O que faz a instrução sub rax, 3?

Escolha uma resposta

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