Politechnika Lubelska w Lublinie |
Laboratorium Techniki Mikroprocesorowej |
||||
|
Ćwiczenie Nr 3 |
||||
Nazwisko: Olszewski Paluch
|
Imię: Wojciech Marek |
Semestr V |
Grupa ED 5.2 |
Rok akad. 2000/2001 |
|
Temat ćwiczenia: Pamięć wewnętrzna RAM. Organizacja i wykorzystanie stosu.
|
Data wykonania: 2000.10.23 |
Ocena
|
Celem ćwiczenia jest zapoznanie się z wewnętrzną pamięcią RAM (pamięć o dostępie swobodnym), która może być zarówno odczytywana jak i zapisywana. W systemie mikroprocesorowym służy ona do przechowywania danych.
Zadanie 3.
Akumulator umieszczony jest pod adresem 0E0H. Przy adresowaniu rejestrowym akumulator oznaczamy przez A (rozkazy nie zawierają w swoim kodzie jego adresu), natomiast przy adresowaniu bezpośrednim przez ACC (adres umieszczony w kodzie rozkazu). Przy oznaczeniu A lub ACC zostanie zapisany cały adres natomiast przy zapisie np.:
SETB ACC.x zostanie ustawiony bit x akumulatora (adresowanie bitowe).
Zadanie 4.
Następny program przedstawia posługiwanie się rejestrami R0-R7 zamiast innymi komórkami pamięci, co jest czasami bardzo wygodne i efektywne. W tym przykładzie zastosowano adresowanie bezpośrednie przy zapisie danych i adresowanie rejestrowe przy odczycie danych.
Listing programu przedstawia się następująco:
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
LJMP START
ORG 100H
START:
MOV B0R7,#0 ;wpisz numer banku
MOV B1R7,#1 ;do rejestru R7
MOV B2R7,#2
MOV B3R7,#3
LCALL LCD_CLR ;wyczyść wyświetlacz LCD
;bank 0
MOV A,R7 ;A <- R7=0
LCALL WRITE_HEX ;akumulator na LCD
SETB RS0 ;bank 1
MOV A,R7 ;A <- R7=1
LCALL WRITE_HEX
SETB RS1 ;bank 3
MOV A,R7 ;A <- R7=3
LCALL WRITE_HEX
CLR RS0 ;bank 2
MOV A,R7 ;A <- R7=2
LCALL WRITE_HEX
LJMP $
Stosując pracę krokową zaobserwowałem stan akumulatora, rejestru stanu PSW oraz stan wyświetlacza LCD, co przedstawia poniższa tabela:
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
A |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
- |
- |
- |
- |
0 |
0 |
- |
- |
- |
00 |
00 |
- |
- |
- |
1 |
1 |
- |
- |
- |
0001 |
01 |
- |
- |
- |
0 |
1 |
- |
- |
- |
000103 |
03 |
- |
- |
- |
1 |
1 |
- |
- |
- |
00010302 |
02 |
Zawartość rejestrów R7 w poszczególnych bankach przedstawia poniższa tabela:
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bank 0 |
00 |
- |
- |
- |
- |
- |
- |
- |
Bank 1 |
01 |
- |
- |
- |
- |
- |
- |
- |
Bank 2 |
02 |
- |
- |
- |
- |
- |
|
- |
Bank 3 |
03 |
- |
- |
- |
- |
- |
- |
- |
Zadanie 5.
Modyfikując przykład z zadania nr5 należało zapełniamy zawartością EEH wybraną przestrzeń adresową, np. od 40H do 48H - wykorzystując adresowanie pośrednie.
LJMP START
ORG 100 H
START :
MOV R0, # 40 H ;do R0 wpisz liczbę 40H
;która będzie adresem
MOV R2, # 9 ;do R2 wpisz liczbę 9
;która będzie licznikiem
;pętli
LOOP : ;zapisz wartość EEH w 9
;komórkach pamięci
;począwszy od adresu
;40H do 48H
@R0, # EE H ;wpisz liczbę EEH pod
;adres umieszczony w R0
INC R0 ;zwiększ adres
DJNZ R2, LOOP ;powtórz zapis zgodnie z
;licznikiem pętli - 9 razy
SJMP $
Zadanie 10.
Zadanie to polegało na określeniu ilości miejsca na stosie dla przykładu 5.2Zauważamy .że do stosu przy użyciu instrukcji PUSH włożone są 3 komórki pamięci (rejestry specjalne) ACC,B,PSW, a więc przykład potrzebuje 3 komórek w stosie.W podprogramie BIN _BCD: ,w momencie schowania setek , w stosie jest tylko jedna komórka ACC.