Está en la página 1de 7

Universidad Nacional Pedro Ruiz

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

Lambayeque, 27 de Mayo del 2015

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
...
...

; Decrementa 0C y si es 0, salta una lnea


; no es 0, ejecuta esta lnea
; si es 0, viene hasta aqu.
;sigue programa

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

00 0111 dfff fff


f

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

Rota f izq por carry d

00 1101 dfff
ffff

1,2

RRF

f,d

Rota f dcha por carry 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.

Normalmente la funcin de decremento DECFSZ se usa para crear un


retardo, pero tambin se puede usar un INCFSZ. La cual no afecta al
registro STATUS.
Esto trabaja de la siguiente manera: Si el contenido de un archivo es
incrementado y el resultado no es 0, entonces la siguiente instruccin es
ejecutada con un GOTO una direccin anterior y ejecutar otro INCFSZ.
Eventualmente el archivo ser 1111 1111 y el prximo incremento lo
devolver a 0000 0000, el resultado ser cero y la instruccin GOTO ser
ignorada, ejecutndose la siguiente instruccin.

INSTRUCCIONES DE SALTO
btfsc

f,b

btfss

f,b

decfsz f,b
incfsz

f,b

goto

Salta si el bit b de f 01 10bb bfff ffff


es 0
01 11bb bfff ffff
Salta si el bit b de f
es 1
00 1011 dfff ffff
(f)-1 =destino y
salta si es 0

00 1111 dfff ffff


10 1kkk kkkk kkkk

(f)+1=destino y
salta si es 0
Salta a la direccin
k

También podría gustarte