Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EJERCICIO 6.1
Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y 7)
EJERCICIO 6.2
Escribir un programa que resuelva la ecuacin: (A + B) - C
EJERCICIO 6.3
Escribir un programa que sume dos nmeros de 16 bits A y B.
EJERCICIO 6.4
Escribir un programa que reste dos nmeros, A - B, de 16 bits cada uno.
;EJERCICIO 6.5
;
;(Para introducir un modo de realizar comparaciones ya que no existe una instruccin
;especfica de comparacin. Se introduce la instruccin clrf)
;
;Escribir un programa que compare dos nmeros A y B. Si son iguales, el resultado
;debe ser 0. Si A > B, el resultado debe ser la diferencia A - B, y si A < B el
;resultado debe ser la suma A + B.
;
List
p=16F84
;Tipo de procesador
include
P16F84.INC
;Incluimos fichero de smbolos y
etiquetas
NumeroA
NumeroB
Resultado
Inicio
Besmayor
equ
equ
equ
0x20
0x21
0x22
org
goto
0x00
Inicio
;Vector de Reset
org
0x05
movlw
movwf
movlw
movwf
datoA
NumeroA
datoB
NumeroB
movf
subwf
NumeroB,W
NumeroA,W
btfsc
goto
btfsc
goto
STATUS,Z
Iguales
STATUS,C
Aesmayor
movf
NumeroA,W
addwf
movwf
goto
Aesmayor
movwf
goto Stop
Resultado
;dem al anterior
Iguales
clrf
Resultado
;Pone a 0 el resultado
end
;EJERCICIO 6.6
;
;(Para manejar el direccionamiento indirecto utilizando el "registro" INDF. Introduce
;otra instruccin de salto condicional: decfsz).
;
;Escribir un programa para almacenar el valor 33 en 15 posiciones contiguas de la
;memoria de datos, empezando en la direccin 0x30
List
include
etiquetas
p=16F84
;Tipo de procesador
P16F84.INC
;Incluye fichero de smbolos y
Contador
equ
Primera
equ
Inicio
Bucle
0x20
0x30
org
goto
0x00
Inicio
;Vector de Reset
org
0x05
movlw
movwf
movlw
movwf
movlw
d'15'
Contador
Primera
FSR
0x33
movwf
INDF
incf
decfsz
goto
end
;EJERCICIO 6.7
;
;(Convierte un valor binario a BCD, muy til en Electrnica Digital. Introduce las
;instrucciones: xorlw, swapf e iorwf).
;
;Escribir un programa que convierta un nmero de 8 bits, escrito en binario
;natural, en su equivalente en BCD.
;
;El proceso es comprobar si el nmero es menor que d'10'. Si es as, su binario coincide
;con su BCD. Si no es as, le restamos d'10', incrementamos el BCD de las decenas y
;repetimos la operacin sucesivamente. Cuando stas llegan a 10, las ponemos a cero e
;incrementamos el BCD de las centenas (el nmero mximo que nos podemos encontrar
;es: 1111 1111 = FF = 255). Como la instruccin incf suma "1" al contenido de f, es
;decir, acta sobre el bit de menos peso de f, tendremos que intercambiar los nibbles
;cuando se trate de la cifra BCD de las decenas.
;
;Se utiliza la resta en complemento a dos, es decir, la resta equivale a la suma del
;minuendo con el complemento a dos del sustraendo. El complemento a dos se obtiene
;complementando todos los bits (complemento a 1) y sumando una unidad.
;
;
;Inicializacin
List
include
etiquetas
BCD_H
BCD_L
Provisional
temporal
Inicio
p=16F84
;Tipo de procesador
P16F84.INC
;Incluye fichero de smbolos y
equ
equ
equ
0x20
0x21
0x22
org
goto
0x00
Inicio
;Vector de Reset
org
movlw
clrf
clrf
0x05
dato
BCD_L
BCD_H
;Vamos a restar 10 para ver si el nmero en binario es mayor o no. Como la resta se
;hace en complemento a dos, se tiene: -10 = - 0000 0101 (10)1 = 1111 0101
; (10)2 = 1111 0110 = F6. Si no hay acarreo es que el sustraendo es mayor que el
;minuendo.
;Programa principal
BCD0
BCD1
provisional
BCD2
addlw
0xf6
movf
Provisional, W
goto
BCD0
;Recupera el resultado
;Continua la operacin.
addlw H'0A'
swapf
almacenaba
El..
iorwf
end
;EJERCICIO 6.8
;
;(Convierte un nmero de cuatro bits en binario natural en su equivalente en cdigo
;Gray, muy til en las tablas de Karnaugh. Introduce las instrucciones call y retlw).
;
;Escribir un programa que convierta un nmero de 4 bits escrito en binario
;natural en su equivalente en cdigo Gray.
List
include
etiquetas
Gray
Inicio
p=16F84
;Tipo de procesador
P16F84.INC
;Incluye fichero de smbolos y
equ
0x20
org
goto
0x00
Inicio
;Vector de Reset
org
0x05
movlw
b'binario'
;Carga en W el valor binario que queremos
;convertir a Gray
Tabla
;saltamos a la tabla de conversin
Gray
;guarda el resultado
fin
PCL, F
;suma al PC el nmero binario. El PC
;..y apunta a la instruccin correspondiente..
;..que ser la que se ejecute a continuacin
b'00000000' ;retornamos cargando en W el cdigo Gray del 0
b'00000001' ;retornamos cargando en W el cdigo Gray del 1
b'00000011' ;retornamos cargando en W el cdigo Gray del 2
b'00000010' ;retornamos cargando en W el cdigo Gray del 3
b'00000110' ;retornamos cargando en W el cdigo Gray del 4
b'00000111' ;retornamos cargando en W el cdigo Gray del 5
b'00000101' ;retornamos cargando en W el cdigo Gray del 6
b'00000100' ;retornamos cargando en W el cdigo Gray del 7
b'00001100' ;retornamos cargando en W el cdigo Gray del 8
b'00001101' ;retornamos cargando en W el cdigo Gray del 9
b'00001111' ;retornamos cargando en W el cdigo Gray del 10
b'00001110' ;retornamos cargando en W el cdigo Gray del 11
b'00001010' ;retornamos cargando en W el cdigo Gray del 12
b'00001011' ;retornamos cargando en W el cdigo Gray del 13
b'00001001' ;retornamos cargando en W el cdigo Gray del 14
b'00001000' ;retornamos cargando en W el cdigo Gray del 15
call
movwf
fin
Tabla
salta...
goto
addwf
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
end