Clique sobre os objetivos listados abaixo para navegar até o conteúdo desejado.

Com as instruções de movimentação podemos movimentar dados entre os registradores A, B, C, D, E, H, L ou memória via par HL(M). Nenhuma flag é alterada pelas intruções de movimentação.

As instruções de troca, são aquelas responsáveis pela troca de valores entres pares de registrados DE,HL e SP. Nenhuma flag é alterada pelas intruções de troca.

Notação utilizada
M Endereço de memória
<- Atribuição
<-> Troca de valores
; Comentário
R Registradores 8-bits
P Registradores BC(B), DE(D) e HL
M Endereço contido em HL
#$NNNN Endereço 16-bits
() conteúdo de endereço

Mais informações sobre os registradores e flags podem ser vistas em Registradores e Flags.

A instrução MOV é utilizado para mover valores entre registradores e registrador para memória. Essa instrução utiliza apenas os registradores de 8 bits A, B, C, D, E, H e L.

Operação
R1 <- R2
(M) <- R
R <- (M)
Endereçamento:
Registrador MOV R1, R2
Indireto MOV M, R
Indireto MOV R, M
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MOV B,C ; 
MOV B,B
MOV H,L

A instrução MVI é semelhante a MOV, porém um valor imediato de 8-bits é movido para um um registrador de 8-bits de destino ou memória.

Operação
R <- #byte_imediato
ou
M <- #byte_imediato
Endereçamento:
Imediato MVI R, #$NN
Imediato MVI M, #$NN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MVI A,#$01
MVI C,#$00	

Utilizando a instrução LDA, podemos mover um valor 8-bits contido em um endereço de memória para o registrador A. Esse endereço é informado utilizando o endereçamento direto.

Operação
A <- ($NNNN)
Endereçamento:
Imediato LDA $NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
;...
LDA $FFFF	;Carrega A com valor contido em $FFFF

A instrução LDAX é semelhante a instrução LDA, porém os apenas os pares de registradores B(BC) e D(DE) são utilizados como endereço de memória para recuperar o valor de 8-bis que será transferido para o registrador A.

Operação
A <- (P)
Endereçamento:
Registrador LDAX P
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
LDAX B	; A <- (BC)
LDAX D	; A <- (DE)

Utilizando a instrução STA, podemos mover um valor 8-bits contido no registrador A para um endereço de memória.

Operação
($NNNN) <- A
Endereçamento:
Direto STA $NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:

MVI A,#$FF
STA $FFFF	;Carrega A com valor contido em $FFFF

A instrução STAX é semelhante a instrução STA, porém, apenas os pares de registradores B(BC) e D(DE) são utilizados como endereço de memória para armazenar um valor de 8-bits contido no registrador A.

Operação
(P) <- A
Endereçamento:
Registrador STAX P
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MVI A, #$FF 
STAX B; (BC) <- A
STAX D; (DE) <- A

A instrução LXI move um valor ou endereço de 16-bits para um dos registradores H(HL), B(BC) ,D(DE) e SP apenas.

Operação
P <- #$NNNN
SP <- #$NNNN
Endereçamento:
Imediato LXI P, #$NNNN
Imediato LXI SP, #$NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
LXI H,#$FFFF
LXI SP,#$FFFF

A instrução LHLD move um valor de 16-bits contido em um endereço de memória no par de registradores HL.

Operação
HL <- ($NNNN)
Endereçamento:
Direto Imediato LHLD $NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MVI A, #$01
STA $FFFE
MVI A, #$FF
STA $FFFF
LHLD $FFFE ; HL <- $01ff

Com a instrução SHLD, podemos mover ou armazenar um valor de 16-bits contido em HL(M) para um endereço de memória.

Operação
($NNNN) <- HL
Endereçamento:
Direto Imediato SHLD $NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MVI  H, #$01
MVI  L, #$FF
SHLD $FFFE ; (FFFE) <- 01ff

Fazendo uso da instrução XCHG, podemos trocar ou permutar os valores entre os pares de registradores D(DE) e HL apenas.

Operação
DE <-> HL
Endereçamento:
Implícito XCHG
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
LXI D,#$0001
LXI H,#$0002
XCHG

A instrução PCHL move o valor contido no registrador HL para o registrador Contador de Programa(PC). Essa instrução é utilizada para desviar o fluxo de execução do programa.

Operação
PC <- HL
Endereçamento:
Implícito PCHL
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
MVI H, #$01
MVI L, #$FF
PCHL    ; desvia p/ $01FF

A instrução PCHL faz a permuta entre de valores 16-bits entre o par de registradores HL com um valor 16-bits contido na pilha.

Operação
H <-> (SP + 1)
L <-> (SP)
Endereçamento:
Implícito XTHL
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
LXI B,#$AABB
PUSH B
LXI H,#$CCDD
XTHL
;HL = AABB
;(SP + 1) = DD
;(SP) = CC

A instrução LHLD carregar no par HL um valor 16-bits contido em um endereço de memória passado como argumento de forma imediata.

Operação
H <-> ($NNNN + 1)
L <-> ($NNNN)
Endereçamento:
Direto Imediato LDHL $NNNN
F(Flags)
S: -
Z: -
Ac: -
P: -
Cy:-
Exemplo:
LXI H, #$F000
MVI M, #$FE
INR L
MVI M, #$FF
LDHL $F000
;HL = FFFE
  1. 12/05/2026 - revisão 5 - Ajustes: objetivos, intro, descrições e sintaxes
  2. 18/03/2025 - revisão 4 - adição de instruções XTHL e LDHL
  3. 13/12/2024 - revisão 3 - correções, melhorias e ajustes pontuais
  4. 09/09/2024 - revisão 2 - correção em LDAX, STA, STAX e LXI
  5. 04/10/2023 - revisão 1 - adição de links, correção em layout, navegação e erro gramaticais
  6. 08/08/2023 - versão inicial