Mnemonico |
Op |
IHNZVC |
IEXD#R |
~ |
Descripción |
Notas |
ABX |
3A |
------ |
X----- |
3 |
Sumar al registro
indice |
X=X+B |
ADCa s |
B9 |
-***** |
-XXXXX |
5 |
Suma con acarreo |
a=a+s+C |
ADDa s |
BB |
-***** |
-XXXXX |
5 |
Suma |
a=a+s |
ADDD s |
F3 |
-***** |
-XXX*X |
7 |
Sumar al Doble
acc. |
D=D+s |
ANDa s |
B4 |
--**0- |
-XXXXX |
5 |
Y Logico |
a=a&s |
ANDCC s |
1C |
?????1 |
----X- |
3 |
Y Logico con
CCR |
CC=CC&s |
ASL d |
78 |
--**** |
-XXX-X |
7 |
Desplazamiento
Aritmetico a la Izq. |
d=d*2 |
ASLa |
48 |
--**** |
X----- |
2 |
Desplazamiento
Aritmetico a la Izq. |
a=a*2 |
ASR d |
77 |
--**** |
-XXX-X |
7 |
Desplazamiento
Aritmetico a la Der. |
d=d/2 |
ASRa |
47 |
--**** |
X----- |
2 |
Desplazamiento
Aritmetico a la Der. |
a=a/2 |
BCC m |
24 |
------ |
-----x |
3 |
Desvio si no
hay acarreo |
If C=0 |
BCS m |
25 |
------ |
-----x |
3 |
Desvio si hay
acarreo |
If C=1 |
BEQ m |
27 |
------ |
-----x |
3 |
Desvio si es
igual |
If Z=1 |
BGE m |
2C |
------ |
-----x |
3 |
Desvio si es
mayor o igual |
If NxV=0 |
BGT m |
2E |
------ |
-----x |
3 |
Desvio si es
mayor |
If Zv{NxV}=0 |
BHI m |
22 |
------ |
-----x |
3 |
Desvio si es
más alto |
If CvZ=0 |
BHS m |
24 |
------ |
-----x |
3 |
Desvio si es
más alto/ igual |
If C=0 |
BITa s |
B5 |
--**0- |
-XXXXX |
5 |
Bit Test acumulador |
a&s |
BLE m |
2F |
------ |
-----x |
3 |
Desvio si es
menor o igual |
If Zv{NxV}=1 |
BLO m |
25 |
------ |
-----x |
3 |
Devio si es más
bajo |
If C=1 |
BLS m |
23 |
------ |
-----x |
3 |
Desvio se es
más bajo/igual |
If CvZ=1 |
BLT m |
2D |
------ |
-----x |
3 |
Desvio si es
menor |
If NxV=1 |
BMI m |
2B |
------ |
-----x |
3 |
Devio si es negativo |
If N=1 |
BNE m |
26 |
------ |
-----x |
3 |
Desvio si no
es igual |
If Z=0 |
BPL m |
2A |
------ |
-----x |
3 |
Desvio si es
positivo |
If N=0 |
BRA m |
20 |
------ |
-----x |
3 |
Desviar siempre |
PC=m |
BRN m |
21 |
------ |
-----x |
3 |
No desviar |
NOP |
BSR m |
8D |
------ |
-----x |
7 |
Desvio a Subrutina |
-[S]=PC,BRA |
BVC m |
28 |
------ |
-----x |
3 |
Desvio si no
hay desborde |
If V=0 |
BVS m |
29 |
------ |
-----x |
3 |
Desvio si hay
desborde |
If V=1 |
CLR d |
7F |
100 |
-XXX-X |
7 |
Borrar |
d=0 |
CLRa |
4F |
100 |
X----- |
2 |
Borrar acumulador |
a=0 |
CMPa s |
B1 |
--**** |
-XXXXX |
5 |
Comparar |
a-s |
CMPD s |
B3 |
--**** |
-XXX*X |
8 |
Comparar Doble
acc. |
D-s (10H) |
CMPS s |
BC |
--**** |
-XXX*X |
8 |
Comparar puntero
de pila |
S-s (11H) |
CMPU s |
B3 |
--**** |
-XXX*X |
8 |
Comparar puntero
de pila del Usuario |
U-s (11H) |
CMPi s |
BC |
--**** |
-XXX*X |
7 |
Comparar |
i-s (Y ~s=8) |
COM d |
73 |
--**01 |
-XXX-X |
2 |
Complementar |
d=~d |
COMa |
43 |
--**01 |
X----- |
7 |
Complementar
acumulador |
a=~a |
CWAI n |
3C |
E????? |
----X- |
K |
Y CCR, esperar
int. |
CC=CC&n,E=1, |
DAA |
19 |
--**** |
X----- |
2 |
Ajuste Decimal
Acumulador |
A=BCD format |
DEC d |
7A |
--***- |
-XXX-X |
7 |
Decrementar |
d=d-1 |
DECa |
4A |
--***- |
X----- |
2 |
Decrementar acumulador |
a=a-1 |
EORa s |
B8 |
--**0- |
-XXXXX |
5 |
O Exclusico Logico |
a=axs |
EXG r,r |
1E |
------ |
X----- |
8 |
Intercambiar
(tamaño r1=r2) |
r1<->r2
|
INC d |
7C |
--***- |
-XXX-X |
7 |
Incrementar |
d=d+1 |
INCa |
4C |
--***- |
X----- |
2 |
Incrementar acumulador |
a=a+1 |
JMP s |
7E |
------ |
-XXX-X |
4 |
Saltar |
PC=EAs |
JSR s |
BD |
------ |
-XXX-X |
8 |
Saltar a Subrutina |
-[S]=PC,JMP |
LBcc nn |
10 |
------ |
-----x |
5 |
Desvio condicional
largo (~=6) |
If cc LBRA |
LBRA nn |
16 |
------ |
-----x |
5 |
Desvio largo
incondicional |
PC=nn |
LBSR nn |
17 |
------ |
-----x |
9 |
Desvio largo
a Subrutina |
-[S]=PC,LBRA |
LDa s |
B6 |
--**0- |
-XXXXX |
5 |
Cargar acumulador |
a=s |
LDD s |
FC |
--**0- |
-XXX*X |
6 |
Cargar Doble
acc. |
D=s |
LDS s |
FE |
--**0- |
-XXX*X |
7 |
Cargar puntero
de pila |
S=s (10H) |
LDU s |
FE |
--**0- |
-XXX*X |
6 |
Cargar puntero
de pila del Usuario |
U=s |
LDi s |
BE |
--**0- |
-XXX*X |
6 |
Cargar registro
indice |
i=s (Y ~s=7) |
LEAp s |
3X |
---i-- |
-xX--X |
4 |
Cargar dirección
Efectiva |
p=EAs(X=0-3) |
LSL d |
78 |
--0*** |
-XXX-X |
7 |
Desplazamiento
a la Izq. Logico |
d={C,d,0}<-
|
LSLa |
48 |
--0*** |
X----- |
2 |
Desplazamiento
a la Izq. Logico |
a={C,a,0}<-
|
LSR d |
74 |
--0*** |
-XXX-X |
7 |
Desplazamiento
a la Der. Logico |
d=->{C,d,0}
|
LSRa |
44 |
--0*** |
X----- |
2 |
Desplazamiento
a la Der. Logico |
d=->{C,d,0}
|
MUL |
3D |
---*-* |
X----- |
B |
Multiplicar |
D=A*B |
NEG d |
70 |
-?**** |
-XXX-X |
7 |
Negar |
d=-d |
NEGa |
40 |
-?**** |
X----- |
2 |
Negar acumulador |
a=-a |
NOP |
12 |
------ |
X----- |
2 |
No Operación
|
|
ORa s |
BA |
--**0- |
-XXXXX |
5 |
O Logico |
a=avs |
ORCC n |
1A |
?????? |
----X- |
3 |
O CCR |
CC=CCvn |
PSHS r |
34 |
------ |
X----- |
2 |
Apilar reg(s)
(no S) |
-[S]={r,...} |
PSHU r |
36 |
------ |
X----- |
2 |
Apilar reg(s)
(no U) |
-[U]={r,...} |
PULS r |
35 |
?????? |
X----- |
2 |
Desapilar reg(s)
(no S) |
{r,...}=[S]+ |
PULU r |
37 |
?????? |
X----- |
2 |
Desapilar reg(s)
(no U) |
{r,...}=[U]+ |
ROL d |
79 |
--**** |
-XXX-X |
7 |
Rotar a la Izq. |
d={C,d}<-
|
ROLa |
49 |
--**** |
X----- |
2 |
Rotar acc. a
la Izq. |
a={C,a}<-
|
ROR d |
76 |
--**** |
-XXX-X |
7 |
Rotar a la Der. |
d=->{C,d}
|
RORa |
46 |
--**** |
X----- |
2 |
Rotar acc. a
la Der. |
a=->{C,a}
|
RTI |
3B |
-***** |
X----- |
6 |
Retorno de Interrupción |
{regs}=[S]+ |
RTS |
39 |
------ |
X----- |
5 |
Retorno de Subrutina |
PC=[S]+ |
SBCa s |
B2 |
--**** |
-XXXXX |
5 |
Resta con Acarreo |
a=a-s-C |
SEX |
1D |
--**-- |
X----- |
2 |
Extender Signo |
D=B |
STa d |
B7 |
--**0- |
-XXX-X |
5 |
Guardar acumulador |
d=a |
STD d |
FD |
--**0- |
-XXX-X |
6 |
Guardar Doble
acc. |
D=a |
STS d |
FF |
--**0- |
-XXX-X |
7 |
Guardar puntero
de pila |
S=a (10H) |
STU d |
FF |
--**0- |
-XXX-X |
6 |
Guardar puntero
de pila del usuario |
U=a |
STi d |
BF |
--**0- |
-XXX-X |
6 |
Guardar registro
indice |
i=a (Y ~s=7) |
SUBa s |
B0 |
--**** |
-XXXXX |
5 |
Restar |
a=a-s |
SUBD s |
B3 |
--**** |
-XXX*X |
7 |
Restar al Doble
acc. |
D=D-s |
SWI |
3F |
1----- |
X----- |
J |
Interrupción
por Software 1 |
-[S]={regs} |
SWI2 |
3F |
E----- |
X----- |
K |
Interrupción
por Software 2 |
SWI (10H) |
SWI3 |
3F |
E----- |
X----- |
K |
Interrupción
por Software 3 |
SWI (11H) |
SYNC |
13 |
------ |
X----- |
2 |
Sincronizar con
interrupción |
(min ~s=2) |
TFR r,r |
1F |
------ |
X----- |
6 |
Transferir (tamaño
r1<=r2) |
r2=r1 |
TST s |
7D |
--**0- |
-XXX-X |
7 |
Test |
s |
TSTa |
4D |
--**0- |
X----- |
2 |
Testear acumulador |
a |
Registro
de Codigo de Condición: |
CCR |
-*01? |
|
|
No
afectado/afectado/
reseteado/seteado/desconocido |
E |
E |
|
|
Flag
Entero(Bit 7, si esta seteado RTI~s=F) |
F I |
I |
|
|
Mascara
de interrupción FIRQ/IRQ
(Bit 6/4) |
H |
H |
|
|
Medio
acarreo (Bit 5) |
N |
N |
|
|
Negativo
(Bit 3) |
Z |
Z |
|
|
Cero
(Bit 2) |
|
V |
V |
|
|
Desborde
(Bit 1) |
C |
C |
|
|
Acarreo/prestado
(Bit 0) |
Modoes
de direccionamiento |
a |
I |
|
Inherente
(a=A,Op=4XH, a=B,Op=5XH) |
|
nn,E |
E |
|
Extendido
(Op=E, ~s=e) |
|
[nn] |
x |
|
Extendido
indirecto |
|
xx,p! |
X |
|
Indexado
(Op=E-10H, ~s=e-1) |
|
[xx,p!] |
X |
|
Indexado indirecto
(solo p!=p++,--p) |
n,D |
D |
|
Directo
(Op=E-20H, ~s=e-1) |
|
#n |
# |
|
Inmediato (8-bit,
Op=E-30H, ~s=e-3) |
#nn |
* |
|
Inmediate
(16-bit) |
|
m |
x |
|
Relativo
(PC=PC+2+offset) |
|
[m] |
R |
|
Relativo
indirecto (igual al anterior) |
|
Directivas
de ensamblador: |
DIRECT |
Modo
de direccionamiento directo |
|
|
|
EXTEND |
Modo de direccionamiento
extendido |
FCB n |
Formar
Byte Constante |
|
|
|
FCC 'string' |
Formar
Caracteres Constantes |
|
|
|
FDB nn |
Formar
Doble Byte |
|
|
|
RMB nn |
Reservar
Bytes de Memoria |
|
|
|
Registros: |
A B |
Acumuladores
(8-bit) |
|
|
|
CC |
Registro de Codigo
de Condición (8-bit) |
|
|
D |
A y
B (16-bit, A alto, B bajo) |
|
|
|
DP |
Registro
de Pagina Directa (8-bit) |
|
|
|
PC |
Contador
de Programa (16-bit) |
|
|
|
S U |
Puntero de pila
Hardware/Usuario (16-bit) |
|
X Y |
Registros
Indice (16-bit) |
|
|
|
Abreviaciones |
a |
Acc A o B (a=A,Op=BXH,
a=B,Op=FXH) |
|
|
d s EA |
Destino/fuente/dir.
efectiva |
|
|
|
i p r |
Regs X,Y/regs X,Y,S,U/cualquier
reg. |
|
|
m |
Dirección
Relativa (-126 to +129) |
|
|
|
n nn |
expresión
de 8/16-bits (0 a 255/65535) |
|
xx p! |
A,B,D,nn/p+,-p,p++,--p
(indexado) |
|
|
+ - * / |
Suma/resta/multiplicación/división
|
|
|
|
& ~ v x |
Y/NO/O/O
exclusivo |
|
|
|
<- -> <-> |
Rotar a izq./rotar
a der./intercambiar |
|
|
[ ] [ ]+ -[ ] |
Dirección
Indirecta/incrementar/decr. |
|
|
{ } |
Combinación
de operandos |
|
|
|
{regs} |
Si E {PC,U/S,Y,X,DP,B,A,CC}/{PC,CC} |
|
|
(10H) (11H) |
Opcode hexadecimal
que precede el opcode principal |
|
Vectores
del sistema: |
FFF0H a FFF1H |
Reservado
por Motorola |
|
|
|
FFF2H a FFF3H |
Vector
de interrupción de la instrucción SWI3 |
|
|
|
FFF4H a FFF5H |
Vector
de interrupción de la instrucción SWI2 |
|
|
|
FFF6H a FFF7H |
Vector
de int. por hardware rápida (FIRQ) |
|
|
|
FFF8H a FFF9H |
Vecto
de interrupción por Hardware (IRQ) |
|
|
|
FFFAH a FFFBH |
Vector
de interrupción de la instrucción SWI |
|
|
|
FFFCH a FFFDH |
Vector
de interrupción No-enmascarable (NMI) |
|
|
|
FFFEH a FFFFH |
Vector
de Reset |
|
|
|