miércoles, 30 de julio de 2008

Set de Instrucciones: High Performance.

El set de instrucciones de la familia mayor de 8 bits de Microchip denominados High Perfomance PIC, albergan las siguientes características:

  • Las instrucciones son altamente ortogonales, es decir, casi todas las instrucciones pueden usar cualquier operando.
  • Instrucciones muy parecidas a las arquitecturas inferiores para una fácil migración y adaptación.
  • Todas las instrucciones tienen la misma longitud, en esta arquitectura es de 16-bits.
  • Para un reloj principal de 4 MHz, el tiempo de ejecución de la mayoría de las instrucciones es de 1 us, excepto las instrucciones de salto, que es de 2 us.
El repertorio de instrucciones, se puede dividir en cuatro partes.

Operaciones de tamaño byte.

Son las denominadas, en anglosajón, Byte-Oriented Operations, consisten en las instrucciones que manejan registros y el lugar de almacenar la operación correspondiente, en un literal, denominado 'f', o en el registro de trabajo, llamado 'w'.

El set de instrucciones es el que se muestra en la siguiente tabla.

OperadorDescripciónCiclos de RelojOperador 16-bitFlags Afectados
addwf....f,d, a
W + f -> (d)
10010 01da ffff ffff
C, DC, Z, OV, N
addwfc....f, d, aW+f+C -> (d)
1
0010 00da ffff ffff
C, DC, Z, OV, N
andwf....f, d, a
W AND f -> (d)
1
0001 01da ffff ffff
Z, N
clrf..........f, a
f = 0
1
0110 101a ffff ffff
Z
comf.......f,d,aNOT f -> (d)
1
0001 11da ffff ffff
Z,N
cpfseq...f,a
Compara f con W, salta si son iguales
1 (2 o 3)
0110 001a ffff ffff
Ninguno
cpfsgt...f,aCompara f con W, salta si f > W
1 (2 o 3)0110 010a ffff ffffNinguno
cpfslt...f,aCompara f con W, salta si f <>1 (2 o 3)0110 000a ffff ffffNinguno
decf........f, d,af -- -> (d)
1
0000 01da dfff ffff
C, DC, Z, OV, N
decfsz....f, d,af-- , salta si f = 0 -> (d)
1 (2 o 3)
0010 11da ffff ffff
Ninguno
dcfsnz....f, d,af-- , salta si f NOT 0 -> (d)1 (2 o 3)0100 11da ffff ffffNinguno
incf.........f, d,af++ -> (d)
1
0010 10da ffff ffff
C, DC, Z, OV, N
incfsz.....f, d,af++ , salta si f = 0->(d)
1 (2 o 3)
0011 11da ffff ffff
Ninguno
infsnz.....f, d,af++ , salta si f NOT 0->(d)1 (2 o 3)0100 10da ffff ffffNinguno
iorwf......f, d,aW OR f -> (d)
1
0001 00da ffff ffff
Z,N
movf......f, d,aMover f -> (d)
1
0101 00da ffff ffff
Z,N
movff....fs, fdMover fs -> fd21100 ffff ffff ffff
1111 ffff ffff ffff
Ninguno
movwf....f,a
W -> (f)
1
0110 111a ffff ffff
Ninguno
mulwf....f,af * W
1
0000 001a ffff ffffNinguno
negf........f,a#f -> (f)1
0110 110a ffff ffffC, DC, Z, OV, N
rlcf.........f, d,aRotar Izquierda f -> (d)
1
0011 01da ffff ffff
C, Z, N
rlncf......f, d,aRotar Izquierda f sin Carry-> (d)10100 01da ffff ffffZ, N
rrcf........f, d,aRotar Derecha f -> (d)
1
0011 00da ffff ffff
C, Z, N
rrncf.....f, d,aRotar Derecha f sin Carry -> (d)1
0100 00da ffff ffffZ, N
setf........f, af = 1
1
0110 100a ffff ffffNinguno
subfwb.f, df - W - C -> (d)
1
0101 01da ffff ffff
C, DC, Z, OV, N
subwf....f, dW - f -> (d)1
0101 11da ffff ffffC, DC, Z, OV, N
subwfb.f, dW - f - C -> (d)1
0101 10da ffff ffffC, DC, Z, OV, N
swapf....f, d,aMsb -> Lsb -> (d)
1
0011 10da ffff ffff
Ninguno
tstfsz....f, aComprueba f, salta si f = 0
1 (2 o 3)
0110 011a ffff ffffNinguno
xorwf....f, d,aW XOR f -> (d)
1
0001 10da ffff ffff
Z, N


Operaciones de tamaño bit.

Son las denominadas, en anglosajón, Bit-Oriented File Register Operations, consisten en las instrucciones tamaño bit de los registros y el lugar de almacenar la operación correspondiente, en un literal, denominado 'f', o en una dirección de memoria correspondiente al bit del registro, denominado 'b'.

El set de instrucciones es el que se muestra en la siguiente tabla.

OperadorDescripciónCiclos de RelojOperador 16-bitFlags Afectados
bcf...........f, b,a
f = 0 -> (b)
11001 bbba ffff ffff
Ninguno
bsf...........f, b,af = 1 -> (b)1
1000 bbba ffff ffff
Ninguno
btfsc.......f, b,aSalta si f = 0
1 (2 o 3)
1011 bbba ffff ffff
Ninguno
btfss.......f, b,aSalta si f = 1
1 (2 o 3)
1010 bbba bfff ffff
Ninguno
btg..........f, b,aInvertir bit de f
10111 bbba bfff ffffNinguno


Operaciones de control.

Son las denominadas, en anglosajón, Control Operations, consisten en las instrucciones que se encargan del sentido del flujo del programa, así cómo de gobernar la pila entre otras funciones.

El set de instrucciones es el que se muestra en la siguiente tabla.

OperadorDescripciónCiclos de RelojOperador 16-bitFlags Afectados
bc...............n
Salta si C = 1
1 (2)
1110 0010 nnnn nnnn
Ninguno
bn............nSalta si es negativo
1 (2)
1110 0110 nnnn nnnnNinguno
bnc.............nSalta si C = 0
1 (2)
1110 0011 nnnn nnnnNinguno
bnn............n
Salta si no es negativo1 (2)
1110 0111 nnnn nnnnNinguno
bnov..........n
Salta si no hay desbordamiento
1 (2)
1110 0101 nnnn nnnnNinguno
bnz.............nSalta si no es cero
1 (2)
1110 0001 nnnn nnnnNinguno
bov.............nSalta si hay desbordamiento
1 (2)
1110 0100 nnnn nnnnNinguno
bra...........n
Salta a n
2
1101 0nnn nnnn nnnnNinguno
bz................nSalta si es cero
1 (2)
1110 0000 nnnn nnnnNinguno
call..........n,s
LLamada a subrutina
2
1110 110s kkkk kkkk
1111 kkkk kkkk kkkk
Ninguno
clrwdt........-Limpia watchdog
1
0000 0000 0000 0100#TO, #PD
daw..........-
Ajuste decimal W
1
0000 0000 0000 0111C, DC
goto............kIr a n
2
1110 1111 kkkk kkkk
1111 kkkk kkkk kkkk
Ninguno
nop..........-Sin operación
1
0000 0000 0000 0000Ninguno
pop..........-Apilar datos en la pila
1
0000 0000 0000 0110Ninguno
push........-Desapilar datos de la pila1
0000 0000 0000 0101Ninguno
rcall........nLLamada relativa a n
2
1101 1nnn nnnn nnnnNinguno
resetReset por software
1
0000 0000 1111 1111
Todos
retfie.......sSalida de una subrutina de interrupción
2
0000 0000 0001 000s
GIE/GIEH,
PEIE/GIEL
retlw.......kSalida de una subrutina con literal en W
2
0000 1100 kkkk kkkkNinguno
return.....sSalida de una subrutina
2
0000 0000 0001 001sNinguno
sleep.......-Entrada en modo Standby
1
0000 0000 0000 0011#TO, #PD


Operaciones con Literales.

Son las denominadas, en anglosajón, Literal Operations, consisten en las instrucciones que se encargan del manejo de literales.

El set de instrucciones es el que se muestra en la siguiente tabla.

OperadorDescripciónCiclos de RelojOperador 16-bitFlags Afectados
addlw........k
k + W -> (W)
1
0000 1111 kkkk kkkk
C, DC, Z, OV, N
andlw......kk AND W -> (W)
1
0000 1011 kkkk kkkkZ,N
iorlw.........kk OR W -> (W)
1
0000 1001 kkkk kkkkZ,N
lfsr............f,k
k -> f
1
1110 1110 00ff kkkk
0000 1001 kkkk kkkk
Ninguno
movlb.......k
k -> BSR<.3:0.>
1
0000 0001 0000 kkkkNinguno
movlw......kk -> W
1
0000 1110 kkkk kkkkNinguno
mullw......kk * W -> (W)
1
0000 1101 kkkk kkkkNinguno
retlw.......k
Salida de subrutina con literal k en W
2
0000 1100 kkkk kkkkNinguno
sublw........kk - W -> W
1
0000 1000 kkkk kkkkC, DC, Z, OV, N
xorlw......k
k XOR W -> (W)
1
0000 1010 kkkk kkkk Z,N


Operaciones con Datos de memoria y Memoria de Programa.

Son las instrucciones de manejo de tablas, ya sean en memoria de programa o en memoria ram de datos.

El set de instrucciones es el que se muestra en la siguiente tabla.

OperadorDescripciónCiclos de RelojOperador 16-bitFlags Afectados
TBLRD*
Lectura de tabla
2
0000 0000 0000 1000
Ninguno
TBLRD*+Lectura de tabla con postincremento

0000 0000 0000 1001Ninguno
TBLRD*-Lectura de tabla con postdecremento

0000 0000 0000 1010Ninguno
TBLRD+*
Lectura de tabla con preincremento

0000 0000 0000 1011 Ninguno
TBLWT*
Escritura en tabla
2 (5)
0000 0000 0000 1100Ninguno
TBLWT*+Escritura en tabla con postincremento

0000 0000 0000 1101Ninguno
TBLWT*-Escritura en tabla con postdecremento
0000 0000 0000 1110Ninguno
TBLWT+*Escritura en tabla con preincremento
0000 0000 0000 1111Ninguno




Nota: El carácter # significa señal negada.

0 comentarios: