7715


0x01 graphic

POLITECHNIKA LUBELSKA

Wydział Elektryczny

Grupa laboratoryjna: Rok akademicki:

1. Mazurek Michał 1999/2000

2. Popiołek Aleksander

ED 5.5

Data wykonania ćwiczenia:

1999-10-22

Laboratorium Podstaw Techniki

Mikroprocesorowej

Ćwiczenie nr 3

Temat:

Pamięć wewnętrzna RAM. Organizacja i

wykorzystanie stosu.

Ocena:

..............

ZADANIE 1.

W zadaniu tym należało dokonać operacji adresowania akumulatora:

*********************************

Przykład 3.1 - Pamięć wewnętrzna RAM

- Akumulator

*********************************

LJMP START

ORG 100H

START:

LCALL LCD_CLR ; wyczyść wyświetlacz LCD

MOV A,#10H ; wpisz liczbę do A

LCALL WRITE_HEX ;podprogram systemu DSM-51

; liczba z akumulatora na wyświetlacz LCD

MOV ACC,#20H ;wpisz liczbę do ACC

LCALL WRITE_HEX ;akumulator na LCD

LJMP $

spisując jednocześnie - przy zastosowaniu pracy krokowej przy użyciu komputera - zawartość rejestru PSW oraz stan na wyświetlaczu LCD:

Bit

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

LCD

Flaga

CY

AC

FO

RS1

RS0

OV

-

P

-

LCALL

0

0

0

0

0

0

0

0

-

MOV

0

0

0

0

0

0

0

1

-

LCALL

1

0

0

0

0

0

0

0

10

MOV

1

0

0

0

0

0

0

1

10

LCALL

1

0

0

0

0

0

0

0

1020

ZADANIE 2.

W celu bezpośredniego zaadresowania wybranych bitów akumulatora, np.0 i 2, modyfikujemy program z zadania nr 1:

*********************************

Przykład 3.1a - Pamięć wewnętrzna RAM

- Akumulator

*********************************

LJMP START

ORG 100H

START:

LCALL LCD_CLR ; wyczyść wyświetlacz LCD

MOV A,#30H ; wpisz liczbę do A

SETB ACC.0 ; ustaw bit 0 akumulatora

SETB ACC.2 ; ustaw bit 2 akumulatora

LCALL WRITE_HEX ;podprogram systemu DSM-51

; liczba z akumulatora na wyświetlacz LCD

LJMP $

Tabela przedstawiająca stan rejestru PSW oraz stan wyświetlacza LCD:

Bit

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

LCD

Flaga

CY

AC

FO

RS1

RS0

OV

-

P

-

LCALL

0

0

0

0

0

0

0

0

-

MOV

0

0

0

0

0

0

0

0

-

SETB

0

0

0

0

0

0

0

0

-

SETB

0

0

0

0

0

0

0

0

-

LCALL

1

0

0

0

0

0

0

0

35

ZADANIE 3.

W jaki sposób rozróżnia się adres akumulatora od adresu poszczególnych bitów?

Aby zaadresować poszczególne bity akumulatora, stosujemy rozkaz SETB. Rozkaz ten dotyczy pojedynczego bitu i dlatego po podaniu nazwy rejestru, tzn. ACC, dodajemy jeszcze po kropce rozszerzenie, o który bit komórki nam chodzi .Rozkaz przyjmuje wtedy postać : SETB ACC. X gdzie X-numer bitu któremu chcemy nadać wartość logiczną 1.Odwołując się do akumulatora stosujemy inne komendy, które zmieniają wartość odpowiednich bitów akumulatora.

ZADANIE 4.

Wykonujemy przykład 3.3

***************************************

Przykład 3.3 - PAMIĘĆ WEWNĘTRZNA RAM

- REJAESTRY 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 wyświetlacz

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ą spisujemy zawartość akumulatora, rejestru PSW oraz stan wyświetlacza LCD na przykładzie rejestru R7 w bankach 0,1,2,3.

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

-

00

0

0

0

0

0

0

0

0

-

21

MOV

0

0

0

0

0

0

0

0

-

00

LCALL

1

0

0

0

0

0

0

0

00

21

SETB

1

0

0

0

1

0

0

0

00

21

MOV

1

0

0

0

1

0

0

1

00

01

LCALL

1

0

0

0

1

0

0

1

0001

19

SETB

1

0

0

1

1

0

0

1

0001

19

MOV

1

0

0

1

1

0

0

0

0001

03

LCALL

1

0

0

1

1

0

0

0

000103

FF

CLR

1

0

0

1

0

0

0

0

000103

FF

MOV

1

0

0

1

0

0

0

1

000103

02

LCALL

1

0

0

1

0

0

0

0

00010302

FF

Wpisujemy 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 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 6.

Stosując adresowanie bitowe ustawiamy zawartość komórki 21 na 3H i wyświetlamy ją na wyświetlaczu LCD:

LJMP START

ORG 100 H

START :

LCALL LCD_CLR

MOV 21H,#0

MOV A,21H

LCALL WRITE_HEX

SETB 21 H.0

SETB 21 H.1

MOV A, 21 H

LCALL WRITE_HEX

LJMP $

ZADANIE 7.

Wykonujemy przykład 5.1 odczytując jednocześnie zawartość akumulatora, rejestru PSW, wskaźnika stosu oraz zawartość komórek stosu.

;************************************************

;LEKCJA 5 - STOS

;PRZYKŁAD 1 - PAMIĘĆ PODRĘCZNA

;************************************************

LJMP START

ORG 100H

START:

LCALL LCD_CLR

MOV A,#'D' ;wpisz do A kod litery D

PUSH ACC ;przechowaj akumulator

;na stosie

LCALL WRITE_DATA ;wyświetl jako znak

;czyli litera D

MOV A,#'=' ;wpisz znak równości

LCALL WRITE_DATA

POP ACC ;pobierz wartość ze stosu

;do akumulatora

LCALL WRITE_HEX ;wyświetl jako liczbę

;- kod litery D = 44H

SJMP $

ACC

PSW

SP

STOS

00

00

07

LCALL

21

00

07

03

MOV

44

00

07

05

PUSH ACC

44

00

08

44

LCALL

21

80

08

44

MOV

3D

81

08

44

LCALL

21

80

08

44

POP ACC

44

80

07

11

LCALL

21

80

ZADANIE 8.

Postępujemy podobnie jak wyżej posługując się przykładem 5.2:

ACC

PSW

SP

STOS

00

00

07

00

LCALL

21

00

07

00

MOV A,#137

89

01

07

00

ACALL

89

01

09

PUSH PSW

89

01

0A

01

PUSH B

89

01

0B

00

PUSH ACC

89

01

0C

89

ACALL

89

01

0E

89

MOV B, # 64

89

01

0E

89

DIV A,B

01

01

0E

89

PUSH ACC

01

01

0F

01

MOV A,B

25

01

0F

01

MOV B, # 0A H

25

00

0F

01

DIV A,B

03

00

0F

01

SWAP A

30

01

0F

01

ORL A,B

37

01

0F

01

POP B

37

01

0E

89

RET

37

01

0C

89

XCH A,B

01

01

0C

89

LCALL

21

80

0C

89

MOV A,B

37

81

0C

89

LCALL

21

80

0C

89

MOV A,3D H

3D

81

0C

89

LCALL

21

80

0C

89

POP ACC

89

81

0B

00

PUSH ACC

89

81

0C

89

LCALL

21

80

0C

89

MOV A, # 48

48

80

0C

89

LCALL

21

80

0C

89

POP ACC

89

81

0B

00

POP PSW

89

81

0A

01

RET

89

01

09

00

SJMP

89

01

07

00

1



Wyszukiwarka

Podobne podstrony:
7715
7715
7715
Badanie halasu pojazdow id 7715 Nieznany (2)
7715
7715
7715
7715

więcej podobnych podstron