Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FACULTAD DE Gallo
CIENCIAS FSICAS Y
MATEMATICAS
SISTEMAS DIGITALES
II
Incremento y Decremento en
Assembler
Asignatura
FACFYM
Sistemas Digitales II
Docente
Chaman Cabrera, Luca
Alumnos
Delgado Rimarachin Jhon
Tigre Seminario Jair
Vela Ortiz Eduardo
Ziga Pea Luis
DECREMENTO E INCREMENTO
DECFSZ
CONSTRUCCIN DE BUCLES
En el desarrollo de aplicaciones en base a microcontroladores es muy comn emplear
bucles, ya que permiten ejecutar un conjunto de instrucciones un cierto nmero de
veces.
La implementacin de bucles se realizan con la instruccin: DECFSZ F,d .
Normalmente el uso de la instruccin DECFSZ F,d es con el destino d=1, donde F
hace las funciones de una variable que mantiene el nmero de veces que se va a
ejecutar un conjunto de instrucciones y puede tomar valores de 0 a 255 (00H -FFH).
Si despus de decrementar F el resultado es cero el CPU se saltar a la siguiente
instruccin, rompiendo de esta manera la secuencialidad y la duracin de esta
instruccin ser de 2ci.
Si despus de decrementar F el resultado de la operacin no es cero, el CPU
continuar con la siguiente instruccin; y la duracin de esta instruccin es de 1ci.
Generalmente que le sigue a DECFSZ es la instruccin GOTO.
DECFSZ 0Ch,0
GOTO ret
...
...
INCF
La instruccin INCF incrementa un registro. Ms precisamente lo que hace es tomar
el contenido de un registro (que es indicado en la instruccin), sumarle 1 y almacenar
el resultado en el mismo registro o bien en el registro de trabajo w.
La instruccin se completa de la siguiente manera: INCF f, d
Donde f es un registro cualquiera y d indica uno de dos posibles destinos; el mismo
registro al cual se hace referencia con f o, el registro de trabajo w (tambin llamado
acumulador.
As es que si tienes el registro 0x45 con el contenido 0x10 y el PIC ejecuta la
instruccin: INCF 0x45, f El registro 0x45 tendr un nuevo contenido y este ser 0x11
(mientras
que
el
contenido
de
w
no
ser
afectado)
En las mismas condiciones, la instruccin: INCF 0x45, w tendr el siguiente resultado:
el registro 0x45 permanecer en el valor 0x10 y el registro de trabajo w tomar el
valor
0x11
Slo resta agregar que si el incremento se efecta sobre un registro que cuyo valor
(previo a la ejecucin) es 0xFF (o 255) dado que incrementamos bytes el siguiente
valor ser 0x00 y el indicador de cero Z se pondr en 1 Esto es, el resultado de la
operacin INCF afecta tambin el bit de estado z (cero) ponindolo en 1 si el
resultado de la operacin es cero o en cero si el resultado de la operacin es distinto
de cero.
REPERTORIO 35 INSTRUCCIONES
Las 35 instrucciones de la gama media de Microchip las encontraremos resumidas en
la siguiente tabla. w es el acumulador, f representa un registro cualquiera y C, DC, Z
los flags del registro STATUS.
Instrucciones orientadas a registros
MNEMNICO
OPERANDOS
DESCRIPCIN
CDIGO OP
BANDERA
S
NCI
C
NOTA
S
ADDWF f,d
w+fd
C, DC, Z
1,2
ANDWF f,d
w AND f d
00 0101 dfff
ffff
1,2
CLRF
00 h f
00 0001 1fff
ffff
CLRW
00 h w
00 0001 0xxx
xxxx
COMF
f,d
Complemento de f d
00 1001 dfff
ffff
1,2
DECF
f,d
f-1d
00 0011 dfff
ffff
1,2
DECFS
Z
f,d
f - 1 d (si es 0 salta)
00 1011 dfff
ffff
Ninguna
1(2)
1,2,3
INCF
f,d
f+1d
00 1010 dfff
ffff
1,2
INCFSZ f,d
f + 1 d (si es 0 salta)
00 1111 dfff
ffff
Ninguna
1(2)
1,2,3
IORWF
f,d
w OR f d
00 0100 dfff
ffff
1,2
MOVF
f,d
fd
00 1000 dfff
ffff
1,2
MOVW
F
wf
00 0000 1fff
ffff
Ninguna
NOP
No operacin
00 0000 0xx0
0000
Ninguna
RLF
f,d
00 1101 dfff
ffff
1,2
RRF
f,d
00 1100 dfff
ffff
1,2
SUBWF f,d
f-wd
00 0010 dfff
ffff
C,DC,Z
1,2
SWAPF
Intercambia nibbles de f
d
00 1110 dfff
ffff
Ninguna
1,2
w XOR f d
00 0110 dfff
ffff
1,2
f,d
XORWF f,d
EJEMPLO:
INCF
total,F
;(total) + 1 = (total)
Antes:
(total)
= 0xFF
Z=?
Despues:
(total)
= 0x00
Z=1
EJEMPLO:
INCF
Antes:
Despues:
total_W
(total) = 0x06
(total) = 0x06
;(total) + 1 = (W)
(W)=?
Z=?
(W)=0x07
Z=0
INCFSZ
Significa Incrementar el archivo f y salta si es 0 .
INCFSZ 00 a 1F,0 El resultado estar en W.
INCFSZ 00 a 1F,1 El resultado estar en f.
INSTRUCCIONES DE SALTO
btfsc
f,b
btfss
f,b
decfsz f,b
incfsz
f,b
goto
(f)+1=destino y
salta si es 0
Salta a la direccin
k