Com o 65C02 foram adicionadas as instruções : BBR, BBS, BRA, PHX, PLX, PHY, PLY, SM, RMB, STZ,
TRB e TSB.
STZ - Store Zero in Memory:
A instrução STZ armazena o valor 00h em um endereço de memória. Nenhuma flag é atualizada por
essa instrução.
Operação
[M] <- 00h
Endereçamento
| Absoluto |
STZ $NNNN |
| Absoluto,X |
STZ $NNNN,X |
| Página Zero |
STZ $NN |
| Página Zero,X |
STZ $NN,X |
Flags
-
Ex:
LDA #$FF
STA $00
;$00 <- FFh
STZ $00
;$00 <- FFh
BBR - Branch on Bit Reset
A instrução BBR verifica se um bit de um valor contido em um endereço de memória na página
zero é igual a 0. Caso a verificação seja verdadeira, um branch relativo informado na instrução
é realizado.
Operação
Se M[Bit #x] = 0
PC <- PC + (+/-)RR
Se não
PC <- PC + 2
Endereçamento
| Página Zero Relativa |
BBR $NN, $RR |
Onde
x: Bit 0 a 7
NN: página zero
RR: byte sinalizado
Flags
-
Ex:
LDA #$7F
STA $00
BBR7 $00, local
;omitido
;
local:
BRK
BBS - Branch on Bit Set
A instrução BBS verifica se um bit de um valor contido em um endereço de memória na página zero
é igual a 1. Caso a verificação seja verdadeira, um branch relativo informado na instrução é
realizado.
Operação
Se M[Bit #x] = 1
PC <- PC + (+/-)RR
Se não
PC <- PC + 2
Endereçamento
| Página Zero Relativa |
BBS $NN, $RR |
Onde
x: Bit 0 a 7
NN: página zero
RR: byte sinalizado
Flags
-
Ex:
LDA #$80
STA $00
BBS7 $00, local
;omitido
;
local:
BRK
PHX - Push X on Stack
A instrução PHX salva o conteúdo do registrador X na pilha do 65C02.
Operação
(SP) <- X
SP <- SP - 2
Endereçamento
Onde
-
Flags
-
Ex:
LDX #$FF
PHX
;usar X
;restaurar X
PHY - Push Y on Stack
A instrução PHX armazena o valor contido no registrador X na stack.
Operação
(SP) <- Y
SP <- SP - 2
Endereçamento
Onde
-
Flags
-
Ex:
LDY #$FF
PHY
;usar Y
;restaurar Y
PLX - Pull X from Stack
A instrução PLX recupera o conteúdo armazenado no topo da pilha e armazena no registrador X.
Operação
SP <- SP + 2
X <- (SP)
Endereçamento
Onde
-
Flags
N : 1 se X[bit7] = 1. Caso contrário, 0
Z : 1 se X = 0. Caso contrário, 0
Ex:
LDX #$FF
PHX
;uso de X
PLX
PLY - Pull Y from Stack
A instrução PLY recupera o conteúdo armazenado no topo da pilha e armazena no registrador Y.
Operação
SP <- SP + 2
Y <- (SP)
Endereçamento
Onde
-
Flags
N : 1 se Y[bit7] = 1. Caso contrário, 0
Z : 1 se Y = 0. Caso contrário, 0
Ex:
LDY #$FF
PHY
;uso de Y
PLY
RMB - Reset Memory Bit x
A instrução RMB atribuí o valor 0 a um bit de um valor contido em um endereço de memória na
página zero.
Operação
M[Bit #0-7] = 0
Endereçamento
Onde
x: Bit 0-7
Flags
-
Ex:
LDA #$FF
STA $00
RMB7 $00
;($00) = 7Fh
SMB - Set Memory Bit x
A instrução SMB atribuí o valor 1 a um bit de um valor contido em um endereço de memória na
página zero.
Operação
M[Bit #0-7] = 1
Endereçamento
Onde
x: Bit 0-7
Flags
-
Ex:
LDA #$7F
STA $00
SMB7 $00
;($00) = FFh
TRB - Test And Reset Memory Bits With Accumulator
A instrução TRB testa e reseta os bits de um valor em um endereço de memória usando o
registrador A como “máscara” para resetar os bits desejados.
Operação
resultado <- [M] & NOT(A)
[M] <- resultado
Endereçamento
| Absoluto |
TRBx $NN |
| Página Zero |
TRBx $NN |
Onde
x: 0-7
[M]: contéudo em memória
NOT: operação lógica NOT
Flags
Z: 1 se [M]= 00h. 0, caso contrário
Ex:
LDX #$FF
STX $00
LDA #$F0
TRB $00
TSB - Test And Set Memory Bits Accumulator
A instrução TRB testa e seta bits de um valor em um endereço de memória usando o registrador
A como "máscara" para setar os bits desejados.
Operação
resultado <- [M] | A
[M] <- resultado
Endereçamento
| Absoluto |
TRBx $NN |
| Página Zero |
TRBx $NN |
Onde
x: 0-7
[M]: contéudo em memória
Flags
Z: 1 se [M]= 00h. 0, caso contrário
Ex:
LDX #$0F
STX $00
LDA #$F0
TSB $NN