Laboratorium z Techniki Mikroprocesorowej
Temat ćwiczenia:
1) Podprogramy, procedury – obsługa stosu i banków rej.
Data ćwiczenia:
Grupa
WIMiR AiR
1. Tatar
2. Radosław
Ocena:
1. Kod programu z opisem:
;Program glowny
MOV SP,#20H
;zmiana adresu wierzcholka stosu
MOV A,#3
;przypisanie dowolnych wartosci
MOV DPTR,#4
MOV 50H,#5
MOV 51H,#6
MOV R1,50H
MOV R2,51H
LJMP START
;skok do programu glownego
ORG 100H
;ustawienie adresu programu glownego
START:
;poczatek progrmau glownego
CALL TEST
;wywolanie procedury test
MOV R1,#22H
;ustawienie wartosci rejestru r1
LJMP START
;powrot do poczatku programu glownego
ENDED:
;etykieta konca pr. gl.
ORG 200H
;ustawienie adresu procedury
TEST:
;etykieta procedury
PUSH ACC
;wpisanie rejestrów na stos
PUSH DPL
PUSH DPH
PUSH PSW
PUSH B
SETB RS0
;ustawienie bitu na rs0 czyli przejscie na bank1
MOV R1,50H
;operacje na rejestrach
MOV R2,51H
MOV A,R1
;zanegowanie bitu rejestrow
CPL A
MOV R3,A
MOV A,R2
CPL A
MOV R4,A
SETB RS1
;przjescie na bank2
CLR RS0
MOV A,50H
;przemnozenie 50h i 51h
MOV B,51H
MUL AB
MOV R1,A
MOV R2,B
CLR RS0
;przejscie na bank0
CLR RS1
POP B
;zdjecie rejestrow ze stosu
POP PSW
POP DPH
POP DPL
POP ACC
RET
;powrot z procedury do miejsca wywolania
KONIEC: LJMP KONIEC ;zakonczenie programu
END
2. Listing programu:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File:
C:\Users\Tatar\Desktop\TM\lab_4_SPR.asm
Object File:
C:\Users\Tatar\Desktop\TM\lab_4_SPR.hex
List File: C:\Users\Tatar\Desktop\TM\lab_4_SPR.lst
Line I Addr Code Source
1:
;Program glowny
2:
0000 75 81 20 MOV SP,#20H
;zmiana adresu wierzcholka stosu
3:
0003 74 03
MOV A,#3
;przypisanie dowolnych wartosci
4:
0005 90 00 04 MOV DPTR,#4
5:
0008 75 50 05 MOV 50H,#5
6:
000B 75 51 06 MOV 51H,#6
7:
000E A9 50
MOV R1,50H
8:
0010 AA 51
MOV R2,51H
9:
10: 0012 02 01 00 LJMP START
;skok do programu glownego
11:
12:
N 0100
ORG 100H
;ustawienie adresu programu glownego
13: 0100
START:
;poczatek progrmau glownego
14:
15: 0100 12 02 00 CALL TEST
;wywolanie procedury test
16: 0103 79 22
MOV R1,#22H
;ustawienie wartosci rejestru r1
17: 0105 02 01 00 LJMP START
;powrot do poczatku programu glownego
18: 0108
ENDED:
;etykieta konca pr. gl.
19:
20:
N 0200
ORG 200H
;ustawienie adresu procedury
21: 0200
TEST:
;etykieta procedury
22:
23: 0200 C0 E0
PUSH ACC
;wpisanie rejestrów na stos
24: 0202 C0 82
PUSH DPL
25: 0204 C0 83
PUSH DPH
26: 0206 C0 D0
PUSH PSW
27: 0208 C0 F0
PUSH B
28:
29: 020A D2 D3
SETB RS0
;ustawienie bitu na rs0 czyli przejscie na bank1
30:
31: 020C A9 50
MOV R1,50H
;operacje na rejestrach
32: 020E AA 51
MOV R2,51H
33:
34: 0210 E9
MOV A,R1
;zanegowanie bitu rejestrow
35: 0211 F4
CPL A
36: 0212 FB
MOV R3,A
37: 0213 EA
MOV A,R2
38: 0214 F4
CPL A
39: 0215 FC
MOV R4,A
40:
41: 0216 D2 D4
SETB RS1
;przjescie na bank2
42: 0218 C2 D3
CLR RS0
43:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 021A E5 50
MOV A,50H
;przemnozenie 50h i 51h
45: 021C 85 51 F0 MOV B,51H
46: 021F A4
MUL AB
47: 0220 F9
MOV R1,A
48: 0221 AA F0
MOV R2,B
49:
50: 0223 C2 D3
CLR RS0
;przejscie na bank0
51: 0225 C2 D4
CLR RS1
52:
53: 0227 D0 F0
POP B
;zdjecie rejestrow ze stosu
54: 0229 D0 D0
POP PSW
55: 022B D0 83
POP DPH
56: 022D D0 82
POP DPL
57: 022F D0 E0
POP ACC
58:
59: 0231 22
RET
;powrot z procedury do miejsca wywolania
60:
61: 0232 02 02 32 KONIEC: LJMP KONIEC
;zakonczenie programu
62:
END
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
3. Tabelka:
Lp. Rozkaz
Wartość
SP
Wartość
PC
Zawartość stosu
(wszystkie bajty)
Opis
1.
CALL
22
0103
00,00,00
2.
Pierwszy rozkaz
procedury
3.
RET
4.
Pierwszy
rozkaz
programu
głównego
po CALL
4. Podsumowanie:
Na przykładzie powyższego programu zapoznaliśmy się z pojęciem stosu oraz banku rejestru.
Nauczyliśmy się wykonywać operacje na rejestrach różnych banków oraz wykorzystywać stos. Z użyciem
tej wiedzy napisaliśmy program zawierający procedurę.