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 uma
valor de 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
ou
A <- A << 1
F(Flags)
N: a
V: -
B: -
D: -
Z: a
C: a
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: a
V: -
B: -
D: -
Z: a
C: a
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/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.