Os modos de endereçamento representam a forma como os dados são recuperados pelo processador para processamento de uma instrução.

O 68K possui algumas formas de endereçamento que serão vistos nesta parte do tutorial. A compreensão total é importante para continuar os estudos do processador.

As intruções(opcodes) no 68K têm o tamanho de 16-bits. Dependendo do modo de endereçamento usado pela instrução esse tamanho pode mudar para 4, 6 ou 8 bytes.

Diferentes assemblers, tutoriais, e manuais podem utilizar suas próprias notações diferentes das apresentadas ao longo desta parte do tutorial.

Notação utilizada:
MNEMÔNICO Nome da instrução abreviado
#NNNNNN; Endereço hexadecimal imediato
.B Byte
.W Word
.L Longword
-> Atribuição
Dx,Dy D0-D7
Ax,Ay A0-A7
n Valor 0-7
nn Valor 16-bits sinalizado
$ Endereço de memória
| ou

No ME implícito, o mais básico dos endereçamentos, não há operandos para buscar. A própria instrução contém as informações necessárias para execução como registradores e flags, por exemplo.

Tab. 0
PC
word
opcode
Operação:
-
Sintaxe:
MNEMÔNICO
Ex:
;não faz nada
NOP

No ME imediato, um valor byte(n) , word ou Longword imediato faz parte da instrução. Tanto os registradores D0-7 quanto A0-7 utilizam esse modo.

Tab. 8
PC + 2
word byte
opcode n
Tab. 9
PC + 2
word word
opcode nn
Tab. 10
PC + 2
word lword
opcode nnnn
Sintaxe:
MNEMÔNICO.B #$valor,Dx ; $valor -> Dx
MNEMÔNICO.W #$n,Dx ; $valor -> Dx
MNEMÔNICO.L #$nnnn,Dx ; $valor -> Dx

MNEMÔNICO.W #$nn,Ax ; $valor -> Ax
MNEMÔNICO.L #$nnnn,Ax ; $valor -> Ax
Ex:
MOVE.L #$FFFFFF,D0
MOVEA.L #$C00000,A0

Para os registradores A0-7, as instruções específicas para cargar de valores nesses registradores estendem o sinal dos valores 16-bits. Apenas os primeiros 24-bits são usados como endereço ou ponteiro.

Para mover byte para um registrador A0, primeiro deve-se estender seu sinal para 32-bits. Algumas instruções estendem o sinal para mover dados para os registradores D0-7.

No ME Registrador, dois registradores são os operandos onde os valores necessários para execução da instrução são recuperados.

Tab. 1
PC
word
opcode
Operação:
R_origem -> R_origiem
Sintaxe:
MNEMÔNICO.B Dx,Dy ; Dx -> Dy
MNEMÔNICO.W Dx,Dy ; Dx -> Dy
MNEMÔNICO.L Dx,Dy ; Dx -> Dy
Ex:
MOVE.B D0,D1

No indireto, um valor byte , word ou Longword contido pelo endereço contido em A0-7 é acessado para ser usado pela instrução.

Tab. 2
PC
word
opcode
Sintaxe:
MNEMÔNICO.B (Ax),Dx ; (Ax) -> Dx
MNEMÔNICO.W (Ax),Dx ; (Ax) -> Dx
MNEMÔNICO.L (Ax),Dx ; (Ax) -> Dx
Ex:
MOVE.L (A7),D0 

No indireto com pós-incremento, um valor byte , word ou Longword contido pelo endereço em A0-7 é são utilizado pela instrução como o endereço da origem dos dados para realizar um instrução. Após o uso do valor, o registrador de endereço é incrementado de acordo com o tamanho do dado.

Tab. 2
PC
word
opcode
Sintaxe:
MNEMÔNICO.B (Ax)+,Dx|Ay ; (Ax)+ -> Dx|Ay
MNEMÔNICO.W (Ax)+,Dx|Ay ; (Ax)+ -> Dx|Ay
MNEMÔNICO.L (Ax)+,Dx|Ay ; (Ax)+ -> Dx|Ay
Ex:
MOVE.L (A7)+,D0 

No modo indireto com pré-decremento um endereço contido em A0-7 é decrementando, de acordo com o tamanho do dado, e assim um valor byte , word ou Longword contido nesse endereço é recuperado para ser usado pela instrução.

Tab. 4
PC
word
opcode
Sintaxe:
MNEMÔNICO.B -(Ax),Dx|Ay ; -(Ax) -> Dx|Ay
MNEMÔNICO.W -(Ax),Dx|Ay ; -(Ax) -> Dx|Ay
MNEMÔNICO.L -(Ax),Dx|Ay ; -(Ax) -> Dx|Ay
Ex:
MOVE.L -(A7),D0 

No indireto Indexado, um valor byte, word ou Longword contido no endereço A0-7 é indexado a um valor n(0-7), ou indexado com um registrador D0-7 para a instrução calcular o endereço para leitura ou escrita de dado.

Tab. 5
PC + 2
word byte
opcode n
Sintaxe:
1. MNEMÔNICO n(Ax),Dx
2. MNEMÔNICO n(Ax,Dx.L|.W),Dx
3. MNEMÔNICO n(Ax,Ay.L|.W),Dx

Em (2) e (3), quando usado com .W, o valor 16-bits(Entre -32768 e +32767) do registrador é tratado como sinalizado.

Ex:
MOVE.L 4(A0,A1.L),D7
MOVE.L -16(A0,A1.L),D7

No endereçamento absoluto, um valor imediato de 16-bits ou 32-Bits é utilizado como endereço de origem ou destino para leitura ou escrita de um dado em memória.

Tab. 6
PC + 2
word word
opcode nn
Tab. 7
PC + 2
word lword
opcode nnnn
Sintaxe:
MNEMÔNICO $nn,Dx
MNEMÔNICO $nnnn,Dx
Ex:
MOVE.L $F00000,D0

Nesse modo de endereçamento, o registrador PC é utilizado ao invés de um dos registradores A0-7. Um valor sinalizado é usado como índice pela instrução para leitura ou escrita de dado.

Tab. 8
PC + 2
word word
opcode nn
Sintaxe:
1. MNEMÔNICO nn(PC),Dx
2. MNEMÔNICO nn(PC,Dx.W|.L)
3. MNEMÔNICO nn(PC,Ax.W|.L)

Em (2) e (3), quando usado com .W, o valor 16-bits(-32768 a +32767) do registrador é tratado como sinalizado.

Ex:
MOVE.L $FFFF(PC),D0
  1. 12/03/2026 - Revisão 2 - Ajustes: intro, descrição de modos e ícone topo; Adição: tabelas
  2. 05/09/2024 - Revisão 1 - Correção de erros gramaticais, sintaxe de modo de endereçamento
  3. 01/04/2023 - versão inicial