SPRAWOZDANIE Z LABORATORIUM TECHNIKI MIKROPROCESOROWEJ
Ćwiczenie NR 2.
PAMIĘĆ WEWNĘTRZNA RAM.
ORGANIZACJA I WYKORZYSTANIE STOSU.
Wykonali:
Marek Wojtak,
Radziszewski Sławomir.
Data wykonania: 20.10.1997
***************************************************************************
Zadanie nr 1.
Adresowanie rejestrowe akumulatora.
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 1 - AKUMULATOR
;************************************************
1 LJMP START
2 ORG 100H
START:
3 LCALL LCD_CLR ;wyczyść wyświetlacz LCD
4 MOV A,#10H ;wpisz liczbę do A
5 LCALL WRITE_HEX ;podprogram systemuDSM-51
;liczba z akumulatora
;na wyświetlacz LCD
6 MOV ACC,#20H ;wpisz liczbę do ACC
7 LCALL WRITE_HEX ;akumulator na LCD
8 LJMP $
W tabeli zawarte są zawartości rejestru PSW oraz stan wyświetlacza LCD.
Numer |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
|
lini |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
|
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
|
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
|
4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
- |
|
5 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10 |
|
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
10 |
|
7 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1020 |
|
8 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1020 |
|
Zadanie 2.
Adresowanie bezpośrednie wybranych bitow akumulatora.
1 LJMP START
ORG 100H
START:
2 LCALL LCD_CLR ;wyczyść wyświetlacz LCD
3 MOVE A,#0
4 SETB ACC.1
5 SETB ACC.2
6 CALL WRITE_HEX ;akumulator na LCD
7 JMP $
Stany rejestru PSW oraz stan wyświetlacza LCD.
Numer |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
ACC |
lini |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
0 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
21H |
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
- |
0H |
4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
2H |
5 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
- |
6H |
6 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
6 |
21 |
Zadanie 3.
Adresy bitów nie różnią się w sposób zasadniczy od adresów bajtów. O tym czy jest to adres bitu czy komórki pamięci (rejestru) decyduje mikroprocesor zależności od rozkazu jakiego użyliśmy.
Część bitów podobnie jak i rejestry posiada swoje, znane asemblerowi nazwy, których możemy używać.
np. możemy napisać zarówno MOVE ACC,#20 jak i MOVE E0H,#20.
Zadanie 4.
Obserwacja stanu akumulatora, rejestru PSW, stanu wyświetlacza LCD na przykladzie zawartości rejestru R7 w bankach 0,1,2,3.
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 3 - REJESTRY R0..R7
;************************************************
B0R7 EQU 7 ;rejestr R7 z banku 0
B1R7 EQU 8+7 ;rejestr R7 z banku 1
B2R7 EQU 10H+7 ;rejestr R7 z banku 2
B3R7 EQU 18H+7 ;rejestr R7 z banku 3
1 LJMP START
ORG 100H
START:
MOV B0R7,#0 ;wpisz numer banku
MOV B1R7,#1 ;do rejestru R7
MOV B2R7,#2
MOV B3R7,#3
2 LCALL LCD_CLR ;wyczyść wyświetlacz LCD
;bank 0
3 MOV A,R7 ;A <- R7=0
4 LCALL WRITE_HEX ;akumulator na LCD
5 SETB RS0 ;bank 1
6 MOV A,R7 ;A <- R7=1
7 LCALL WRITE_HEX
8 SETB RS1 ;bank 3
9 MOV A,R7 ;A <- R7=3
10 LCALL WRITE_HEX
11 CLR RS0 ;bank 2
12 MOV A,R7 ;A <- R7=2
13 LCALL WRITE_HEX
14 LJMP $
Zawartości stanów akumularora, rejestru PSW, wyświetlacza LCD.
Numer |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
ACC |
lini |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
0 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
21H |
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
- |
0 |
4 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
00 |
21H |
5 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
00 |
21H |
6 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
00 |
01H |
7 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0001 |
19H |
8 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0001 |
19H |
9 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0001 |
03H |
10 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
000103 |
FFH |
11 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
000103 |
FFH |
12 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
000103 |
02H |
13 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
000103 |
00H |
Zawartość rejestru R7 w poszczególnych bankach.3
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bank 0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Bank 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Bank2 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Bank3 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
Wnioski:
W ćwiczeniu zapoznaliśmy się ze sposobami adresowania rejestrowego i bezpośredniego na przykładzie akumulatora. Przebieg wykonanego ćwiczenia podobnie jak i wykonanie sprawozdania nie nastręczyły większych problemów.