sprawozdanie TM

Akademia Górniczo-Hutnicza

im. Stanisława Staszica w Krakowie

Technika Mikroprocesorowa

Podprogramy, procedury, - obsługa stosu i banków rejestrów.

Opracowali:
Paweł Jóźwik

Jakub Kaulbert

(Gr.03)

1.Kod programu z komentarzami

ORG 00H ; Ustawienie PC na wartość 00H

MOV A,#20H ; Przypisanie do akumulatora liczby 20H

MOV DPTR,#0F0FH ; Przypisanie do DPTR liczby 0F0FH

MOV 50H,#05H ; Przypisanie komórce pamięci 50H wartości 05H

MOV 51H,#06H ; Przypisanie komórce pamięci 51H wartości 06H

MOV R1,50H ; Przepisanie wartości z komórki R1 do rejestru R2

MOV R2,51H ; Przepisanie wartości z komórki R1 do rejestru R2

MOV SP,#20H ; Przypisanie do SP liczby 20H

LJMP START ; Skok do początku programu

ORG 100H ; Ustawienie PC na wartość 100H

START: ; Początek programu

CALL JBK ; Instrukcja skoku do procedury JBK

MOV R0,#03H ; Linijka kontrolna przypisująca do rejestru R0 wartość 03H

KONIEC: LJMP KONIEC ; Pętla Końca programu

ORG 200H ; Ustawienie PC na wartość 200H

JBK: ; Początek procedury

PUSH ACC ; Umieszczenie na początku stosu ACC

PUSH DPH ; Umieszczenie na początku stosu DPH (bit starszy DPTR)

PUSH DPL ; Umieszczenie na początku stosu DPL (bit młodszy DPTR)

PUSH PSW ; Umieszczenie na początku stosu PSW

PUSH B ; Umieszczenie na początku stosu B

SETB RS0 ;Wybór banku 1 (0 1)

CLR RS1

MOV R1,50H ; Przypisanie rejestrowi R1 banku pierwszego wartości przechowywanej w komórce 50H

MOV R2,51H ; Przypisanie rejestrowi R2 banku pierwszego wartości przechowywanej w komórce 51H

MOV A,R1 ; Przepisanie wartości z rejestru R1 banku pierwszego do akumulatora

CPL A ; Negacja wartości znajdującej się w Akumulatorze

MOV R3,A ; Przepisanie wartości zanegowanej z akumulatoa do rejestru R3 banku pierwszego

MOV A,R2 ; Przepisanie wartości z rejestru R2 banku pierwszego do akumulatora

CPL A ; Negacja wartości znajdującej się w Akumulatorze

MOV R4,A ; Przepisanie wartości zanegowanej z akumulatoa do rejestru R4 banku pierwszego SETB RS1 ; Wybór banku 2 (1 0)

CLR RS0

MOV A,50H ; Przepisanie wartości do akumulatora z komórki 50H

MOV B,51H ; Przepisanie wartości do B z komórki 51H

MUL AB ; Wykonanie mnożenia wartości znajdujących się w A i B. Wynik mnożenia przechowywany w A

MOV R1,A ; Przepisanie wyniku mnożenia do rejestru R1 baku 2

MOV R2,A ; Przepisanie wyniku mnożenia do rejestru R2 banku 2

CLR RS0 ; wybór banku 1 (0,1)

CLR RS1

POP B ; Zdjęcie ze stosu B

POP PSW ; Zdjęcie ze stosu PSW

POP DPL ; Zdjęcie ze stosu DPL

POP DPH ; Zdjęcie ze stosu DPH

POP ACC ; Zdjęcie ze stosu ACC

RET ; Zakończenie procedury. Powrót do programu

END;<3

2.Opis działania programu

Na samym początku programu ustawiana jest wartość startowa PC. Następnie program przypisuje wartości startowe dla A, DPTR, SP, komórek pamięci 50H i 51H oraz przepisuje wartości z tych komórek do rejestrów R1 i R2 banku 0. Po przypisaniu wartości startowych rozpoczyna się program główny, w którym na samym początku wykonywane jest przejście do procedury JBK. W tej procedurze na początku na stos zrzucane są ACC, DPTR (złożone z bitów DPH i DPL), B i PSW. W kolejnym kroku program przełącza się z banku 0 na bank 1 poprzez przydzielenie bitom RS0 i RS1 wartości kolejno 0 i 1. W dalszej kolejności rejestrom R1 i R2 zostają przydzielone wartości z komórek 50H i 51H. Rejestrom R3 i R4 zostają przypisane negacje bitowe R1 i R2 z akumulatora poprzez przepisanie wartości z R1 i R2 do A i ich zanegowanie przy pomocy instrukcji CPL. Następnie następuje przełączenie do banku 2 (RS0 = 1 i RS1 = 0). Do rejestrów R1 i R2 z banku 2 zostaje wpisany wynik mnożenia wartości znajdujących się w komórkach 50H i 51H poprzez przepisanie ich wartości kolejno do A i B w celu wykonania mnożenia przy użyciu funkcji MUL. Na koniec procedury następuje przełączenie do banku 0 (RS0 = 0 i RS1 = 0) i zdjęcie ze stosu A, DPTR, B i PSW. Po zakończeniu procedury następuje powrót do programu głównego w którym następuje kontrolne przypisanie wartości 03H do rejestru R0 w banku 0.

3.Listing programu

lab4 PAGE 1

1 ORG 00H; Ustawienie PC na wartość 00H

0000 7420 2 MOV A,#20H; Przypisanie do akumulatora liczby 20H

0002 900F0F 3 MOV DPTR,#0F0FH; Przypisanie do DPTR liczby 0F0FH

0005 755005 4 MOV 50H,#05H; Przypisanie komórce pamięci 50H wartości 05H

0008 755106 5 MOV 51H,#06H; Przypisanie komórce pamięci 51H wartości 06H

000B A950 6 MOV R1,50H; Przepisanie wartości z komórki R1 do rejestru R2

000D AA51 7 MOV R2,51H; Przepisanie wartości z komórki R1 do rejestru R2

000F 758120 8 MOV SP,#20H; Przypisanie do SP liczby 20H

9

0012 020100 10 LJMP START; Skok do początku programu

11

12 ORG 100H; Ustawienie PC na wartość 100H

13 START:; Początek programu

0100 120200 14 CALL JBK; Instrukcja skoku do procedury JBK

0103 7803 15 MOV R0,#03H; Linijka kontrolna przypisująca do rejestru R0 wartość 03H

0105 020105 16 KONIEC: LJMP KONIEC; Pętla Końca programu

17 ORG 200H; Ustawienie PC na wartość 200H

18 JBK:; Początek procedury

0200 C0E0 19 PUSH ACC; Umieszczenie na początku stosu ACC

0202 C083 20 PUSH DPH; Umieszczenie na początku stosu DPH (bit starszy DPTR)

0204 C082 21 PUSH DPL; Umieszczenie na początku stosu DPL (bit młodszy DPTR)

0206 C0D0 22 PUSH PSW; Umieszczenie na początku stosu PSW

0208 C0F0 23 PUSH B; Umieszczenie na początku stosu B

020A D2D3 24 SETB RS0 ;Wybór banku 1 (0 1)

020C C2D4 25 CLR RS1

020E A950 26 MOV R1,50H; Przypisanie rejestrowi R1 banku pierwszego wartości przechowywanej w komórce 50H

0210 AA51 27 MOV R2,51H; Przypisanie rejestrowi R2 banku pierwszego wartości przechowywanej w komórce 51H

0212 E9 28 MOV A,R1; Przepisanie wartości z rejestru R1 banku pierwszego do akumulatora

0213 F4 29 CPL A ; Negacja wartości znajdującej się w Akumulatorze

0214 FB 30 MOV R3,A ; Przepisanie wartości zanegowanej z akumulatoa do rejestru R3 banku pierwszego

0215 EA 31 MOV A,R2; Przepisanie wartości z rejestru R2 banku pierwszego do akumulatora

0216 F4 32 CPL A ; Negacja wartości znajdującej się w Akumulatorze

0217 FC 33 MOV R4,A ; Przepisanie wartości zanegowanej z akumulatoa do rejestru R4 banku pierwszego

0218 D2D4 34 SETB RS1 ; Wybór banku 2 (1 0)

021A C2D3 35 CLR RS0

021C E550 36 MOV A,50H; Przepisanie wartości do akumulatora z komórki 50H

021E 8551F0 37 MOV B,51H; Przepisanie wartości do B z komórki 51H

0221 A4 38 MUL AB; Wykonanie mnożenia wartości znajdujących się w A i B. Wynik mnożenia przechowywany w

0222 F9 39 MOV R1,A; Przepisanie wyniku mnożenia do rejestru R1 baku 2

0223 FA 40 MOV R2,A; Przepisanie wyniku mnożenia do rejestru R2 banku 2

0224 C2D3 41 CLR RS0; wybór banku 1 (0,1)

0226 C2D4 42 CLR RS1

0228 D0F0 43 POP B; Zdjęcie ze stosu B

022A D0D0 44 POP PSW; Zdjęcie ze stosu PSW

022C D082 45 POP DPL; Zdjęcie ze stosu DPL

022E D083 46 POP DPH; Zdjęcie ze stosu DPH

0230 D0E0 47 POP ACC; Zdjęcie ze stosu ACC

0232 22 48 RET; Zakończenie procedury. Powrót do programu

49 END;<3

ASSEMBLY COMPLETE, NO ERRORS FOUND, NO WARNINGS

SYMBOL TABLE:

??MCU_8051_IDE . . . . . . . . . . . N NUMB 8051H NOT USED

??VERSION. . . . . . . . . . . . . . N NUMB 0147H NOT USED

AC . . . . . . . . . . . . . . . . . B ADDR 00D6H NOT USED

ACC. . . . . . . . . . . . . . . . . D ADDR 00E0H

ACSR . . . . . . . . . . . . . . . . D ADDR 0097H NOT USED

ADCF . . . . . . . . . . . . . . . . D ADDR 00F6H NOT USED

ADCLK. . . . . . . . . . . . . . . . D ADDR 00F2H NOT USED

ADCON. . . . . . . . . . . . . . . . D ADDR 00F3H NOT USED

ADDH . . . . . . . . . . . . . . . . D ADDR 00F5H NOT USED

ADDL . . . . . . . . . . . . . . . . D ADDR 00F4H NOT USED

AUXR . . . . . . . . . . . . . . . . D ADDR 008EH NOT USED

AUXR1. . . . . . . . . . . . . . . . D ADDR 00A2H NOT USED

B. . . . . . . . . . . . . . . . . . D ADDR 00F0H

BDRCON . . . . . . . . . . . . . . . D ADDR 009BH NOT USED

BDRCON_1 . . . . . . . . . . . . . . D ADDR 009CH NOT USED

BRL. . . . . . . . . . . . . . . . . D ADDR 009AH NOT USED

CCAP0H . . . . . . . . . . . . . . . D ADDR 00FAH NOT USED

CCAP0L . . . . . . . . . . . . . . . D ADDR 00EAH NOT USED

CCAP1H . . . . . . . . . . . . . . . D ADDR 00FBH NOT USED

CCAP1L . . . . . . . . . . . . . . . D ADDR 00EBH NOT USED

CCAP2H . . . . . . . . . . . . . . . D ADDR 00FCH NOT USED

CCAP3H . . . . . . . . . . . . . . . D ADDR 00FDH NOT USED

CCAP4H . . . . . . . . . . . . . . . D ADDR 00FEH NOT USED

CCAPL2H. . . . . . . . . . . . . . . D ADDR 00FCH NOT USED

CCAPL2L. . . . . . . . . . . . . . . D ADDR 00ECH NOT USED

CCAPL3H. . . . . . . . . . . . . . . D ADDR 00FDH NOT USED

CCAPL3L. . . . . . . . . . . . . . . D ADDR 00EDH NOT USED

CCAPL4H. . . . . . . . . . . . . . . D ADDR 00FEH NOT USED

CCAPL4L. . . . . . . . . . . . . . . D ADDR 00EEH NOT USED

CCAPM0 . . . . . . . . . . . . . . . D ADDR 00DAH NOT USED

CCAPM1 . . . . . . . . . . . . . . . D ADDR 00DBH NOT USED

CCAPM2 . . . . . . . . . . . . . . . D ADDR 00DCH NOT USED

CCAPM3 . . . . . . . . . . . . . . . D ADDR 00DDH NOT USED

CCAPM4 . . . . . . . . . . . . . . . D ADDR 00DEH NOT USED

CCF0 . . . . . . . . . . . . . . . . B ADDR 00D8H NOT USED

CCF1 . . . . . . . . . . . . . . . . B ADDR 00D9H NOT USED

CCF2 . . . . . . . . . . . . . . . . B ADDR 00DAH NOT USED

CCF3 . . . . . . . . . . . . . . . . B ADDR 00DBH NOT USED

CCF4 . . . . . . . . . . . . . . . . B ADDR 00DCH NOT USED

CCON . . . . . . . . . . . . . . . . D ADDR 00D8H NOT USED

CFINT. . . . . . . . . . . . . . . . C ADDR 0033H NOT USED

CH . . . . . . . . . . . . . . . . . D ADDR 00F9H NOT USED

CKCON. . . . . . . . . . . . . . . . D ADDR 008FH NOT USED

CKCON0 . . . . . . . . . . . . . . . D ADDR 008FH NOT USED

CKRL . . . . . . . . . . . . . . . . D ADDR 0097H NOT USED

CKSEL. . . . . . . . . . . . . . . . D ADDR 0085H NOT USED

CL . . . . . . . . . . . . . . . . . D ADDR 00E9H NOT USED

CLKREG . . . . . . . . . . . . . . . D ADDR 008FH NOT USED

CMOD . . . . . . . . . . . . . . . . D ADDR 00D9H NOT USED

CPRL2. . . . . . . . . . . . . . . . B ADDR 00C8H NOT USED

CR . . . . . . . . . . . . . . . . . B ADDR 00DEH NOT USED

CT2. . . . . . . . . . . . . . . . . B ADDR 00C9H NOT USED

CY . . . . . . . . . . . . . . . . . B ADDR 00D7H NOT USED

DP0H . . . . . . . . . . . . . . . . D ADDR 0083H NOT USED

DP0L . . . . . . . . . . . . . . . . D ADDR 0082H NOT USED

DP1H . . . . . . . . . . . . . . . . D ADDR 0085H NOT USED

DP1L . . . . . . . . . . . . . . . . D ADDR 0084H NOT USED

DPH. . . . . . . . . . . . . . . . . D ADDR 0083H

DPL. . . . . . . . . . . . . . . . . D ADDR 0082H

EA . . . . . . . . . . . . . . . . . B ADDR 00AFH NOT USED

EC . . . . . . . . . . . . . . . . . B ADDR 00AEH NOT USED

EECON. . . . . . . . . . . . . . . . D ADDR 0096H NOT USED

ES . . . . . . . . . . . . . . . . . B ADDR 00ACH NOT USED

ET0. . . . . . . . . . . . . . . . . B ADDR 00A9H NOT USED

ET1. . . . . . . . . . . . . . . . . B ADDR 00ABH NOT USED

ET2. . . . . . . . . . . . . . . . . B ADDR 00ADH NOT USED

EX0. . . . . . . . . . . . . . . . . B ADDR 00A8H NOT USED

EX1. . . . . . . . . . . . . . . . . B ADDR 00AAH NOT USED

EXEN2. . . . . . . . . . . . . . . . B ADDR 00CBH NOT USED

EXF2 . . . . . . . . . . . . . . . . B ADDR 00CEH NOT USED

EXTI0. . . . . . . . . . . . . . . . C ADDR 0003H NOT USED

EXTI1. . . . . . . . . . . . . . . . C ADDR 0013H NOT USED

F0 . . . . . . . . . . . . . . . . . B ADDR 00D5H NOT USED

FE . . . . . . . . . . . . . . . . . B ADDR 009FH NOT USED

IE . . . . . . . . . . . . . . . . . D ADDR 00A8H NOT USED

IE0. . . . . . . . . . . . . . . . . B ADDR 0089H NOT USED

IE1. . . . . . . . . . . . . . . . . B ADDR 008BH NOT USED

INT0 . . . . . . . . . . . . . . . . B ADDR 00B2H NOT USED

INT1 . . . . . . . . . . . . . . . . B ADDR 00B3H NOT USED

IP . . . . . . . . . . . . . . . . . D ADDR 00B8H NOT USED

IPH. . . . . . . . . . . . . . . . . D ADDR 00B7H NOT USED

IPH0 . . . . . . . . . . . . . . . . D ADDR 00B7H NOT USED

IPH1 . . . . . . . . . . . . . . . . D ADDR 00B3H NOT USED

IPL0 . . . . . . . . . . . . . . . . D ADDR 00B8H NOT USED

IPL1 . . . . . . . . . . . . . . . . D ADDR 00B2H NOT USED

IT0. . . . . . . . . . . . . . . . . B ADDR 0088H NOT USED

IT1. . . . . . . . . . . . . . . . . B ADDR 008AH NOT USED

JBK. . . . . . . . . . . . . . . . . C ADDR 0200H

KBE. . . . . . . . . . . . . . . . . D ADDR 009DH NOT USED

KBF. . . . . . . . . . . . . . . . . D ADDR 009EH NOT USED

KBLS . . . . . . . . . . . . . . . . D ADDR 009CH NOT USED

KONIEC . . . . . . . . . . . . . . . C ADDR 0105H

OSCCON . . . . . . . . . . . . . . . D ADDR 0086H NOT USED

OV . . . . . . . . . . . . . . . . . B ADDR 00D2H NOT USED

P. . . . . . . . . . . . . . . . . . B ADDR 00D0H NOT USED

P0 . . . . . . . . . . . . . . . . . D ADDR 0080H NOT USED

P1 . . . . . . . . . . . . . . . . . D ADDR 0090H NOT USED

P1M1 . . . . . . . . . . . . . . . . D ADDR 00D4H NOT USED

P1M2 . . . . . . . . . . . . . . . . D ADDR 00E2H NOT USED

P2 . . . . . . . . . . . . . . . . . D ADDR 00A0H NOT USED

P3 . . . . . . . . . . . . . . . . . D ADDR 00B0H NOT USED

P3M1 . . . . . . . . . . . . . . . . D ADDR 00D5H NOT USED

P3M2 . . . . . . . . . . . . . . . . D ADDR 00E3H NOT USED

P4 . . . . . . . . . . . . . . . . . D ADDR 00C0H NOT USED

P4M1 . . . . . . . . . . . . . . . . D ADDR 00D6H NOT USED

P4M2 . . . . . . . . . . . . . . . . D ADDR 00E4H NOT USED

P5 . . . . . . . . . . . . . . . . . D ADDR 00E8H NOT USED

PC . . . . . . . . . . . . . . . . . B ADDR 00BEH NOT USED

PCON . . . . . . . . . . . . . . . . D ADDR 0087H NOT USED

PPCL . . . . . . . . . . . . . . . . B ADDR 00BEH NOT USED

PS . . . . . . . . . . . . . . . . . B ADDR 00BCH NOT USED

PSL. . . . . . . . . . . . . . . . . B ADDR 00BCH NOT USED

PSW. . . . . . . . . . . . . . . . . D ADDR 00D0H

PT0. . . . . . . . . . . . . . . . . B ADDR 00B9H NOT USED

PT0L . . . . . . . . . . . . . . . . B ADDR 00B9H NOT USED

PT1. . . . . . . . . . . . . . . . . B ADDR 00BBH NOT USED

PT1L . . . . . . . . . . . . . . . . B ADDR 00BBH NOT USED

PT2. . . . . . . . . . . . . . . . . B ADDR 00BDH NOT USED

PT2L . . . . . . . . . . . . . . . . B ADDR 00BDH NOT USED

PX0. . . . . . . . . . . . . . . . . B ADDR 00B8H NOT USED

PX0L . . . . . . . . . . . . . . . . B ADDR 00B8H NOT USED

PX1. . . . . . . . . . . . . . . . . B ADDR 00BAH NOT USED

PX1L . . . . . . . . . . . . . . . . B ADDR 00BAH NOT USED

RB8. . . . . . . . . . . . . . . . . B ADDR 009AH NOT USED

RCAP2H . . . . . . . . . . . . . . . D ADDR 00CBH NOT USED

RCAP2L . . . . . . . . . . . . . . . D ADDR 00CAH NOT USED

RCLK . . . . . . . . . . . . . . . . B ADDR 00CDH NOT USED

RD . . . . . . . . . . . . . . . . . B ADDR 00B7H NOT USED

REN. . . . . . . . . . . . . . . . . B ADDR 009CH NOT USED

RESET. . . . . . . . . . . . . . . . C ADDR 0000H NOT USED

RI . . . . . . . . . . . . . . . . . B ADDR 0098H NOT USED

RS0. . . . . . . . . . . . . . . . . B ADDR 00D3H

RS1. . . . . . . . . . . . . . . . . B ADDR 00D4H

RXD. . . . . . . . . . . . . . . . . B ADDR 00B0H NOT USED

SADDR. . . . . . . . . . . . . . . . D ADDR 00A9H NOT USED

SADDR_0. . . . . . . . . . . . . . . D ADDR 00A9H NOT USED

SADDR_1. . . . . . . . . . . . . . . D ADDR 00AAH NOT USED

SADEN. . . . . . . . . . . . . . . . D ADDR 00B9H NOT USED

SADEN_0. . . . . . . . . . . . . . . D ADDR 00B9H NOT USED

SADEN_1. . . . . . . . . . . . . . . D ADDR 00BAH NOT USED

SBUF . . . . . . . . . . . . . . . . D ADDR 0099H NOT USED

SCON . . . . . . . . . . . . . . . . D ADDR 0098H NOT USED

SINT . . . . . . . . . . . . . . . . C ADDR 0023H NOT USED

SM0. . . . . . . . . . . . . . . . . B ADDR 009FH NOT USED

SM1. . . . . . . . . . . . . . . . . B ADDR 009EH NOT USED

SM2. . . . . . . . . . . . . . . . . B ADDR 009DH NOT USED

SP . . . . . . . . . . . . . . . . . D ADDR 0081H

SPCON. . . . . . . . . . . . . . . . D ADDR 00C3H NOT USED

SPCR . . . . . . . . . . . . . . . . D ADDR 00D5H NOT USED

SPDAT. . . . . . . . . . . . . . . . D ADDR 00C5H NOT USED

SPDR . . . . . . . . . . . . . . . . D ADDR 0086H NOT USED

SPSR . . . . . . . . . . . . . . . . D ADDR 00AAH NOT USED

SPSTA. . . . . . . . . . . . . . . . D ADDR 00C4H NOT USED

START. . . . . . . . . . . . . . . . C ADDR 0100H

T0 . . . . . . . . . . . . . . . . . B ADDR 00B4H NOT USED

T1 . . . . . . . . . . . . . . . . . B ADDR 00B5H NOT USED

T2CON. . . . . . . . . . . . . . . . D ADDR 00C8H NOT USED

T2MOD. . . . . . . . . . . . . . . . D ADDR 00C9H NOT USED

TB8. . . . . . . . . . . . . . . . . B ADDR 009BH NOT USED

TCLK . . . . . . . . . . . . . . . . B ADDR 00CCH NOT USED

TCON . . . . . . . . . . . . . . . . D ADDR 0088H NOT USED

TF0. . . . . . . . . . . . . . . . . B ADDR 008DH NOT USED

TF1. . . . . . . . . . . . . . . . . B ADDR 008FH NOT USED

TF2. . . . . . . . . . . . . . . . . B ADDR 00CFH NOT USED

TH0. . . . . . . . . . . . . . . . . D ADDR 008CH NOT USED

TH1. . . . . . . . . . . . . . . . . D ADDR 008DH NOT USED

TH2. . . . . . . . . . . . . . . . . D ADDR 00CDH NOT USED

TI . . . . . . . . . . . . . . . . . B ADDR 0099H NOT USED

TIMER0 . . . . . . . . . . . . . . . C ADDR 000BH NOT USED

TIMER1 . . . . . . . . . . . . . . . C ADDR 001BH NOT USED

TIMER2 . . . . . . . . . . . . . . . C ADDR 002BH NOT USED

TL0. . . . . . . . . . . . . . . . . D ADDR 008AH NOT USED

TL1. . . . . . . . . . . . . . . . . D ADDR 008BH NOT USED

TL2. . . . . . . . . . . . . . . . . D ADDR 00CCH NOT USED

TMOD . . . . . . . . . . . . . . . . D ADDR 0089H NOT USED

TR0. . . . . . . . . . . . . . . . . B ADDR 008CH NOT USED

TR1. . . . . . . . . . . . . . . . . B ADDR 008EH NOT USED

TR2. . . . . . . . . . . . . . . . . B ADDR 00CAH NOT USED

TXD. . . . . . . . . . . . . . . . . B ADDR 00B1H NOT USED

WDTCON . . . . . . . . . . . . . . . D ADDR 00A7H NOT USED

WDTPRG . . . . . . . . . . . . . . . D ADDR 00A7H NOT USED

WDTRST . . . . . . . . . . . . . . . D ADDR 00A6H NOT USED

WR . . . . . . . . . . . . . . . . . B ADDR 00B6H NOT USED

4.Tabela

Lp Rozkaz Wartość SP Wartość PC Zawartość stosu (wszystkie bajty) Opis
1 CALL 20H 0100H

SP (stack pointer) ma wartość 20H, ponieważ została ona wcześniej przydzielona komendą MOV SP,#20H.

PC (program counter) ma wartość 100H, ponieważ wcześniej nastąpiła komenda ORG 100H, która przydziela następnej komendzie adres 100H.

Stos jest pusty, ponieważ nie był on w żaden sposób modyfikowany.

2

Pierwszy

rozkaz

procedury

22H 0200H 03H, 01H SP ma wartość 22H, ponieważ wywołanie procedury (CALL) spowodowało zapisanie na stosie dwóch bajtów, które są adresem komendy, która następuje po funkcji CALL, czyli po skończeniu procedury. PC wynosi 200H, ponieważ procedura została umieszczona w pamięci zaczynając się od adresu 200H (ORG 200H)
3 RET 22H 0232H 03H,01H,20H, 0FH,0FH,01H

SP ma wartość 22H, ponieważ w procedurze funkcja PUSH została użyta tyle samo razy co funkcja POP (podczas procedury SP wzrósł do 27H), więc także zawartość stosu jest taka sama jak na początku procedury, ponieważ wszystkie wartości, które zostały na nim umieszczone zostały z niego zdjęte.

PC ma wartość 232H, ponieważ ostatnia komenda procedury jest umieszczona pod adresem 232H. Cała procedura zajmuje w pamięci programu komórki od 200H do 232H.

4

Pierwszy

rozkaz

programu

głównego

po CALL

20H 0103H SP ma wartość 20H, ponieważ funkcja RET wyciągnęła ze stosu 2 bajty adresu następnej komendy. Z tego powodu PC uzyskał wartość 103H, a stos stał się pusty.

Wyszukiwarka

Podobne podstrony:
sprawozdanie TM
TM WykIV czII
Wyklad 2 TM 07 03 09
2 definicje i sprawozdawczośćid 19489 ppt
TM w4
PROCES PLANOWANIA BADANIA SPRAWOZDAN FINANSOWYC H
W 11 Sprawozdania
syst tr 1 (2)TM 01 03)13
Wymogi, cechy i zadania sprawozdawczośći finansowej
Analiza sprawozdan finansowych w BGZ SA
W3 Sprawozdawczosc
1 Sprawozdanie techniczne
Karta sprawozdania cw 10
eksploracja lab03, Lista sprawozdaniowych bazy danych
2 sprawozdanie szczawianyid 208 Nieznany (2)

więcej podobnych podstron