Documente Academic
Documente Profesional
Documente Cultură
INSTRUCCIONES ORIENTADAS AL
MANEJO DE BYTES
(REGISTROS)
INGENIERO ELECTRICO
ESPECIALISTA EN DOCENCIA UNIVERSITARIA
MASTER EN SISTEMAS DE INFORMACION GERENCIAL
DOCTORANDO AUTOMATICA , ROBOTICA, VISION ARTIFICIAL
Accin
Suma el contenido del acumulador y el regis tro dado, y el res ultado lo guarda en d
Accin
Sintaxis
ADDWF f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
Sintaxis
Funcionamiento
Hexadecimal
Bits (OPCODE)
CLRF f
Clear file regis ter
01 8f
00 0001 1fff ffff
Operacin
d = W + f (d puede s er W f).
Operacin
F=0
Des cripcin
Comentarios
Ninguno
Des cripcin
Es ta ins truccin s uma el contenido de un regis tro es pecfico al contenido de W donde f puede s er un
regis tro cualquiera con un determinado valor.
Comentarios
Aunque ya conocemos el funcionamiento del bit d, lo repetir de nuevo para el res to de ins trucciones :
Si vale 1, el res ultado s e guarda en el regis tro f
Si vale 0, el res ultado s e guarda en el acumulador W
Regis tro STATUS M odifica los bits Z, DC y C.
C vale 1 s i el res ultado de la operacin es pos itivo o el bit 7 del regis tro que contiene el res ultado
vale 0. En cas o contrario C vale 0 (res ultado negativo).
Ejemplo
Regis tro STATUS M odifica el bit Z y lo pone a 1 (ya que el res ultado de la operacin es 0).
Tomamos como valores inciales W = 5 y DATO = 10, donde dato es un regis tro cualquiera.
ADDWF DATO
; DATO = 15 y W = 5.
ADDWF DATO, 1
ADDWF DATO, 0
ADDWF DATO, W
; DATO = 15 y W = 5.
; W = 15 y DATO = 10.
; W = 15 y DATO = 10.
Ejemplo
Tenemos un regis tro que s e llama dato y que vale 3F. Ponemos :
CLRF dato
Ahora dato vale 00
Ciclos de mquina
Ciclos de mquina
Accin
Borra el acumulador
Accin
Sintaxis
Funcionamiento
Hexadecimal
CLRW
Clear W
01 8f
Sintaxis
Funcionamiento
Hexadecimal
COMF f,d
Complement f
09 ff
Bits (OPCODE)
Bits (OPCODE)
Operacin
W =0
Operacin
Des cripcin
Des cripcin
Es ta ins truccin complementa un regis tro, es decir, los ceros los convierte en unos , y los unos en ceros.
Comentarios
Donde pone xxx en la ins truccin en hexadecimal, s ignifica que noo importa qu valor puede contener
Comentarios
ninguno
M odifica el bit Z.
Regis tro STATUS M odifica el bit Z y lo pone a 1 (ya que el res ultado de la operacin es 0).
Ejemplo
Ejemplo
Ahora W vale 00
Ciclos de mquina
Supongamos que tenemos un regis tro fdenominado regis t = 00111011; cuando es aplicada la ins truccin
tenemos que los 0 cambian a valores 1 y los valores 1 cambian a 0 obtenindos e un registro invertido. El
res ultado s er regis t = 11000100.
Ciclos de mquina
8/11/16
Accin
Accin
Decrementa el regis tro f, y s i el res ultado es cero, s e salta una ins truccin.
Sintaxis
Funcionamiento
Hexadecimal
DECF f,d
Decrement f
03 ff
Sintaxis
Funcionamiento
Hexadecimal
DECFSZ f,d
Decrement f, s kip if 0
0B ff
Bits (OPCODE)
Bits (OPCODE)
Operacin
d = f 1 (d puede s er W f).
Operacin
Des cripcin
Des cripcin
Es ta ins truccin decrementa el contenido del regis tro direccionado por el parmetro f, y s i el res ultado es
0 s alta la ins truccin s iguiente. Si no, s igue con s u curs o habitual
Comentarios
ninguno
Comentarios
Aqu nos enfrentamos ante la primera ins truccin que plantea una condicin, y que modifica el curs o del
PC.
M odifica el bit Z.
INSTRUCCIN 2
Si el contenido del regis tro VALOR al decrementarlo es igual a 0, s e guarda el res ultado en el
acumulador y s igue con la INSTRUCCION2, s altndos e la INSTRUCCION1.
Si el res ultado que guardamos en W no es 0, s igue con la INSTRUCCION1 y despus con la
Ejemplo
Nues tro regis tro s e llama regis t = 5; cuando s e aplica la ins truccin DECF f,0 el res ultado s er W=4.
Por el contrario, s i aplicamos la ins truccin DECF f,1 el res ultado s er regis t = 4.
Ciclos de mquina
Ciclos de mquina
Accin
Accin
Sintaxis
I NCF f,d
Sintaxis
I NCFSZ f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
Increment f
0A ff
00 1010 dfff ffff
Funcionamiento
Hexadecimal
Bits (OPCODE)
Increment f, Skip if 0
0F ff
00 1111 dfff ffff
Operacin
d = f + 1 (d puede s er W f).
Operacin
Des cripcin
Des cripcin
Es ta ins truccin incrementa en una s ola unidad el regis tro "f", en la cual s i el res ultado d es igual a
cero, entonces s alta la ins truccin s iguiente.
Comentarios
Ninguno
Comentarios
Ninguno
Ciclos de mquina
1
Ciclos de mquina
Accin
Sintaxis
Funcionamiento
Hexadecimal
Bits (OPCODE)
Operacin
Des cripcin
I ORWF f,d
Inclus ive Or W with F
04 ff
00 0100 dfff ffff
d = W OR f (d puede s er W f).
Es ta ins truccin realiza una operacin lgica OR inclus ivo entre el acumulador W y el regis tro direccionado
por el parmetro f. El parmetro d determina donde s e almacenar el res ultado de la operacin. Si no s e pone
Comentarios
M odifica el bit Z.
Ciclos de mquina
Ejemplo 1
Supongamos que W= 00001111 y f = 11110000 antes de ejecutar la ins truccin I ORWF f,d, y
des pus obtenemos :
ENTRADA
RESULTADO
W + f
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
8/11/16
Ejemplo 2
ENTRADA
W f
RESULTADO
W + f
Bit 7 0
Bit 6 1
Bit 5 1
Bit 4 1
Bit 3 0
Bit 2 0
Bit 1 1
Bit 0 1
Al igual que el cas o anterior, el microcontrolador compara bit a bit los dos regis tros , dos a dos,
obteniendo el res ultado expres ado en W + f
Accin
Sintaxis
MOVF f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
M ove f
08 ff
00 1000 dfff ffff
Operacin
d = f (d puede s er W f).
Des cripcin
Es ta ins truccin mueve el contenido del regis tro f en el mis mo regis tro f o en W. D determina el des tino
del res ultado. Si no s e pone nada, el valor por defecto es 1 y s e guarda en f.
Comentarios
Se s uele us ar para mover datos al acumulador. El hecho de que s e pueda mover s obre s mis mo no es otro
que para mirar el res ultado en el regis tro STATUS (no es ninguna tontera ;))
Accin
Accin
No opera
Sintaxis
Funcionamiento
Hexadecimal
Bits (OPCODE)
MOVWF f
M ove W to f
00 ff
00 0000 1fff ffff
Sintaxis
Funcionamiento
Hexadecimal
Bits (OPCODE)
NOP
No Operation
00 00
00 0000 0xx0 0000
Operacin
f= W
Operacin
Ninguna
Des cripcin
Es ta ins truccin copia el contenido del acumulador W en el regis tro direccionado por el parmetro f.
Des cripcin
Es ta ins truccin no reliza ninguna ejecucin, pero s irve para gas tar un ciclo de mquina, equivalente a 4
de reloj
Comentarios
No exis te el parmetro d (lgico, o no? En es te cas o no s e puede copiar el acumulador s obre s mis mo)
Comentarios
Ninguno
Ejemplo
Si queremos es cribir el valor 10H en el regis tro TM R0, que es t s ituado en la direccin 01h, tendremos
que cargar primero el valor en el acumulador y des pus copiarlo al regis tro.
M OVWF 10H
; cargar el valor 10H en el acumulador.
M OVWF 01H
; copia el acumulador en la direccin 01H.
O es crito de otra manera:
M OVWF 10H
; cargar el valor 10H en el acumulador.
M OVWF TM R0
; copia el acumulador en el regis tro TM R0.
Ejemplo
Si us amos un cris tal de cuarzo de 4 M hz. en el os cilador, podremos obtener un retardo igual a un
micros egundo por cada ins truccin NOP que ins ertemos en el cdigo del programa:
RETARDO NOP
NOP
NOP
RETURN
Cada vez que llamemos a la s ubrutina RETARDO, obtendremos 3 micros egundos de demora.
Ciclos de mquina
Ciclos de mquina
Accin
Accin
Sintaxis
RLF f,d
Sintaxis
RRF f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
Funcionamiento
Hexadecimal
Bits (OPCODE)
Operacin
Operacin
Des cripcin
Es ta ins truccin rota a la izquierda todos los bits del regis tro direccionado por el parmetro fpas ando por
el bit CARRY del regis tro STATUS (des de los bits menos s ignificativos a los ms significativos ).
Es como s i multiplicramos por dos el contenido del regis tro.
Veamos el regis tro fde forma grfica:
El bit D7 pas a al CARRY del regis tro STATUS, el contenido del CARRY pas a al D0, el D0 al D1, etc.
Ninguno
Des cripcin
Es ta ins truccin rota a la derecha todos los bits del regis tro direccionado por el parmetro fpas ando por el
bit CARRY del regis tro STATUS (des de los bits ms s ignificativos a los menos s ignificativos ).
Es como s i dividiramos por dos el contenido del regis tro.
Veamos el regis tro fde forma grfica:
El bit C del regis tro STATUS pas a al D7, el D0 pas a al bit C, el D1 al D0, etc.
El bit d determina el des tino del res ultado. Si no s e pone nada, el valor por defecto es 1 y s e guarda en f.
Comentarios
Ninguno
Comentarios
Ejemplo
Ejemplo
Ciclos de mquina
Ciclos de mquina
8/11/16
Accin
Accin
I nvierte los dos nibbles que forman un byte dentro de un regis tro
Sintaxis
SUBWF f,d
Sintaxis
SWAPF f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
Subtract W from f
02 ff
00 0010 dfff ffff
Funcionamiento
Hexadecimal
Bits (OPCODE)
Swap nibbles in f
0E ff
00 1110 dfff ffff
Operacin
d = f W (d puede s er W f).
Operacin
Des cripcin
Es ta ins truccin res ta el valor contenido en el acumulador W del valor contenido en el regis tro
direccionado por el parmetro f. El parmetro ddetermina el des tino. Si no s e pone nada el valor por
defecto s er 1 y s e almacenar en f.
Ninguno
Des cripcin
Es ta ins truccin intercambia el valor de los 4 bits ms s ignificativos (D7-D4) contenidos en el regis tro f,
con los 4 bits menos s ignificativos (D3-D0) del mis mo. El parmetro d determina el des tino. Si no s e
pone nada, el valor por defecto es 1 y s e guarda en f.
Ninguno
Comentarios
Ejemplo
Ejemplo
Ciclos de mquina
Ciclos de mquina
Vemos que C = 1 porque el res ultado es pos itivo y C = 0 cuando el res ultado es negativo.
1
Accin
Sintaxis
XORWF f,d
Funcionamiento
Hexadecimal
Bits (OPCODE)
Operacin
d = W OR f
Des cripcin
Es ta ins truccin efecta la operacin lgica XOR (OR exclus ivo) entre el valor contenido en el
acumulador W y el valor contenido en el regis tro direccionado por el parmetro f. El parmetro d
Comentarios
Comentarios
W
0
1
0
1
S ALIDA
S
0
1
1
0
La s alida nicamente s e podr a nivel alto cuando las dos entradas s ean distintas . Es to es til cuando
tenemos una s uma lgica en la que 1 + 1 es 10 y nos llevamos 1.
Es ta operacin algebraicamente s e expres a as : S = f + W
Regis tro STATUS M odifica el bit Z.
Z vale 1 s i el res ultado de la operacin es 0.
Ciclos de mquina 1