>> Tecnologia Eletrônica >  >> Áudio Residencial >> Amplificadores

Modos de Endereçamento do 8086 Assembly: Referência Completa (7 Modos)

O Intel 8086 suporta 7 modos de endereçamento primários para acessar operandos em memória ou registradores. Cada um determina como o endereço efetivo (EA) é calculado.

Os 7 Modos de Endereçamento

1. Endereçamento por Registrador

  • Operando no registrador. Sem acesso à memória.
  • Exemplos: MOV AX, BX, ADD CL, DH, INC SI.
  • Mais rápido (sem cálculo EA, sem ciclo barramento).

2. Endereçamento Imediato

  • Operando codificado na instrução. Dado constante.
  • Exemplos: MOV AX, 1234H, ADD BL, 42, CMP CX, 0FFFFH.
  • Imediato 8-bit ou 16-bit; extensão de sinal para ops 8-bit para 16-bit.

3. Endereçamento Direto (Absoluto)

  • Endereço efetivo = deslocamento de 16 bits na instrução. Sem registradores.
  • Exemplo: MOV AX, [1234H] → carrega word no offset 1234H no DS atual.
  • Codificação: opcode + modrm (mod=00, r/m=110) + disp16.

4. Endereçamento Indireto por Registrador

  • Endereço efetivo em registrador base/índice: BX, SI, DI, ou BP.
  • Exemplos: MOV AX, [BX], MOV [SI], CL, ADD [DI], 5.
  • BP default para segmento SS; outros usam DS.

5. Endereçamento Baseado (Base + Deslocamento)

  • EA = BX ou BP + deslocamento 8/16-bit.
  • Exemplos: MOV AX, [BX+10H], MOV [BP-2], DX.
  • Usado para: campos de estrutura, stack frames (BP), base array + offset.

6. Endereçamento Indexado (Índice + Deslocamento)

  • EA = SI ou DI + deslocamento 8/16-bit.
  • Exemplos: MOV AL, [SI+20H], MOV [DI-4], BX.
  • Usado para: acesso elemento array (índice em SI/DI, base em disp).

7. Endereçamento Base-Indexado (Base + Índice + Deslocamento)

  • EA = BX/BP + SI/DI + deslocamento 8/16-bit. Quatro combinações:
  • [BX+SI], [BX+DI], [BP+SI], [BP+DI] (+ disp opcional).
  • Exemplos: MOV AX, [BX+SI+100H], ADD [BP+DI-6], CL.
  • Usado para: arrays 2D (linha em BX, coluna em SI), stack frames com arrays locais.

Defaults de Registradores de Segmento

Registrador BaseSegmento PadrãoPrefixo Override
BX, SI, DIDSCS:, ES:, SS:, FS:, GS: (386+)
BPSSDS:, ES:, CS: (raro)

Cálculo do Endereço Efetivo (Modo Real)

Endereço Físico = (Segmento × 16) + Endereço Efetivo

Segmento = DS (padrão) ou override. EA dos modos 3–7 acima.

Notas de Codificação (Byte ModR/M)

  • mod (2 bits): 00=mem sem disp, 01=mem disp8, 10=mem disp16, 11=registrador.
  • reg (3 bits): registrador operando.
  • r/m (3 bits): modo endereçamento memória / registrador.
  • Modos 4–7 usam mod ≠ 11 com códigos r/m específicos (ex.: r/m=000 → [BX+SI]).

Bônus: 80386+ Adiciona

  • Indexado Escalado: [base + index*scale + disp], scale = 1,2,4,8.
  • Registradores 32-bit: EAX, ESI, EBP, ESP (com byte SIB).
  • Segmentos FS/GS.
  • RIP-relativo (x86-64): [RIP + disp32] — código independente de posição.

Conclusão: Os 7 modos do 8086 cobrem acesso escalar, array, struct e stack. Domine [BX+SI+disp] e [BP+disp] — são os cavalos de batalha para estruturas de dados e stack frames.