Sunteți pe pagina 1din 4

8/11/16

INSTRUCCIONES ORIENTADAS AL
MANEJO DE BYTES
(REGISTROS)

CIRO MAURICIO LARCO BARROS

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

Borra un regis tro

Sintaxis

ADDWF f,d

Funcionamiento
Hexadecimal
Bits (OPCODE)

Add W to file regis ter (Aade W al regis tro)


07 ff
00 0111 dfff ffff

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

Es ta ins truccin borra un regis tro es pecfico, poniendo s us bits a cero

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.

Z vale 1 s i el res ultado de la operacin es 0.

DC vale 1 s i el res ultado de la operacin es un nmero s uperior a 15.

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

Complementa el regis tro F

Sintaxis
Funcionamiento
Hexadecimal

CLRW
Clear W
01 8f

Sintaxis
Funcionamiento
Hexadecimal

COMF f,d
Complement f
09 ff

Bits (OPCODE)

00 0001 0xxx xxxx

Bits (OPCODE)

00 1001 dfff ffff

Operacin

W =0

Operacin

d = NOT f (d puede s er W f).

Des cripcin

Es ta ins truccin borra el regis tro W s olamente

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

Regis tro STATUS

M odifica el bit Z.

Z vale 1 s i el res ultado de la operacin es 0.

Regis tro STATUS M odifica el bit Z y lo pone a 1 (ya que el res ultado de la operacin es 0).

Ejemplo

Tenemos el acumulador cargado con el valor 3F. Ponemos :


CLRF dato

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

Decrementa el regis tro f

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)

00 0011 dfff ffff

Bits (OPCODE)

00 1011 dfff ffff

Operacin

d = f 1 (d puede s er W f).

Operacin

d = f 1, s i d = 0 SALTA (d puede s er W f).

Des cripcin

Es ta ins truccin decrementa en una s ola unidad el regis tro "f".

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.

Regis tro STATUS

M odifica el bit Z.

Z vale 1 s i el res ultado de la operacin es 0.

Regis tro STATUS No modifica ningn bit de es tado


DECFSZ VALOR, W
INSTRUCCION 1
Ejemplo

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

1 (2) Si tiene que s altar ocupa dos ciclos

Accin

Suma una unidad al regis tro f

Accin

I ncrementa en 1 a f, y s i f= 0 s alta la s iguiente ins truccin

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

d = f + 1, s i d = 0 SALTA (d puede s er W f).

Des cripcin

Es ta ins truccin incrementa en una s ola unidad el regis tro "f".

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

INSTRUCCION2 (no s e s alta la inmediata s iguiente).

Regis tro STATUS M odifica el bit Z.

Z vale 1 s i el res ultado de la operacin es 0.


Ejemplo

Regis tro STATUS No modifica ningn bit de es tado.


Ejemplo

Si tenemos un regis tro llamado DIA = 7.


Aplicando la ins truccin
INCF DIA, 0,
tendremos W = 8 y DIA = 7.
Si aplicamos es ta otra
INCF DIA, 1,
tendremos DIA = 8.

Ciclos de mquina

1
Ciclos de mquina

Accin

Operacin lgica OR entre el acumulador y un regis tro

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

nada, el valor por defecto es 1 y s e guarda en f.


La operacin OR inclus ivo s uele llamars e OR a s ecas , pero s e pone as para diferenciarla de la Suma
Exclus iva que veremos ms adelante. La tabla de verdad de la s uma lgica es la que sigue:
ENTRADA
SALI DA
f
W
S
0
0
0
0
1
1
1
0
1
1
1
1
La operacin lgica que des cribe es ta ins truccin es es ta:
F+ W =S
Se puede ver que bas ta con que uno de los dos regis tros tenga un uno para que la s alida sea un uno tambin.

Regis tro STATUS

M odifica el bit Z.

Z vale 1 s i el res ultado de la operacin es 0.

Ciclos de mquina

Ejemplo 1

Ejecutamos las s iguiente s ins trucciones :


INCFSZ VALOR, W
; el res ultado s e almacenar en W
INSTRUCCION 1
; s alta aqu s i W0
INSTRUCCIN 2
; s alta aqu s i W=0
Si el contenido del regis tro VALOR es igual a 0 al incrementarlo en una unidad, 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
INSTRUCCION2 (no s e s alta la inmediata s iguiente).
1 (2) Si tiene que s altar ocupa dos ciclos

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

En es te s egundo ejemplo tenemos que W = 01110011 y f = 00101001, antes de ejecutar la


ins truccin IORWF f,d, y des pus obtenemos que:

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

Mueve el contenido de un regis tro al acumulador o al propio regis tro

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 ;))

Regis tro STATUS M odifica el bit Z.

Z vale 1 s i el res ultado de la operacin es 0.


Ejemplo
Tenemos el regis tro EDAD = 38
M OVF EDAD, 0
; hace que W = 38.
M OVF EDAD, 1
M OVF EDAD, W
M OVF EDAD
Ciclos de mquina

; hace que EDAD = 38.


; hace que W = 38.
; hace que EDAD = 38.

Accin

Mueve el acumulador al regis tro f

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

Regis tro STATUS No modifica ningn bit de es tado.

Regis tro STATUS No modifica ningn bit de es tado.

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

Rota a la izquierda el regis tro f

Accin

Rota a la derecha el regis tro f

Sintaxis

RLF f,d

Sintaxis

RRF f,d

Funcionamiento
Hexadecimal
Bits (OPCODE)

Rotate Left through Carry f


0D ff
00 1101 dfff ffff

Funcionamiento
Hexadecimal
Bits (OPCODE)

Rotate Right through Carry f


0C ff
00 1100 dfff ffff

Operacin

d = << 1 (d puede s er W f).

Operacin

d = f >> 1 (d puede s er W f).

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

Regis tro STATUS M odifica el bit C (CARRY).

Regis tro STATUS M odifica el bit C (CARRY).

Ejemplo

Ejemplo

Si tenemos el regis tro VALOR = 00000001 y aplicamos la ins truccin


RRF VALOR
Entonces el res ultado s er VALOR = 00000000 y el bit C = 1.
Si tenemos el regis tro VALOR = 10000000 y aplicamos la ins truccin
RRF VALOR
El res ultado s er VALOR = 01000000 y el bit C = 0.

Ciclos de mquina

Tenemos el regis tro VALOR = 00000001 y aplicamos la ins truccin


RLF VALOR
Entonces el res ultado s er VALOR = 00000010 y el bit C = 0.
Si tenemos el regis tro VALOR = 10000000 y aplicamos la ins truccin
RLF VALOR
El res ultado s er VALOR = 00000000 y el bit C = 1.

Ciclos de mquina

8/11/16

Accin

Res ta el contenido del regis tro W el regis tro f

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

f = 0123 SWAP 4567 de f

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

Regis tro STATUS M odifica los bits Z, DC y C.

Z vale 1 s i el res ultado de la operacin es 0.

Ejemplo

Regis tro STATUS No modifica ningn bit de es tado.

DC vale 1 s i el res ultado de la operacin es un nmero s uperior a 15.


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).
Segn s ean los valores de W y el regis tro DATO, s i aplicamos
SUBWF DATO

Ejemplo

obtendremos diferentes res ultados en el bit CARRY.


Si DATO = 3 y W = 2; el res ultado s er DATO = 1 y C = 1.
Si DATO = 2 y W = 2; el res ultado s er DATO = 0 y C = 1.
Si DATO = 1 y W = 2; el res ultado s er DATO = FFH y C = 0.

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

Operacin lgica OR-Exclus iva

Sintaxis

XORWF f,d

Funcionamiento
Hexadecimal
Bits (OPCODE)

Exclus ive OR W with f


06 ff
00 0110 dfff ffff

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

Tenemos VALOR = 00001111 y W = 00000000. Aplicamos la ins truccin SWAPF


SWAPF VALOR
; VALOR = 11110000B y W = 00000000B.
SWAPF VALOR, W ; VALOR = 00001111B y W = 11110000B.
Con la primera ins truccin modificamos el valor del regis tro DATO, y en la s egunda ins truccin
modificamos el valor del acumulador s in que vare el regis tro DATO
1

determina el des tino. Si no s e pone nada el valor por defecto es 1 y s e guarda en f


Al igual que las otras operaciones lgicas , la s uma exclusiva est tratada en el captulo de electrnica
digital. No obs tante expongo las tablas de verdad corres pondientes a esta operacin
ENTRADA
f
0
0
1
1

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

S-ar putea să vă placă și