Objetivos
Instruções de Deslocamento
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.
ASL - Arithmetic Shift Left - Deslocamento do Aritmético à Esquerda
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
LSR - Logical Shift Right
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
Histórico de atualizações
- 11/05/2026 - revisão 4 - Ajustes: objetivos e intro; Adição: como setar flags
- 11/09/2024 - revisão 3 - adição de tabelas com exemplos e flags afetadas
- 30/08/2024 - revisão 2 - Correção em links de objetivos
- 04/10/2023 - revisão 1 - adição de links, correção em layout e navegação
- 28/04/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.