Objetivos
Instruções de Rotação
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.
RLC - Rotacionar Acumulador à esquerda
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
F(Flags)
S: a
Z: a
Ac:-
P: a
Cy:a
Ex:
MVI A, #$01
RLC
RRC - Rotacionar Acumulador à direita
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
F(Flags)
S: a
Z: a
Ac:-
P: a
Cy:a
Ex:
MVI A, #$02
RRC
RAL - Rotacionar Acumulador à esquerda pela Carry
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
F(Flags)
S: a
Z: a
Ac:-
P: a
Cy:a
Ex:
MVI #$EF
SFC ; Cy <- 1
RAL
RAR - Rotacionar Acumulador à direita pela Carry
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
F(Flags)
S: a
Z: a
Ac:-
P: a
Cy:a
Ex:
MVI #$EE
SFC ; Cy <- 1
RAR
Histórico de atualizações
- 18/02/2025 - revisão 4 - adição de exemplos ilustrativos
- 13/12/2024 - revisão 3 - correção em operações/descrição de RAL e RAR; ajustes pontuais
- 30/08/2024 - revisão 2 - correção em erros gramaticais, adição de flags afetadas
- 04/10/2023 - revisão 1 - adição de links, correção em layout, navegação e erro gramaticais
- 08/08/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.