™ ® ©
Politechnika Lubelska |
Laboratorium podstaw systemów mikroprocesorowych |
|||
w Lublinie |
Ćwiczenie nr 1,2 |
|||
Nazwisko: Garbacz Kuźma |
Imię: Tomasz Jacek |
Semestr V |
Grupa ED 5.3 |
Rok akademicki 1997/98 |
Temat ćwiczenia: Pamięć wewnętrzna RAM. |
Data wykonania 24.10.97 |
Ocena: |
1. Cel ćwiczenia :
Zapoznanie się ze sposobami adresowania pamięci.
;************************************************
;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 $
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 |
- |
- |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
31 |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10 |
30 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
102 |
32 |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1020 |
30 |
Powyższy program ma na celu ukazanie sposobów wprowadzania danych do akumulatora (rejestru specjalnego).
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 1 - AKUMULATOR
;************************************************
LJMP START
ORG 100H
START:
LCALL LCD_CLR ;wyczyść wyświetlacz LCD
CLR A
SETB ACC.5 ;ustawianie bitu #5 akumulatora (wpisanie 10H)
LCALL WRITE_HEX ;podprogram systemuDSM-51
;liczba z akumulatora
;na wyświetlacz LCD
CLR A ;zerowanie zawartości akumulatora
setb ACC.6 ;ustawianie bitu #6 akumulatora (wpisanie 20H)
LCALL WRITE_HEX ;akumulator na LCD
LJMP
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 |
- |
- |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
31 |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
10 |
30 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
102 |
32 |
- |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1020 |
30 |
Zarówno adresowanie bezpośrednie wprowadzanie danych do akumulatora (przykład 1), jak również ustawianie poszczególnych bitów akumulatora (przykład powyższy) dają te same wyniki.
;************************************************
;LEKCJA 3 - PAMIĘĆ WEWNĘTRZNA RAM
;PRZYKŁAD 3 - REJESTRY R0..R7
;************************************************
KOM EQU EEH
LJMP START
ORG 100H
START:
MOV R7,KOM ;wpisz numer banku
MOV R0,30H
MOV R1,#10
LOOP:
MOV @R0,R7
INC R0
DJNZ R1,LOOP
LJMP $
Program powyższy powoduje wpisanie do rejestru #7 zawartości komórki EEH a następnie zapełnia tą zawartością dziesięć kolejnych komórek pamięci począwszy od adresu 30H.
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 |
- |
- |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
30 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
01 |
31 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
013 |
33 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0132 |
32 |
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bank0 |
00 |
40 |
00 |
06 |
FF |
FF |
00 |
00 |
Bank1 |
01 |
01 |
00 |
00 |
00 |
00 |
00 |
00 |
Bank2 |
02 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
Bank3 |
03 |
FF |
FF |
FF |
FF |
FF |
FF |
FF |
Program powoduje wpisanie do rejestru #7 poszczególnych banków ich numerów (ilustruje to tabela). Następnie ustawiając kolejno poszczególne banki zostają wprowadzone do akumulatora zawartości rejestru #7 kolejnych banków. Dane znajdujące się w akumulatorze są wyświetlane na wyświetlaczu LCD.
LJMP START
ORG 100H
START:
LCALL LCD_CLR
MOV 21H.#0 ;zeruj komórkę 21H
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 $
Program powyższy powoduje wpisanie wartości 3H do komórki pamięci 21H oraz wyprowadzenie zawartości tej komórki na wyświetlacz.