background image

Laboratorium z Techniki Mikroprocesorowej 

Temat ćwiczenia: 

1) Podprogramy, procedury – obsługa stosu i banków rej. 

Data ćwiczenia: 

 

Grupa  

WIMiR AiR 

1.  Tatar 
2.  Radosław  

Ocena: 

 

1.  Kod programu z opisem: 

 

;Program glowny 
MOV SP,#20H   

;zmiana adresu wierzcholka stosu 

MOV A,#3 

 

;przypisanie dowolnych wartosci 

MOV DPTR,#4 
MOV 50H,#5 
MOV 51H,#6 
MOV R1,50H 
MOV R2,51H 
 
LJMP START 

 

;skok do programu glownego 

 
ORG 100H 

 

;ustawienie adresu programu glownego 

START:  

 

;poczatek progrmau glownego 

 
CALL TEST 

 

;wywolanie procedury test 

MOV R1,#22H   

;ustawienie wartosci rejestru r1 

LJMP START 

 

;powrot do poczatku programu glownego 

ENDED: 

 

 

;etykieta konca pr. gl. 

 
ORG 200H 

 

;ustawienie adresu procedury 

TEST:   

 

;etykieta procedury 

 
PUSH ACC 

 

;wpisanie rejestrów na stos 

PUSH DPL 
PUSH DPH 
PUSH PSW 
PUSH B 
 
SETB RS0 

 

;ustawienie bitu na rs0 czyli przejscie na bank1 

 
MOV R1,50H   

;operacje na rejestrach 

MOV R2,51H 
 
MOV A,R1 

 

;zanegowanie bitu rejestrow 

CPL A 
MOV R3,A 
MOV A,R2 
CPL A 
MOV R4,A 
 
SETB RS1 

 

;przjescie na bank2 

CLR RS0 
 

background image

MOV A,50H 

 

;przemnozenie 50h i 51h 

MOV B,51H 
MUL AB 
MOV R1,A 
MOV R2,B 
 
CLR RS0 

 

 

;przejscie na bank0 

CLR RS1 
 
POP B   

 

;zdjecie rejestrow ze stosu 

POP PSW 
POP DPH 
POP DPL 
POP ACC 
 
RET 

 

 

;powrot z procedury do miejsca wywolania 

 
KONIEC: LJMP KONIEC ;zakonczenie programu 
END 

 

2.  Listing programu: 

 

ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 1 
 
 
 
 
 
       MCS-51 Family Macro Assembler   A S E M - 5 1   V 1.3 
       ===================================================== 
 
 
 
 

Source File: 

C:\Users\Tatar\Desktop\TM\lab_4_SPR.asm 

 

Object File: 

C:\Users\Tatar\Desktop\TM\lab_4_SPR.hex 

 

List File: C:\Users\Tatar\Desktop\TM\lab_4_SPR.lst 

 
 
 
 Line  I  Addr  Code            Source 
 
    1: 

 

 

 

;Program glowny 

    2: 

  0000  75 81 20 MOV SP,#20H 

 

;zmiana adresu wierzcholka stosu 

    3: 

  0003  74 03   

MOV A,#3 

 

;przypisanie dowolnych wartosci 

    4: 

  0005  90 00 04 MOV DPTR,#4 

    5: 

  0008  75 50 05 MOV 50H,#5 

    6: 

  000B  75 51 06 MOV 51H,#6 

    7: 

  000E  A9 50   

MOV R1,50H 

    8: 

  0010  AA 51   

MOV R2,51H 

    9: 
   10:    0012  02 01 00 LJMP START 

 

;skok do programu glownego 

   11: 
   12:   

N      0100 

ORG 100H 

 

;ustawienie adresu programu glownego 

   13:    0100   

 

START:   

 

;poczatek progrmau glownego 

   14: 
   15:    0100  12 02 00 CALL TEST 

 

;wywolanie procedury test 

   16:    0103  79 22   

MOV R1,#22H 

 

;ustawienie wartosci rejestru r1 

background image

   17:    0105  02 01 00 LJMP START 

 

;powrot do poczatku programu glownego 

   18:    0108   

 

ENDED:   

 

;etykieta konca pr. gl. 

   19: 
   20:   

N      0200 

ORG 200H 

 

;ustawienie adresu procedury 

   21:    0200   

 

TEST:   

 

;etykieta procedury 

   22: 
   23:    0200  C0 E0   

PUSH ACC 

 

;wpisanie rejestrów na stos 

   24:    0202  C0 82   

PUSH DPL 

   25:    0204  C0 83   

PUSH DPH 

   26:    0206  C0 D0   

PUSH PSW 

   27:    0208  C0 F0   

PUSH B 

   28: 
   29:    020A  D2 D3   

SETB RS0 

 

;ustawienie bitu na rs0 czyli przejscie na bank1 

   30: 
   31:    020C  A9 50   

MOV R1,50H 

 

;operacje na rejestrach 

   32:    020E  AA 51   

MOV R2,51H 

   33: 
   34:    0210  E9 

 

MOV A,R1 

 

;zanegowanie bitu rejestrow 

   35:    0211  F4 

 

CPL A 

   36:    0212  FB 

 

MOV R3,A 

   37:    0213  EA 

 

MOV A,R2 

   38:    0214  F4 

 

CPL A 

   39:    0215  FC 

 

MOV R4,A 

   40: 
   41:    0216  D2 D4   

SETB RS1 

 

;przjescie na bank2 

   42:    0218  C2 D3   

CLR RS0 

   43: 
 
ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 2 
 
 Line  I  Addr  Code            Source 
 
   44:    021A  E5 50   

MOV A,50H 

 

;przemnozenie 50h i 51h 

   45:    021C  85 51 F0 MOV B,51H 
   46:    021F  A4 

 

MUL AB 

   47:    0220  F9 

 

MOV R1,A 

   48:    0221  AA F0   

MOV R2,B 

   49: 
   50:    0223  C2 D3   

CLR RS0  

 

;przejscie na bank0 

   51:    0225  C2 D4   

CLR RS1 

   52: 
   53:    0227  D0 F0   

POP B   

 

;zdjecie rejestrow ze stosu 

   54:    0229  D0 D0   

POP PSW 

   55:    022B  D0 83   

POP DPH 

   56:    022D  D0 82   

POP DPL 

   57:    022F  D0 E0   

POP ACC 

   58: 
   59:    0231  22 

 

RET 

 

 

;powrot z procedury do miejsca wywolania 

   60: 
   61:    0232  02 02 32 KONIEC: LJMP KONIEC 

;zakonczenie programu 

   62:   

 

 

END 

 
 
                     register banks used:  --- 
 
                     no errors 
 
ASEM-51 V1.3                                         Copyright (c) 2002 by W.W. Heinz                                         PAGE 3 
 

 

background image

3.  Tabelka: 

 

Lp.  Rozkaz 

Wartość 
SP 

Wartość 
PC 

Zawartość  stosu 
(wszystkie bajty) 

Opis 

1. 

CALL 

22 

0103 

00,00,00 

 

2. 

Pierwszy rozkaz 
procedury 

 

 

 

 

3. 

RET 

 

 

 

 

4. 

Pierwszy 
rozkaz 
programu 
głównego 
po CALL 

 

 

 

 

 
 

4.  Podsumowanie: 

Na przykładzie powyższego programu zapoznaliśmy się z pojęciem stosu oraz banku rejestru. 

Nauczyliśmy się wykonywać operacje na rejestrach różnych banków oraz wykorzystywać stos. Z użyciem 
tej wiedzy napisaliśmy program zawierający procedurę.