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

  1. Instruções de rotação
  2. ROL
  3. ROR

As instruções de rotação são utilizadas para rotacionar todos bits, em uma posição, à direita ou à esquerda de um valor em memória ou do registrador acumulador com uso da flag Carry. As flags N, Z e C são afetadas 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
>>> Rotação para a direita
<<< Rotação para a esquerda
<- Atribuição
Acc. Acumulador
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.

ROL rotaciona todos bits, em uma posição, à esquerda. O bit 0 recebe o valor da flag Carry e o bit 7 é deslocado para a flag Carry. Para rotacionar mais de um bit, é necessário utilizar várias instruções.

Operação
Bit 0 <- Carry anterior
Carry <- Bit 7
A <- A <<< 1 / (M) <- (M) <<< 1
F(Flags)
N: M[bit 7] após rotação / A[bit 7] após rotação
V: -
B: - 
D: -
Z: (M) == 0 ? 1 : 0 / A == 0 ? 1 : 0  após rotação
C: M[bit 7] na rotação / A[bit 7] na rotação
Endereçamento
Implícito/Acc. ROL
Página Zero ROL $NN
Página Zero,X ROL $NN,X
Absoluto ROL $NNNN
Absoluto,X ROL $NNNN,X
Tab.10: Flags X/C e valor 8-bits
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
0 1* 0 0 0 0 0 0 1
Tab.11: valor 8-bits rotacionado 1 bit à esquerda
C Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
1* 0 0 0 0 0 0 1 1
Ex:
LDA #$01
ROL

ROR rotaciona todos bits, em uma posição, à direita. O bit 7 recebe o valor da flag Carry e o bit 0 é deslocado para a flag Carry. Para rotacionar mais de um bit, é necessário utilizar várias instruções.

Operação
Bit 7 <- Carry anterior
Carry <- Bit 0 na rotação
A <- A >>> 1 / (M) <- (M) >>> 1
F(Flags)
N: M[bit 7] após rotação / A[bit 7] após rotação
V: -
B: - 
D: -
Z: (M) == 0 ? 1 : 0 / A == 0 ? 1 : 0 após rotação
C: M[bit 7] na rotação / A[bit 7] na rotação
Endereçamento
Implícito/Acc. ROR
Página Zero ROR $NN
Página Zero,X ROR $NN,X
Absoluto ROR $NNNN
Absoluto,X ROR $NNNN,X
Tab.2: Flags X/C e valor 8-bits
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
1** 0 0 0 0 0 0 1* 0
Tab.3: valor 8-bits rotacionado 1 bit à direita
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C
0 1** 0 0 0 0 0 0 1*
Ex:
LDA #$01
ROR
  1. 11/05/2026 - revisão 3 - Ajustes: objetivos, intro(flag Carry); Adição: como setar flags
  2. 11/09/2024 - revisão 2 - adição de tabelas com exemplos e flags afetadas
  3. 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
  4. 28/04/2023 - versão inicial