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

  1. Instruções de rotação
  2. RLC
  3. RRC
  4. RAL
  5. RAR

As instruções de rotação são utilizadas para rotacionar todos bits em uma posição à direita ou à esquerda de uma valor contido no Acumulador(A) apenas. As flags Carry(Cy), Sign, Parity e Zero são afetada por essas instruções com base no resultado.

Notação utilizada:
#$NN Valor hexadecimal imediato
#$NNNN; Endereço hexadecimal imediato
$NNNN Endereço hexadecimal
$NN ou h Valor hexadecimal
; Comentário
>> Deslocamento à direita
<< Deslocamento à esquerda
<- Atribuição
Acc. Acumulador
Cy Carry
M Endereço 16-bits contido em HL
Flags
a Alterada de acordo com resultado
- Não sofre alteração
0 Sempre zero
1 Sempre um

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

Com a instrução RLC, podemos rotacionar o registrador Acumulador em 1-bit à esquerda. O bit mais significativo, bit 7 de A, é armazenado na Carry e também é armazenado no bit 0.

Como a rotação é feita apenas em uma unidade de bit, várias instruções devem ser utilizadas para rotacionar mais bits de acordo com o necessário.

C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
- 1* 0 0 0 0 0 0 1**
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1* 0 0 0 0 0 0 1** 1*
Operação
Cy <- A(Bit 7)
A <- A << 1
A(Bit 0) <- Cy
Endereçamento
Implícito RLC
F(Flags)
S: A[Bit 7]
Z: A == 0 ? 1 : 0
Ac:- 
P: #num bits 1 de A  == par ? 1 : 0
Cy: A[Bit 7] ; antes da rotação
Ex:
MVI A, #$01
RLC

Com a instrução RRC podemos rotacionar o registrador Acumulador em 1-bit à direita. O bit menos significativo, bit 0 de A, é armazenado na Carry e também é armazenado no bit mas significativo bit 7.

Como a rotação é feita apenas em uma unidade de bit, várias instruções devem ser utilizadas para rotacionar mais bits de acordo com o necessário.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
1* 0 0 0 0 0 0 1** -
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
1** 1* 0 0 0 0 0 0 1**
Operação
lead">Cy <- A(Bit 0)
A <- A >> 1
A(Bit 7) <- Cy
Endereçamento
Implícito RRC
F(Flags)
S: A[Bit 7]
Z: A == 0 ? 1 : 0
Ac:- 
P: #num bits 1 de A  == par ? 1 : 0
Cy: A[Bit 0] ; antes da rotação
Ex:
MVI A, #$02
RRC

Com a instrução RAL podemos rotacionar o registrador Acumulador em 1-bit à esquerda utilizando a Carry. O bit mais significativo, bit 7 do registrador A, é transferido para a flag Cy e a Cy anterior é transferida para bit menos significativo, bit 0.

Como a rotação é feita apenas em uma unidade de bit, várias instruções devem ser utilizadas para rotacionar mais bits de acordo com o necessário.

C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1*** 0* 0 0 0 0 0 0 1**
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0* 0 0 0 0 0 0 1** 1***
Operação
Cy_anterior <- Cy
Cy <- A(Bit 7)
A <- A << 1
A(Bit 0) <- Cy_anterior
Endereçamento
Implícito RAL
F(Flags)
S: A[Bit 7]
Z: A == 0 ? 1 : 0
Ac:- 
P: #num bits 1 de A  == par ? 1 : 0
Cy: A[Bit 7] ; antes da rotação
Ex:
MVI #$EF
SFC ; Cy <- 1
RAL

Com a instrução RAR podemos rotacionar o registrador Acumulador em 1-bit à direita utilizando a flag Carry. O bit menos significativo, bit 0, do registrador A é transferido para flag Carry, e a Carry anterior é transferido para o bit mais significativo, bit 7 do acumulador.

Como a rotação é feita apenas em uma unidade de bit, várias instruções devem ser utilizadas para rotacionar mais bits de acordo com o necessário.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
1* 0 0 0 0 0 0 0** 1***
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
1*** 1* 0 0 0 0 0 0 0**
Operação
Cy_anterior <- Cy
Cy <- A(Bit 0)
A <- A >> 1
A(Bit 7) <- Cy_anterior
Endereçamento
Implícito RAR
F(Flags)
S: A[Bit 7]
Z: A == 0 ? 1 : 0
Ac:- 
P: #num bits 1 de A == par ? 1 : 0
Cy: A[Bit 0] ; antes da rotação
Ex:
MVI #$EE
SFC ; Cy <- 1
RAR
  1. 12/05/2026 - revisão 5 - Ajustes: objetivos, intro e sintaxes; Adição: como setar as flags
  2. 18/02/2025 - revisão 4 - adição de exemplos ilustrativos
  3. 13/12/2024 - revisão 3 - correção em operações/descrição de RAL e RAR; ajustes pontuais
  4. 30/08/2024 - revisão 2 - correção em erros gramaticais, adição de flags afetadas
  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