Você está na página 1de 22

Instrues do Microcontrolador HC908Q

As instrues inerentes ao microcontrolador possuem algumas classificaes,


listadas abaixo:

Instrues de movimentao de dados para efetuar a carga, movimentao e
manipulao de dados;

Instrues de manipulao de bits para setar/apagar bits na memria ou no registrador
CCR (code condition register);

Instrues aritmticas e lgicas para realizar operaes matemticas ou lgicas;

Instrues de teste condicional e desvio para realizar testes e desvios no fluxo do
programa;

Instrues de controle do processador para o controle interno do processador.

A seguir, os comandos usados em cada classificao:


Instrues de movimentao de dados


LDA

Carrega um valor imediato ou da memria no acumulador (A).

Exemplos

LDA #5 ;Carrega A com o valor 5
LDA 128 ;Supondo que o contedo da posio 128 da memria igual $10,
tal comando carrega no Acumulador esse contedo, fazendo com que A=$10.

STA

Copia o contedo do acumulador (A) para a memria.

Exemplos

Considerando A=$50:
STA $80 ;Armazena o valor de A na posio $80 da memria
STA ,X ;Armazena o contedo do Acumulador na posio de memria
indicada por X:H.

LDX

Carrega um valor imediato ou da memria no registrador X.

Exemplos

LDX #5 ;Carrega X com o valor 5 decimal
LDX 128 ;Supondo que o contedo da posio 128 da memria $81, esse
comando carrega tal contedo ($81) em X.

STX

Armazena o contedo do registrador X numa posio especificada de memria.

Exemplos

STX $80 ;Considerando o valor de X igual a 40 ($40), tal comando armazena
na posio $80 da memria o valor de X, 40.

LDHX

Carrega um valor imediato ou da memria no par de registradores H:X.

Exemplos

LDHX #$1234 ;Carrega H:X com $1234 (H=$12 e X=$34)
LDHX 128 ;Supondo que o contedo da posio de memria 128 igual
a $F0 e 129 igual a $00, tal comando carrega H com o contedo da posio 128 da
memria e X com o contedo da posio 129. (H=$F0 e X=$00).

STHX

Copia o contedo de 16 bits de H:X para a posio de memria (Sendo X
armazenado no endereo seguinte).

Exemplos

STHX $80 ;Supondo que H:X valha $1234, tal comando armazena o
valor de H (no caso, $12) na posio 80 da memria e o valor de X ($34) na posio
seguinte, 81.







MOV

Copia uma constante imediata para uma posio de memria ou um valor entre um
aposio de memria e outra.

Exemplos

MOV $80,$81 ;Se o contedo da posio de memria $80 igual a $10, esse
comando copia tal valor na posio $81 de memria (assim, ($81)=$10).
MOV ,X+,$80 ;Supondo que H:X aponta para o endereo $90 e esse
endereo armazena o valor 0, tal comando copia o contedo do endereo $90 para o
endereo $80, fazendo com que $80 seja igual a 0. Aps essa operao H:X ser
incrementado (H:X = $91 (armazenar o endereo 91).

CLR

Apaga o contedo de um registrador ou posio de memria especificada.

Exemplos

CLRA ;Apaga o contedo do acumulador (A=0)
CLRX ;Apaga o contedo de X (X=0)
CLRH ;Apaga o contedo de H (H=0)
CLR $80 ;Apaga o contedo da posio $80 da memria

TAP

Copia o contedo do Acumulador para o CCR (registrador de estado do
processador).

Exemplos

LDA #$FA ;Carrega o acumulador com o valor $FA
TAP ;Copia o contedo de A para o registrador CCR

TPA

Copia o contedo do CCR para o acumulador

Exemplo

TPA ;Copia o contedo do CCR para A





TAX

O contedo do Acumulador copiado para o registrador X.

Exemplos

LDA #5 ;Carrega o acumulador com o valor 5 decimal
TAX ;Copia o valor e A para X (A=5)

TXA

O contedo do registrador X copiado para o Acumulador.

Exemplo

TXA ;Supondo que X valha $10, esse comando copia o valor de X para o
acumulador (A).

TSX

O contedo do apontador de pilha (SP) mais 1 copiado para o registrador de ndice
(H:X).

Exemplo

TSX ;Supondo que SP=$F0, esse comando copia o contedo do SP mais 1,
para H:X, fazendo com que H:X = $F1

TXS

O contedo do registrador de ndice (H:X) menos 1 copiado para o apontador de
pilha (SP).

Exemplo

TXS ;supondo que H:X = $F1, tal comando copia o contedo de H:X
menos 1 para o SP, fazendo com que SP=$F0

RSP

Reseta o contedo do SP (apontador de pilha), restaurando sua condio-padro
($00FF).

Exemplo

RSP ;Supondo que SP =$F0, esse comando reinicia o apontador de pilha
(SP=$00FF)
PSHA (Pop A)

Armazena o Acumulador na Pilha, e logicamente o apontador da pilha
decrementado em 1.

Exemplo

PSHA ;Supondo que o Acumulador seja $AB e que o apontador aponte para
$FF (SP=$FF), esse endereo, $FF, conter o valor do Acumulador, $AB, e SP valer $FE,
pois foi decrementado.

PULA (PUSH AND LOAD A)

O acumulador carregado com o contedo do endereo apontado pelo apontador de
pilha, SP. Este incrementado em 1 para apontar para o prximo endereo.

Exemplo

PULA ;Supondo que SP=$FE e que ($FF)=$1F. O apontador SP
incrementado, valendo $FF e o valor do endereo $FF ser imbutido no Acumulador

PSHH (POP H)

O contedo do registrador H armazenado no topo da pilha e o SP decrementado
em 1.

Exemplo

PSHH ;Supondo que H=$10 e que SP=$FF. Assim, nesse comando o
contedo do endereo $FF passa a valer $10, e o SP decrementa e contm $FE

PULH (PUSH AND Load H)

O indicador do topo da pilha incrementado e o ultimo valor empilhado retirado
da pilha e armazenado em H .

Exemplo

PULH ;Supondo que SP=$F0 e ($F1)=$05. Tal comando faz SP conter $F1 e faz o
registrador H conter $05







PSHX (POP X)

O contedo do registrador X armazenado no topo da pilha e o apontador da pilha
decrementado em 1.

Exemplo

PSHX ;Supondo que X=$15 e que SP=$F5. Aps a execuo da instruo,
SP ir conter $F4 e o contedo do endereo $F5 conter o valor do registrado X, no caso,
$15.

PULX (PUSH AND LOAD X)

O indicador do topo da pilha (SP) incrementado e o ultimo valor empilhado
retirado da pilha e armazenado em X.

Exemplo

PULX ;Supondo que SP=$F4 e $F5=$1A. Esse comando incrementa o SP,
valendo agora $F5 e coloca o valor dessa posio de memria em X.
Instrues de Manipulao de Bits


BSET (BIT SET)

Seta o bit n(de 0 a 7) de uma posio da memria.

Exemplos

CLR $80 ;Limpa o contedo da posio $80 da memria
BSET 0,$80 ;Seta o bit 0 da posio $80 da memria
BSET 1,$80 ;Seta o bit 1 da posio $80 da memria
BSET 7,$80 ;Seta o bit 7 da posio $80 da memria. Ao total, nesse ponto o
valor contido nessa posio de memria de zero ser $83 ou 10000011B (Binrio)

BCLR (BIT CLEAR)

Apaga o bit n (de 0 a 7) de uma posio de memria.

Exemplos

MOV #$FF, $80 ;Primeiro copiamos o valor $FF (11111111B) para a posio
$80 da memria
BCLR 3,$80 ;Apaga o bit 3 da posio $80 da memria
BCLR 2,$80 ;Apaga o bit 2 da posio $80 d amemria
BCLR 7,$80 ;Apaga o bit 7 da posio $80 da memria. Nesse ponto, o seu
contedo valer $73 (01110011B)
Instrues Aritmticas e Lgicas


ADC (ADD WITH CARRY)

Efetua adio com o Acumulador mais o operando de algum endereo de memria
mais o contedo de Carry. O Carry, ou C, est presente no registrador de cdigo de
condio (CCR). Nesse caso, C ser 1 se a soma ultrapassou 8 bits. (Realiza soma para
valores maiores que 8 bits).

Exemplos

MOV #10, $90 ;Copia o valor 10 decimal para o endereo $90
LDA #10 ;Copia o valor 10 decimal para o acumulador
SEC ;SET C seta o bit de carry no CCR
ADC $90 ;soma tudo, A + ($90) + C -> $10 + $10 +1, que ser $21.
como a soma no deu overflow, o bit C do CCR ser zero de novo...
ADC #$FF ;soma, A + $FF + C -> $21 + $FF + 0, que ser 276
(100010100B). A soma ultrapassou 8 bits, ento ser armazenado apenas os 8 bits
inferiores( 00010100B) em A e o nono bit ir para o C, valendo 1 no caso.

ADD

Soma o contedo do Acumulador com o do operando da memria. O resultado da
soma armazenado em A.

Exemplos

MOV #10, $90 ;Copia o valor 10 decimal para o endereo $90
LDA #10 ;Copia o valor 10 decimal para o acumulador
SEC ;SET C seta o bit de carry no CCR
ADD $90 ;Soma tudo, A + ($90) -> $10 + $10, que ser $20. como a
soma no deu overflow, o bit C do CCR ser zero de novo...
ADD #$FF ;Soma, A + $FF + -> $20 + $FF + , que ser 275
(100010011B). A soma ultrapassou 8 bits, ento ser armazenado apenas os 8 bits
inferiores( 00010011B) em A e o nono bit ir para o C, valendo 1 no caso.

AIS

O operando sinalizado imediato adicionado ao contedo do apontador de pilha (SP).

Exemplos

LDHX #$1234 ;Carrega H:X com o valor $1234
TXS ;Copia o contedo de H:X -1 para SP (SP=$1233)
AIS #$10 ;Adiciona 10 ao contedo de H:X (H:X=$1243)
AIX

O operando sinalizado imediato adicionado ao contedo do registrador de ndice
(H:X).

Exemplos

LDHX #$1234 ;Carrega H:X com o valor $1234
AIX #$10 ;Adiciona 10 ao contedo de H:X (H:X=$1234)

SBC (SUBTRACT WITH CARRY)

Efetua subtrao com o Acumulador mais o operando de algum endereo de
memria mais o contedo de Carry. O Carry, ou C, est presente no registrador de cdigo
de condio (CCR). Nesse caso, C ser 1 se o resultado da subtrao ultrapassou 8 bits.
(Valor da memria mais C eram maiores que o contedo do acumulador).

Exemplos

MOV #40,$81 ;Copia o valor 20 decimal para o endereo $81
LDA #100 ;Copia o valor 100 decimal para o acumulador
CLC ;CLEAR C, ou seja, apaga o flag C do CCR (C=0)
SBC $81 ;Subtrai o Acumulador com o contedo da posio $81 e o
flag C (A=A-($81)-C = 100 -40 -0 =60
SEC ;Seta o flag C (C=1)
SBC #59 ;Subtrai 59 e o C do contedo de A (A=60-59-1=0)
SBC #1 ;Subtrai 1 e C do contedo de A (A=0-1-0=$FF). Nesse caso,
o bit C foi setado pois o resultado um nmero negativo

SUB

Subtrai o contedo do acumulador do operando. O resultado armazenado no
acumulador (A)

Exemplos

MOV #40,$81 ;Copia o valor 20 decimal para o endereo $81
LDA #100 ;Copia o valor 100 decimal para o acumulador
CLC ;Apaga o flag C (C=0)
SUB $81 ;Subtrai o contedo da posio $81 do contedo do
acumulador (A=A-($81) = 100 40=60
SUB #70 ;Subtrai 60 do contedo de A (A=60-70=-10=$F6). Comoo
resultado deu negativo, o valor binrio de C foi setado (C=1)




MUL

Multiplicao do contedo de X pelo contedo de A, armazenando o resultado de
at 16 bits de forma concatenada nos registradores X (parte alta do resultado) e A (parte
baixa do resultado).

Exemplos

LDX #$10 ;Carrega X com o valor $10
LDA #$8 ;Carrega A com o valor $8
MUL ;Multiplica A*X = $8 * $10 = $80 (A=$8, X=0)
LDX #$10 ;Carrega X com o valor $10
MUL ;Multiplica A * X = $80 * $10 = $800 (A=0, X=$8)


DIV

Efetua a operao H:A / X, ou seja, divide o contedo de 16 bits formado pela
concatenao de H(parte alta do valor) e A(parte baixa) pelo contedo de X. O quociente
da diviso armazenado em A e o resto armazenado em H.
Caso o quociente seja maior que 255 ($FF) ou X seja igual a zero (diviso por zero),
o flag C ser setado, indicando o erro. Nesse caso, o resultado em A e H indeterminado.

Exemplos

LDA #$03 ;Carrega A com $03
PSHA ;Guarda A na pilha
LDA #$E8 ;Carrega A com $E8
PULH ;Carrega H da pilha (H=$03), H:A = $03EB (1000 decimal)
LDX #$14 ;Carrega X com $14 (20 decimal)
DIV ;Divide H:A por X ($03EB / $14 = $32, ou seja, 1000 / 20 = 50. O
valor $32 armazenado em A e o resto armazenado em H (H=0)


INC
Incrementa ao contedo de um registrador ou posio de memria.

Exemplos

LDA #100 ;Copia o valor 100 decimal para o Acumulador
INCA ;Incrementa A
STA $80 ;Copia o contedo de A ,101, para o endereo $80 da memria
INC $80 ;Incrementa o valor aramzenado na posio $80 da memria, que
passa ser 102



DEC
Decrementa (subtrai 1) do contedo de um registrador ou posio de memria.

Exemplos

LDA #100 ;Copia o valor 100 decimal para o acumulador
DECA ;Decrementa A (A=99 decimal)
STA $80 ;Copia o contedo de A para o endereo $80 da memria
DEC $80 ;Decrementa o contedo do endereo $80 de memria

DAA

Aps uma operao, tal comando ajusta o resultado no formato BCD (Binary Code
Decimal)

Exemplos

MOV #$39,$81 ;Copia o valor 39 hexadecimal para o endereo $81 da
memria
LDA #3 ;Carrega o valor 3 no Acumulador
ADD $81 ;Adiciona o acumulador ao valor contido no endereo $81 da
memria (A = $3 + $30 = $3C)
DAA ;Ajusta o valor do acumulador (A = 42)
MOV #$60,$80 ;Copia o valor hexadecimal 60 para o endereo $80 da
memria
ADD $80 ;Adiciona o acumulador ao contedo do endereo $80 de
memria. Assimo acumulador contm o valor $102.
DAA ;Ajusta o acumulador (A=$02) e C=1, indicando o estouro da
capacidade de representao BCD do Acumulador

AND

Realiza a operao AND, bit a bit, do contedo do acumulador e um valor contido
em alguma posio especfica de memria.

Exemplos

MOV #$67, $80 ;Copia o valor 67 hexadecimal para a posio $80 de memria
LDA #$F0 ;Carrega A com $F0
AND $80 ;Efetua a operao AND entre o contedo do acumulador e o
contedo da posio $80 de memria (A= $FO & $67 = $60)
AND #$85 ;Efetua a operao AND entre o contedo do acumulador e
aconstante imediata $85 (A = $60 & $85 = $00)




ORA

Efetua OU lgico, bit a bit, do contedo do acumulador com alguma posio
especfica de memria

Exemplos

MOV #$67, $80 ;Copia o valor hexadecimal $67 para a posio $80 d
ememria
LDA #$10 ;Carrega A com $10
ORA $80 ;Efetua OU lgico entre o Acumulador e o valor da posio
$80 de memria(A = $10 + $67 = $77)
ORA #$85 ;Efetua o OU lgico entre o Acumulador e a constante
imediata $85, ou seja, o resultado ser $F7

EOR

Efetua a operao OU EXCLUSIVO bit a bit do contedo do acumulador ao
contedo de algum endereo de memria especificado.

EXEMPLOS

MOV #$67, $80 ;Copia o valor 67 hexadecimal para o endereo $80 da
memria
LDA #$12 ;Carrega A com 12
EOR $80 ;Efetua o OR EXCLUSIVO entre o contedo do Acumulador
e o endereo $80. (A=$12 XOU $67 = $75)
EOR #$75 ;Efetua a operao XOR entre o contedo do acumulador e a
constante imediata $85 (A=$75 XOU $75 = $00)

COM

Faz o complemento de um em algum oerando especificado (A, X ou memria) e
armazenado tambm.

Exemplos

MOV #$67, $80 ;Copia o valor 67 hexa na posio $80 da mem
LDA #$F1 ;Carrega A Com $F1
COM $80 ;Complementa o contedo da posio 80 de mem (era $67,
passa a ser $98)
COMA ;Complementa o contedo do acumulador (seu contedo, que
era $F1, passa a ser $0E




NEG

Faz a negao do operando especificado (A, X ou memria) e armazenado tambm.
Ela equivale a operao complemento de dois, que o complemento de um seguido
de um incremento.

Exemplos

MOV #$67, $80 ;Copia o valor 67 hexa na posio $80 da mem
LDA #$F1 ;Carrega A Com $F1
NEG $80 ;Nega o contedo da posio $80 de memria (de $67 passa a
ser $99)
NEGA ;Nega o contedo do Acumulador (o seu contedo, que era
$F1, passa a ser $0F)


NSA (NIBBLE AND STORE A)

Faz a troca dos Nibbles (grupo de 4 dgitos) do acuulador e armazena o resultado no
prprio Acumulador.

Exemplos

LDA #$F1 ;Carrega A com $F1
NSA ;Troca os nibbles do acumulador, ou seja, aps a operao,
passa conter $1F


ASL (ARITMETIC SHIFT LEFT)

Efetua o deslocamento aritmtico em uma unidade esquerda do operando (A, X ou
memria). O bit mais significativo vai pro Carry - C e o bit menos significativo
preenchido com zero.

Exemplos

MOV #$13,$80 ;Copia o valor 13 hexa para o endereo $80
ASL $80 ;Desloca o contedo de $80 uma posio esquerda e seu
contedo passa valer $26.

O deslocamento de um bit esquerda equivale a multilicar por dois. Por exemplo,
01B vale 1 decimal. Deslocando esquerda temos 010, que 2, e deslocando mais uma vez
teremos 0100, o valor 4. ASLA desloca A esquerda.

LSL (LOGICAL SHIFT LEFT)

O mesmo que ASL.
ROL (ROTATE LEFT)

Faz a rotao do contedo do operando (A, X ou a memria), ou seja, os bits do
operando so deslocados uma posio esquerda, sendo o bit mais significativo deslocado
para o carry C e o contedo de C anterior armazenado no bit menos significativo.

Exemplos

MOV #$34,$80 ;Copia o valor 34 hexadecimal para o endereo $80 da
memria
SEC ;Seta o carry
ROL $80 ;Rotaciona o valor contido em $80
0011 0100 ($34)
0011 0100 1 (Carry)
(Carry) 0 0110 1001

ASR (ARITMETIC SHIFT RIGTH)

Efetua o deslocamento aritmtico em uma unidade direita do operando (A, X ou
memria). O bit mais significativo (o da extrema esquerda) permanece inalterado e o bit
menos significativo deslocado pro Carry -C-.

Exemplos

MOV #$FA, $80 ;copia o valor hexadecimal FA para a posio de memria
$80
ASR $80 ;Desloca o contedo do endereo $80 da memria uma
posio direita. O 1 extrema esquerda permanece inalterado e o zero extrema direita
vai pro Carry do registrador CCR.
1111 1010 ($FA)
1111 1010
1111 1101 0 ($FD)

LSR (LEFT SHIFT RIGTH)
O mesmo esquema com o ASR, porem ao invz de copiar o bit extrema esquerda,
ele preenchido com zero.

Exemplos

MOV #$FA, $80 ;copia o valor hexadecimal FA para a posio de memria
$80
ASR $80 ;Desloca o contedo do endereo $80 da memria uma
posio direita. O 1 extrema esquerda preenchido com zero e o zero extrema direita
vai pro Carry do registrador CCR.
1111 1010 ($FA)
1111 1010
0111 1101 0 ($FD)

ROR (ROTATE RIGTH)

Faz a rotao do contedo do operando (A, X ou a memria), ou seja, os bits do
operando so deslocados uma posio direita, sendo o bit menos significativo deslocado
para o carry C e o contedo de C anterior armazenado no bit mais significativo.

Exemplos

MOV #$65,$80 ;Copia o valor 67 hexadecimal para o endereo $80 de
memria
CLC ;Apaga o flag C (C=0)
ROR $80 ;Rotaciona o contedo do endereo $80
0110 0101 ($65)
0110 0101
(aqui entra o zero do C) 0011 0010 1 pro C (valor=$32)

Instrues de teste e desvio


CMP (COMPARE)

Compara o contedo do acumulador com o contedo da posio de memria ou do
operando imediato especificado. Tal comparao feita subtraindo o contedo da memria
do contedo do acumulador.

Exemplos

MOV #$39, $80 ;Copia o valor 39 hexadecimal para o endereo $81
LDA #$38 ;Carrega o valor $38 para o Acumulador
CMP $80 ;Compara o acumulador com a posio $80 de memria. C=1,
indicando que o contedo da memria maior que o contedo do Acumulador.
MOV #$10,$80 ;Copia o valor hexa 10 para o endereo $80
CMP $80 ;Compara o valor contido nesse endereo com o acumulador.
C=0, indicando que o contedo da memria menor que o contedo do acumulador. O flag
Z, presente no registrador CCR, ser zero (Z=0) pois o resultado no foi igual a zero (38 do
acumulador 10 da posio de memoria > 0). Nos outros caso acima tambm.
MOV #$38,$80 ;Copia o valor hexa 38 para a posio $80 de memria
CMP $80 ;Compara o valor contido nesse endereo com o acumulador.
O flag Z, presente no registrador CCR, ser setado (Z=1) pois o resultado foi igual a zero
(38 do acumulador 38 da posio de memoria = 0) realizado na comparao.


CPX (COMPARE X)

Compara o contedo do registrador de ndice X com o contedo da posio de
memria ou do operando imediato especificado. A comparao feita subtraindo o
contedo da posio de memria especificado com o contedo armazenado em X. Z ser
setado se tal subtrao for igual a 0 e C ser setado se se o resultado for menor que zero
(Valor da memria maior que o contedo do registrador X).

Exemplos

MOV #$5A, $80 ;Copia o valor 5A hexadecimal para o endereo $81
LDX #$80 ;Carrega o valor $80 para o X
CMP $80 ;Compara o X com a posio $80 de memria. Como X
maior que o contedo de memria, V=1 e C=0






CPHX (COMPARE HX)

Compara o contedo do par de registradores H:X com o contedo de 16 bits da
memria ou do operando imediato. Como envolve uma comparao de 16 bits, usa-se o
endereo especificado (MSB MOST SIGNIFICANT BIT) e o endereo seguinte (LSB
LESS SIGNIFICANT BIT).Os bits C e Z se comportam de maneira similar ao CPX

Exemplos

MOV #$12,$80 ;Copia o valor hexa 12 para a posio $80 de memria
MOV #$35,$81 ;Copia o valor hexa 35 para a posio seguinte de memria,
$81
LDHX #$1234 ;Carrega em HX o valor $1234
CPHX $80 ;Compara H:X com o contedo do endereo $80 e $81.C
NO ser setado pois o resultado da subtrao no menor que zero ($1235 - $1234 >0)

CBEQ (COMPARE AND BRANCH IF EQUAL)

Compara o contedo do acumulador (A) ou registrador de ndice (X) com o
contedo de uma posio especfica de memria e desvia se forem iguais.
uma instruo que considerada a unio de outras duas, a CMP e BEQ(desvia se
igual), e tem o bebefcio de no alterar os flags e ser mais rapida que as outas duas.
Existem variantes, com mnemonicos diferentes: CBEQA (para o Acumulador) e
CBQEX (para o X).

Exemplos

Nesse exmplo tem-se uma rotina que procura um caractere (no caso o espao) em
uma string de memria.
LDA #$20 ;Carrega o valor $20 um codigo de um caractere a
ser procurado
LDHX #$0080 ;Carrega o endereo inicial da string em H:X
DENOVO CBEQ X+,DENOVO ;Compara o contedo do acumulador com o contedo
da posio de memria apontada por H:X
AIX #-1 ;Subtrai 1 de H:X

BRA (BRANCH)

Efetua o desvio do fluxo do programa. O operando da instruo um endereo
relativo de 8 bits em complemento de dois, permitindo o desvio para at 127 posies
adiante e 128 posies para trs.

Ao todo so 24 instrues diferentes para o desvio do programa

BRA desvio incondicional
BRN no desvia (equivale a um NOP d etrs ciclos)
BEQ desvia se igual (ou seja, Z=1)
BNE desvia se diferente (se Z=0)
BPL desvia se positivo (se N=0)
BMI desvia se negativo (se N=1)
BCC desvia se o carry igual a zero (C=0)
BCS desvia se o carry igual a um (C=1)
BHCC desvia se o carry de dgito igual a zero (H=0)
BHCS desvia se o carry de dgito igual a um (H=1)
BMC desvia se as interrupes estiverem habilitadas (se I=0)
BMS desvia se as interrupes estiverem desabilitadas (se I=1)
BRCLR desvia se o bit n da memria estiver apagado (nivel 0)
BRSET desvia se o bit n d amemria estiver apagado (nivel 1)
Aps operaes (CMP, CPHX, CPX, SBC, ou SUB)envolvendo operandos sem sinal:
BHI desvia se maior (se C e Z=0)
BHS desvia se maior ou igual (se C=0)
BLS desvia se menor ou igual (se C ou Z=1)
BLO desvia se menor (se C=1)
Aps operaes (CMP, CPHX, CPX, SBC ou SUB) envolvendo operandos no formato
complemento de dois:
BGT desvia se maior(se Z=1 ou N=V)
BGE desvia se maior ou igual (se N=V)
BLE desvia se menor ou igual (se Z=1 ou N=V)
BLT desvia se menor (se N!=V)(N no igual a V)

Exemplos

MOV #$14, $80 ;Carrega o valor $14 (00010100B) no endereo $80
BRSET 2,$80,Teste ;Testa se o bit 2 do valor da posio de memria $80
est em nvel 1. Como o caso, desvia para o fluxo Teste.
BRA FIM ;Desvia o programa para a etiqueta FIM

BIL
Testa o pino IRQ e desvia para o endereo relativo caso esteja em nvel 0

Exemplo

BIL IRQ_ZERO ;Teste o pino IRQ e se estiver em 0 desvia para IRQ_ZERO

BIH
Testa o pino IRQ e desvia para o endereo relativo caso esteja em nvel 1

Exemplo

BIH IRQ_UM ; Teste o pino IRQ e se estiver em 1 desvia para IRQ_UM




TST

Testa o contedo do registrador A,X ou da memria, modificando os bits Z e N no
CCR, de acordo.

Exemplos

TSTA ;Caso o contedo do acumulador seja 0, tal comando testa esse valor
e como ele zero, o bit Z setado e o N apagado, pois A=0
TST $90 ; Caso o contedo da posio d ememria $90 seja 129, tal comando
testa esse valor e como ele maior que 8 bits, o bit Z apagado e o N setado, pois o bit 7
do valor esta em nivel lgico 1.

DBNZ

Decrementa o contedo do operando (A, Xou a memria) e desvia para o endereo
relativo caso o resultado seja diferente de zero.

Exemplos

DBNZA PONTO_A ;Decremnta o acumulador (A) e desvia para o
endereo PONTO_A caso A difira de zero
DBNZX REPETE ;Decrementa X e desvia para REPETE caso X seja
diferente de zero
DBNZ $80,REP ;Decremneta o contedo do endereo $80 e desvia
para REP caso o contedo do mesmo seja diferente de zero
DBNZ 5,X,LOOP ;Decrementa o contedo do endereo especificado pela
soma de H:X mais 5. Caso o resultado seja diferente de zero, desvia para LOOP

BSR

Faz o desvio do fluxo do programa. O operando da instruo um endereo relativo
de 8 bits em complemento de dois, permitindo io desvio para at 127 posies adiante e
128 posies para trs.
O contedo do PC mais 2 salvo na pilha em duas partes: primeiro empilhada a
parte baixa (8 bits menos significativos) depois a parte alta (8 bits mais significativos).
Em seguida, o endereo da subrotina carregado no PC, fazendo com que o
programa desvie.

Exemplo

BSR MULT16 ;Desvia para a subrotina chamada MULT16





JMP (JUMP)

Desvio absoluto da rotina

Exemplos

JMP $80 ;Desvia para o endereo $0080 da memria
JMP $1000 ;Desvia para o endereo $1000 da memria
JMP INICIO;Desvia para o endereo DESVIO da memria
JMP 10,X ;Desvia para o endereo obtido oela soma do contedo de H:X mais
10

JSR

Retorno de uma subrotina

Exemplos

JSR $20 ;Desvia para a subrotina no endereo $20
JSR CALCULA ;Desvia para a subrotina CALCULA
JSR 1000,X ;Desvia para a subrotina no endereo especificado pelo
contedo de H:X + 1000

RTS

Retorno de interrupo.

Exemplo

RTS ;Retorna da rubrotina atual

RTI

Provoca o retorno do fluxo do programa ao ponto seguinte ao de onde ocorreu a
interrupo.

Exemplo

RTI ;Retorno de interrupo

Instrues de controle do Processador


SEC (SET C)

Seta o flag de transporte, ou carry, fazendo com que C=1.

Exemplo

SEC ;Seta C (C=1)

CLC (CLEAR C)

Apaga o flag de transporte, ou carry, fazendo com que C=0.

Exemplo

CLC ;Apaga C (C=0)

SEI (SET INTERRUPTION)

Seta o bit de interrupo (flag I do CCR registrador de codigo de condio)
fazendo com que as interrupes sejam desabilitadas.

Exemplo

SEI ;Seta o bit I do CCR

CLI (CLEAR INTERRUPTION)

Limpa o bit de interrupo (flag I do CCR registrador de codigo de condio)
fazendo com que as interrupes sejam habilitadas.

Exemplo

CLI ;Limpa o bit I do CCR

NOP (NO OPERATION)
Interrupo por software, nenhuma instruo executada. Apenas o PC
incrementado de forma a apontar a prxima instruo a ser executada.

Exemplo

NOP ;Gasta 4 ciclos de clock principal


SWI

Parada completa do processador, ocorrndo um interrupo na execuo do
programa. Possui a mais alta prioridade dentre as interrupes.

Exemplo

SWI ;Provoca uma interrupo

STOP

Parada do processador, desligando o clock da CPU, reduzindo o consumo de
energia.

Exemplo

STOP ;Coloca a CPU em modo de parada

WAIT

Coloca a CPU em modo de espera (WAIT) no qual o clock da CPU paralizado,
mas os perifricos continuam ativos (caso estejam habilitados) e sa capazes de gerar
interrupes.

Exemplo

WAIT ;Coloca a CPU no modo de espera

Você também pode gostar