Politechnika Lubelska |
Laboratorium Podstaw Systemów Mikroprocesorowych. |
||||
|
Ćwiczenie Nr 3a |
||||
Nazwisko: Bryda Bator Kozina |
Imię: Artur Tomasz Michał |
Semestr V |
Grupa ED 5.3 |
Rok akad. 1997/98 |
|
Temat ćwiczenia: Pamięć wewnętrzna RAM. |
Data wykonania 24.10.1997 |
Ocena
|
Pamięć wewnętrzna ram.
pamięć wewnętrzna ram - akumulator:
Zadanie 1
Dokonano operację adresowania rejestrowego akumulatora.
Listing programu:
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 1 - AKUMULATOR
;************************************************
LJMP START
ORG 100H
START:
LCALL LCD_CLR ;wyczyść wyświetlacz LCD
MOV A,#10H ;wpisz liczbę do A
LCALL WRITE_HEX ;podprogram systemuDSM-51
;liczba z akumulatora
;na wyświetlacz LCD
MOV ACC,#20H ;wpisz liczbę do ACC
LCALL WRITE_HEX ;akumulator na LCD
LJMP $
Stosując pracę krokową przy użyciu komputera spisano zawartość rejestru PSW oraz stan wyświetlacza LCD.
tabela(wyniki programu):
Bit |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
Flaga |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1020 |
Zadanie 2
Modyfikując program z zadania 1 wykonano adresowanie bezpośrednie wybranych bitów akumulatora.
W przykładzie tym wykorzystano program z zadania 1 dodając w nim po obu instrukcjach MOV odpowiednio instrukcje:
SETB ACC,3
SETB ACC,0
Zawartość rejestru PSW oraz stan wyświetlacza LCD zapisano w tabeli poniżej:
Bit |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
Flaga |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
18 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1821 |
Zadanie 3
W jaki sposób rozróżnia się adres akumulatora od adresów poszczególnych bitów?
Poszczególne bity w rejestrach mogą mieć takie same adresy, jak adresy rejestrów, gdyż adresy bitów są wykorzystywane w innych rozkazach niż adresy rejestrów. To rozkaz wie , czy podana liczba jest adresem bitu czy rejestru. Dla przykładu adresu poszczególnego bitu można się spodziewać po instrukcji SETB (ustaw bit danej komórki). Natomiast adres akumulatora może wystąpić np. po instrukcji MOW (wpisz).
Zadanie 4
Pamięć wewnętrzna RAM - rejestry R0..R7:
Listing programu:
;************************************************
;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
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ą zaobserwowano stan akumulatora, rejestru PSW oraz stan wyświetlacza LCD na przykładzie zawartości rejestru R7 w bankach 0,1,2,3.
Wyniki przedstawiono w tabelach:
Bit |
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
LCD |
A |
Flaga |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
- |
- |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
00 |
21 |
|
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0001 |
19 |
|
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
000103 |
FF |
|
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
00010302 |
00 |
Zawartość rejestrów R7 w poszczególnych bankach:
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 |
Bank 2 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Bank 3 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
Zadanie 6
Stosując adresowanie bitowe ustawiono zawartość komórki 21 na 3H i wyświetlono ją na wyświetlaczu LCD.
Listing programu:
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 5 - OBSZAR ADRESOWANIA BITOWEGO
;************************************************
LJMP START
ORG 100H
START:
LCALL LCD_CLR
MOV 21H,#0 ;zeruj komórkę 21H
;(21H) <- 0
MOV A,21H ;A <- (21H)=0
LCALL WRITE_HEX
SETB 21H.0 ;ustaw bit 0 komórki 21H
SETB 9 ;ustaw bit 9
;czyli bit 1 komórki 21H
MOV A,21H ;A <- (21H)=3
LCALL WRITE_HEX
LJMP $