FYDELISTECH

Construindo Defesas.

Explorando vulnerabilidades em sistemas Linux, Windows e Redes.

root@fydelistech: ~

$ Initializing security_protocol...

[ OK ] Systems online. Vulnerabilities mapped.

$ Transformando_vulnerabilidades._

# nmap -sV -Pn 192.168.0.1 # msfconsole -q

ContactForm1

Nome

Email *

Mensagem *

TECHNICAL_LOG //

TUTORIAL ASSEMBLY x86/x64 — VERSÃO ACADÊMICA PROFISSIONAL

Tutorial Assembly x86/x64 — Dia 2 | Adiel Santos Fontes

TUTORIAL ASSEMBLY x86/x64 — Versão Acadêmica Profissional

Autor: Adiel Santos Fontes
Linha: Cybernetic Systems Research / Fydelis Ecosystem
Data: Outubro de 2026 | Lote: Dia 2 — Páginas 13–20

Fundamentos Intermediário NASM / Linux x86 · x64

CAPÍTULO 4 — Movimentação, Aritmética e Lógica de Bits

4.1 Família MOV — Transferência de Dados

A instrução mais usada em todo o código. Não faz cálculos — apenas copia.

InstruçãoFormatoAçãoObservação
movmov dest, origdest ← origTamanho deve coincidir
movzxmovzx reg, fonteExpande com zerosSem sinal
movsxmovsx reg, fonteExpande preservando sinalCom sinal
xchgxchg a, bTroca a ↔ bSem variável temporária
lealea reg, [mem]reg ← endereço calculadoNão acessa memória!

Exemplos Práticos

; Movimento básico mov rax, 42 ; Imediato → registrador mov rbx, rax ; Registrador → registrador mov [buffer], al ; Registrador → memória (1 byte) ; LEA = cálculo rápido, sem acesso à memória lea rax, [rbx + rcx*4 + 10] ; rax = rbx + 4×rcx + 10
💡 Dica: lea calcula endereço sem ler a memória — é frequentemente usada para aritmética veloz!

4.2 Aritmética Inteira

InstruçãoAçãoAfeta Flags
add d, vd = d + vCF ZF SF OF
sub d, vd = d − vCF ZF SF OF
inc rr = r + 1ZF SF OF (preserva CF!)
dec rr = r − 1ZF SF OF (preserva CF!)
neg rr = −rTodas

4.3 Multiplicação e Divisão

⚠️ Atenção: Antes de div/idiv, rdx deve estar definido — zere com xor rdx, rdx para valores sem sinal!
; === MUL — Sem sinal === mov rax, 17 xor rdx, rdx ; ✅ obrigatório mov rcx, 5 div rcx ; rax = 3 (quociente), rdx = 2 (resto) ; === IDIV — Com sinal === mov rax, -17 cdq ; converte rax → rdx:rax automaticamente mov rcx, 5 idiv rcx ; rax = -3, rdx = -2

4.4 Lógica e Manipulação de Bits

InstruçãoEfeitoUso
andE bits a bitsIsolar/zerar bits
orOU bits a bitsAtivar bits
xorXOR bits a bitsInverter / zerar registrador
shl d, nDesloca esquerda n vezes× 2ⁿ
shr d, nDesloca direita (preenche 0)÷ 2ⁿ (sem sinal)
sar d, nDesloca direita preserva sinal÷ 2ⁿ (com sinal)
; Zerar registrador — forma mais eficiente xor rax, rax ; × 8 via deslocamento mov rax, 5 shl rax, 3 ; rax = 5 × 8 = 40

CAPÍTULO 5 — Controle de Fluxo: Comparações, Saltos e Laços

5.1 Flags — O Sistema de Decisão

Toda decisão condicional depende de flags atualizadas após instruções de cálculo/comparação.

FlagNomeAtiva quando
ZFZeroResultado = 0
SFSinalResultado negativo
CFCarryTransbordo (sem sinal)
OFOverflowTransbordo (com sinal)

5.2 Comparação e Tabela de Saltos

cmp a, b ; Faz a − b, atualiza flags e descarta resultado
InstruçãoSignificadoCondiçãoTipo
jeIgualZF = 1Geral
jneDiferenteZF = 0Geral
jgMaior queZF=0 E SF=OFCom sinal
jlMenor queSF ≠ OFCom sinal
jaAcimaCF = 0Sem sinal
jbAbaixoCF = 1Sem sinal
⚠️ Regra de ouro: Para contadores, endereços e tamanhos — valores sem sinal — use sempre ja/jb. Usar jg/jl causa erros silenciosos difíceis de rastrear!

5.3 Estrutura: SE-ENTÃO-SENÃO

; if (rcx > 10) { rdx = 1; } else { rdx = 2; } cmp rcx, 10 jle .menor_igual ; Salta se condição contrária mov rdx, 1 jmp .fim .menor_igual: mov rdx, 2 .fim:

5.4 Laços de Repetição

Laço Contado

; soma = 1+2+...+10 = 55 mov rcx, 1 xor rax, rax .laco: add rax, rcx inc rcx cmp rcx, 11 jne .laco

Laço com LOOP (forma compacta)

mov rcx, 10 ; contador fixo em RCX .laco: add rax, rcx loop .laco ; RCX--; se ≠0 → salta

5.5 Exercício Resolvido — Fatorial

; Entrada: RCX = n | Saída: RAX = n! fatorial: mov rax, 1 .ciclo: cmp rcx, 1 jle .fim mul rcx dec rcx jmp .ciclo .fim: ret

RESUMO — PÁGINAS 13–20

ConceitoDomínio Alcançado
Movimentaçãomov, lea, xchg, movzx, movsx
Aritméticaadd, sub, inc, dec, mul, imul, div, idiv
Lógica de Bitsand, or, xor, shl, shr, sar, rol
Decisãocmp + tabela completa de saltos condicionais
EstruturasSe-então-senão, laços contados, while, break
PráticaFatorial, conversão numérica, contagem de pares

⚠️ Armadilhas Comuns e Correções

ErroCausaCorreção
div dá valor lixordx não foi zeradoSempre xor rdx,rdx antes de dividir sem sinal
Laço roda infinitoCondição de parada inatingívelVerifique incremento e operador de comparação
Falha com valores grandesUsou jg em vez de jaContadores = sem sinal → ja/jb
Erro de montagem diretomov [mem1],[mem2] não existeUse registrador intermediário

📅 Próxima Etapa — Dia 3

  • Capítulo 6 — Manipulação de strings e blocos de memória (movsb, lodsb, stosb, rep)
  • Capítulo 7 — Pilha, quadros de função e convenção System V
  • Exercícios práticos: comprimento de string, inversão, comparação

FydelisTech
Cybernetic Systems Research · Fydelis Ecosystem
© 2026 Adiel Santos Fontes — Conteúdo educacional aberto

Comentários