A arquitetura de memória flexível do Intel 8086 suporta 10 modos de endereçamento distintos, cada um calculando endereço efetivo (EA) diferentemente. Dominá-los é chave para programação assembly eficiente.
MOV AX, BX — Operando em registrador general-purpose (AX, BX, CX, DX, SI, DI, BP, SP). Mais rápido, sem acesso memória.
MOV AX, 1234H — Operando codificado na própria instrução. Usado para constantes.
MOV AX, [1234H] — Offset 16-bit na instrução; DS × 16 + offset = endereço físico. Localização memória fixa.
MOV AX, [BX] / [SI] / [DI] / [BP] — Registrador guarda offset. BP default para segmento SS; outros para DS.
MOV AX, [BX+10H] — Registrador base (BX/BP) + deslocamento 8/16-bit. Acessa estruturas, stack frames.
MOV AX, [SI+20H] — Registrador índice (SI/DI) + deslocamento. Ideal para indexação arrays.
MOV AX, [BX+SI] — Base + índice, sem deslocamento. Arrays bidimensionais, ops string.
MOV AX, [BX+SI+30H] — Base + índice + deslocamento 8/16-bit. Mais flexível; arrays de estruturas.
MOVSB / CMPSB / SCASB — DS:SI (source), ES:DI (dest). SI/DI auto-inc/dec por flag DF. Sem operandos na instrução.
JMP SHORT LABEL / JNE LABEL — Deslocamento signed 8/16-bit adicionado a IP. Usado para jumps/calls.
CLC / NOP / HLT — Operandos implícitos no opcode. Sem cálculo endereço.
| Modo | Segmento Default | Prefixo Override |
|---|---|---|
| Baseado em BP ([BP], [BP+SI], [BP+DI]) | SS | CS, DS, ES, SS |
| Todos outros (BX, SI, DI, direct) | DS | CS, ES, SS |
| String destination (ES:DI) | ES | Não pode override |
EA = (Base? + Índice? + Deslocamento?) mod 64 KB. Físico = Segmento × 16 + EA.
Escolher modo certo reduz bytes instrução, ciclos, e pressão registradores — crítico para constraints apertados do 8086.
Tecnologia Eletrônica © [www.351231.com]