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

  1. Instruções de rotação
  2. Instrução RLC
  3. Instrução RRC
  4. Instrução RAL
  5. Instrução 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. A flag Carry(CY) é afetada por essas instruções.

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 a 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, temp <- A(Bit 7)
A << 1
A(Bit 0) <- temp
Endereçamento
Implícito RLC
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:a
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,temp <- A(Bit 0)
A >> 1
A(Bit 7) <- temp
Endereçamento
Implícito RRC
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:a
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 Carry e a Carry 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 << 1
A(Bit 0) <- Cy anterior
Endereçamento
Implícito RAL
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:a
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 >> 1
A(Bit 7 <- Cy anterior
Endereçamento
Implícito RAR
F(Flags)
S: a
Z: a 
Ac:- 
P: a
Cy:a
Ex:
MVI #$EE
SFC ; Cy <- 1
RAR
  1. 18/02/2025 - revisão 4 - adição de exemplos ilustrativos
  2. 13/12/2024 - revisão 3 - correção em operações/descrição de RAL e RAR; ajustes pontuais
  3. 30/08/2024 - revisão 2 - correção em erros gramaticais, adição de flags afetadas
  4. 04/10/2023 - revisão 1 - adição de links, correção em layout, navegação e erro gramaticais
  5. 08/08/2023 - versão inicial