You are on page 1of 3

E LECTR ONICA

D IGITAL II
FCEFyN
Universida Nacional de Cordoba

P R ACTICO
2

Esteban Andres Morales


1 de abril de 2014

P ROBLEMA 2.1

1
2

Escribir un programa que sume dos valores guardados en 21H y 22H con resultado en 23H y 24H.

3
4
5
6

1
2
3
4
5
6
7
8
9
10
11
12

nro1 equ 21h;


nro2 equ 22h;
;------------------MAIN:
movf nro1,w;
addwf nro1,w;
movwf 23h;
movwf 24h;
goto FIN;
;------------------FIN:
sleep;

7
8
9
10
11
12

nroA equ 21h;


nroB equ 22h;
nroC equ 23h;
;------------------MAIN:
movf nroA,w;
addwf nroB,w;
subwf nroC,w;
goto FIN;
;------------------FIN:
sleep;

P ROBLEMA 2.3
Escribir un programa que sume dos numeros de 16
bits A (20H 21H) y B (22H y 23H) y el resultado
colocarlo en A.

P ROBLEMA 2.2
Escribir un programa que resuelva la ecuacion: (A +
B) C (posiciones 21H, 21H y 22H).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

nroA_Alto equ 20h;


nroA_Bajo equ 21h;
nroB_Alto equ 22h;
nroB_Bajo equ 23h;
;------------------MAIN:
movf nroA_Bajo,0;
addwf nroB_Bajo,0;
movwf nroA_Bajo;
btfss STATUS, 6;
incf nroA_Alto, 1;
movf nroA_Alto, 0;
addwf nroB_Alto, 0;
movwf nroA_Alto;
goto FIN;
;------------------FIN:
sleep;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

P ROBLEMA 2.4

21
22
23

Escribir un programa que su ejecucion demore un


milisegundo (Cristal de 4MHz).

24
25
26
27

1
2
3
4
5
6
7
8
9
10
11
12
13
14

cont equ 20h;


;------------------MAIN:
MILI_SEG:
movlw 250d;
movwf cont;
CICLO:
nop;
decfsz cont,1;
goto CICLO;
goto FIN;
;------------------FIN:
sleep;

P ROBLEMA 2.5

28
29
30
31
32
33

cont1 equ 20h;


cont2 equ 21h;
cont3 equ 22h;
;------------------MAIN:
movlw 4d;
movwf cont3;
CICLO3:
call 250_MILI;
decfsz cont3,1;
goto CICLO3;
goto FIN;
;------------------250_MILI:
movlw 250d;
movwf cont2;
CICLO2:
call MILI_SEG;
decfsz cont2,1;
goto CICLO2;
return
;------------------MILI_SEG:
movlw 250d;
movwf cont1;
CICLO1:
nop;
decfsz cont1,1;
goto CICLO1;
return
;------------------FIN:
sleep;

P ROBLEMA 2.6
Escribir un programa que compare dos numeros 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. (A en posicion
30D, B en 31D y R en 32D).

Escribir un programa que su ejecucion demore un


milisegundo (Cristal de 4MHz).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

nroA equ 30d;


nroB equ 31d;
res equ 32d;
;------------------MAIN:
movf nroB,0;
subwf nroA,0;
btfsc STATUS, 7;zero en 1?
movlw 0h;
btfsc STATUS, 6;sign en 1?
call SUMA;
movwf res;
goto FIN;
;------------------SUMA:
movf nroB,0;
addwf nroA,0;
return;
;------------------FIN:
sleep;

1
2
3
4
5
6
7
8
9

P ROBLEMA 2.9
Idem anterior, pero de la zona Nums (de 20H a 30H
inclusive).
1
2
3
4
5
6
7

P ROBLEMA 2.7

8
9
10

Escribir un programa para almacenar el valor 33D


en 15 posiciones contiguas de la memoria de datos,
empezando en la direccion 0x30.

11
12
13
14
15
16
17

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

cont equ 30d;


puntero equ 1h;
;------------------MAIN:
movlw 15d;
movwf cont;
movlw 0x30;
movwf puntero;
movlw 33d;
CICLO;
movwf puntero;
incf puntero;
decfsz cont,1;
goto CICLO;
goto FIN;
;------------------FIN:
sleep;

num equ 0x20;


;------------------MAIN:
movlw 48d;
subwf num,0;
goto FIN;
;------------------FIN:
sleep;

cont equ 31h;


;------------------MAIN:
movlw 20h;
movwf FSR;
movlw 10d;
movwf cont;
CICLO:
movlw 48d;
subwf FSR,0;
incf FSR;
decfsz cont,1;
goto CICLO;
goto FIN;
;------------------FIN:
sleep;

P ROBLEMA 2.10
Escribir un programa que convierta un numero de 4
bits escrito en binario natural en su equivalente en
codigo Gray. (NumB 32D y NumG 33D)
1
2
3
4
5
6
7
8
9
10
11

num_bin equ 32d;


num_gray equ 33d;
;------------------MAIN:
rrf num_bin,0;
xorwf num_bin,0;
movwf num_gray;
goto FIN;
;------------------FIN:
sleep;

P ROBLEMA 2.8
Escribir un programa que convierta un numero de 8
bits, escrito en ASCII, en su equivalente en BCD.
Num en 0x20.

You might also like