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

  1. Instruções de Deslocamento
  2. ASL
  3. LSR

As instruções de deslocamento são utilizadas para deslocar todos bits em uma posição à direita ou à esquerda de um valor em memória ou acumulador. Apenas 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
| Concatenação
>> Deslocalmento para a direita
<< Deslocalmento 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.

A instrução ASL desloca todos bits, em uma posição, à esquerda. O bit 0 recebe o valor 0 e o Bit 7 é armazenado na flag Carry. Para deslocar mais de um bit, é necessário utilizar várias instruções.

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

A instrução LSR desloca todos bits, em uma posição, à direita. O Bit 7 recebe o valor 0 e o bit 0 é armazenado na flag Carry. Para deslocar mais de um bit, é necessário utilizar várias instruções.

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