Title: Wykorzystanie procedur
1Wykorzystanie procedur
2Wspóluzywalnosc procedurWspólbieznosc
procesówWymiana informacji z procedurami
Procedury
2/21
3Procedury - wspóluzywalnosc
3/21
wspóluzywalnosc procedury - polega na tym, ze
przerwanie wykonywania procedury i powtórne jej
wywolanie z innego miejsca programu (np. z
wnetrza procedury obslugi przerwania) nie zaburza
pracy zadnego z programów wywolujacych. Podstawow
e warunki wspóluzywalnosci to - niestosowanie
samomodyfikacji kodu programu/procedury -
stosowanie dynamicznego przydzialu RAM na zmienne
robocze (np. na stosie), zamiast stalych
obszarów roboczych oraz stalych obszarów na
parametry i wyniki.
4Procedury - wspóluzywalnosc
4/21
Ilustracja wspóluzywalnosci w systemie
jednozadaniowym
! Procedura AR1 wykorzystuje/zmienia
rejestry A, F
! Procedura INTSRV wykorzystuje/zmienia
rejestry B, D, A, F
5Procedury - wspóluzywalnosc
5/21
Ilustracja wspóluzywalnosci w systemie
wielozadaniowym
6Procedury - wspóluzywalnosc
6/21
Przyklad dynamicznego przydzialu RAM na stosie
dla zmiennych roboczych procedury procX PUSH IX
skladowanie na stosie rejestrów w tym
takze IX LD IX,-wor worwielkosc obszaru
roboczego w bajtach ADD IX,SP LD SP,IX
zarezerwowanie obszaru roboczego na stosie
tresc procedury, dostep do elementów obszaru
roboczego np. adresowaniem indeksowym
(IXdd) LD IX,wor zwolnienie obszaru
roboczego ADD IX,SP ze stosu pod koniec
procedury LD SP,IX POP IX odtworzenie IX i
innych rejestrów RET
7Procedury - wspólbieznosc procesów
7/21
Wspólbieznosc procesów/programów polega na tym,
ze mikroprocesor realizuje jednoczesnie 2 lub
wiecej programów - oczywiscie z tzw. podzialem
czasu (przelaczanie dostepu do procesora
poszczególnych programów regulowane timerem -
procesy równorzedne, albo przerwaniami od
asynchronicznych zdarzen zewnetrznych - program
tla i procedury obslugi przerwan). Aby te
zadania byly realizowane poprawnie musza byc
spelnione warunki - rozdzielenie obszarów danych
i kodu poszczególnych programów - stosowanie
procedur wspóluzywalnych.
8Procedury
8/21
- Procedury sa zwykle wywolywane w celu okreslonej
obróbki informacji. - Procedury z reguly wymagaja danych do swej pracy
czyli parametrów - i generuja tzw. wyniki.
- Sposób wymiany informacji pomiedzy programem
wywolujacym a procedura, tzn. - a) przekazanie procedurze parametrów
- b) odebranie od niej wyników
- jest uzalezniony od szeregu czynników
- liczby dostepnych aktualnie rejestrów ?P
- dostepnego obszaru PAO
- wymaganej szybkosci dzialania
- typu pamieci programu i danych (ROM czy RAM)
- uniwersalnosci i prostoty wymiany danych
- wplywu na wspóluzywalnosc procedury wolajacej i
wywolywanej.
9Procedury
9/21
1. Przekazywanie parametrów/wyników przez
rejestry Szybki sposób przekazywania
niewielkiej ilosci danych. procedura generujaca
programowo zadane opóznienie parametry B -
czas opóznienia wykorzystanie stosu
2B delay EX (SP),HL 2-krotna zamiana
HL 19 EX (SP),HL z wierzcholkiem
stosu 19 DJNZ delay dekrement licznika
powtórzen 13/8 RET 10 przyklad
wywolania LD B,k 7 CALL delay 17
(RST delay 11) czas trwania opóznienia
(lacznie z wywolaniem) w taktach CLK
N(717)(1919)k13(k-1)81051k29
fosc2.5MHz k1 N80 ?T32?s
t400ns k0 N13138 ?T5.25ms
10Procedury
10/21
2. Przekazywanie parametrów/wyników przez
rejestry posrednio Wykorzystuje sie mechanizmy
adresowania za posrednictwem rejestrów
procesora. Metoda pozwala przekazywac procedurze
/ odbierac od niej wskazania do obszarów danych o
dowolnej wielkosci. Zwykle stosowana do
przekazywania wskazników do struktur tablicowych,
rekordowych. przyklad wywolania LD DE,tablicz
b wskazanie na adr. pocz. tablicy LD HL,sumael
wskazanie na slowo wyniku LD B,iloscel CALL sum
y
11Procedury
11/21
procedura sumujaca 1-bajtowe elementy tablicy
parametry B - liczba elementów do zsumowania
DE - poczatek tablicy HL
- adres 2-bajtowego wyniku operacji. zmiany
DEDEB, B0. wykorzystanie stosu
4B sumy PUSH AF przechowanie AF na stosie
XOR A LD (HL),A zerowanie bajtów
wyniku INC HL LD (HL),A DEC HL sumy1
LD A,(DE) Aelement tablicy ADD A,(HL) dodawan
ie 2-bajtowe LD (HL),A INC HL LD A,(HL) ADC A,
0 LD (HL),A DEC HL INC DE nastepny element
tablicy DJNZ sumy1 dekrement licznika
B POP AF odtworzenie AF ze stosu RET
12Procedury
12/21
3. Przekazywanie parametrów/wyników przez
wspólny, staly obszar w RAM Sposób umozliwiajacy
przekazywanie duzych ilosci danych. Zwiazany jest
z koniecznoscia dodatkowego przesylu informacji
do stalego obszaru przed wywolaniem procedury
i/lub z tego obszaru po wyjsciu z
procedury. Wplywa negatywnie na wspóluzywalnosc
procedury. przyklad wywolania LD BC,4
inicjacja obszarów wspólnych LD HL,liczba1 LD DE
,L1 LDIR LD BC,4 LD HL,liczba2 LD DE,L2 LDIR
CALL dod4b LD HL,(Lw) skopiowanie wyniku z
obszaru LD (suma),HL wspólnego do zmiennej
roboczej LD HL,(Lw2) LD (suma2),HL
13Procedury
13/21
procedura realizujaca dodawanie liczb
4-bajtowych parametry L1,L2 - 4-bajtowe
obszary ze skladnikami wyniki Lw - 4-bajtowa
suma wykorzystanie stosu 6B dod4bEX AF,AF
wybór alternatywnego AF PUSH BC skladowanie
BC na stosie PUSH IX skladowanie IX na
stosie LD B,4 licznik bajtów LD IX,L1
IX-gtobszar wspólny XOR A CY0 dodb LD A,(IX
0) Abajt z L1 ADC A,(IXL2-L1) dodanie
bajtu z L2 LD (IXLw-L1),A bajt sumy do
Lw INC IX nastepne bajty DJNZ dodb POP IX
odtworzenie rejestrów POP BC EX AF,AF' RET
14Procedury
14/21
Staly obszar w asemblerze moze byc definiowany na
rózne sposoby ORG 9000h L1 DFS 4 L2 DFS 4
Lw DFS 4 albo L1 EQU 9000h L2 EQU 9004h L
w EQU 9008h albo L1 EQU 9000h L2 EQU
L14 Lw EQU L24
15Procedury
15/21
Staly obszar a wspóluzywalnosc procedury wariant
bezpieczny
wariant krytyczny
16Procedury
16/21
4. Przekazywanie parametrów przez liste w tresci
programu Wykorzystuje sie mechanizmy dostepu do
stosu. Metoda stosowana do przekazywania
parametrów, których wartosc jest juz znana na
etapie asemblacji (np. maks. liczba iteracji,
liczba wykonania petli opózniajacej). Zwykle
stosowana do przekazywania wskazników do struktur
tablicowych, rekordowych. przyklad
wywolania CALL delayk 17 DFB k LD A,(HL)
17Procedury
17/21
procedura realizujaca opóznienie parametry k
- krotnosc powtórzenia petli, podana za kodem
rozkazu wywolania zmiany rej.F,
B0 wykorzystanie stosu 2B delaykEX (SP),HL
19 HLadres powrotu LD B,(HL) 7
Bkrotnosc k INC HL 6 inkrement adresu
powrotu EX (SP),HL 19 nowy adres powrotu na
stos delay EX (SP),HL 19 rozkazy dajace
EX (SP),HL 19 opóznienie
DJNZ delay 13/8 dekrement licznika
powtórzen RET 10 czas trwania opóznienia
w taktach CLK (lacznie z wywolaniem) N51k73
18Procedury
18/21
5. Przekazywanie parametrów / wyników przez
stos Wykorzystuje sie mechanizmy dostepu do
stosu. Dobra metoda, zapewniajaca dynamiczny
przydzial pamieci dla zmiennych, ale wymaga nieco
uwagi przy programowaniu, poniewaz ingeruje w
strukture stosu. Zwykle stosowana przez
kompilatory do przekazywania parametrów do
procedur i tworzenia dla nich dynamicznych
obszarów roboczych. przyklad
wywolania LD HL,(...) zapis k
liczb PUSH HL na stos LD HL,k PUSH HL k
na stos CALL sumujkliczb INC SP k INC SP
razy POP HL HLsuma
19Procedury
19/21
procedura sumujaca k liczb 2-bajtowych
parametry liczby i licznik k - na stosie
wynik suma - na stosie, zamiast pierwszej z
sumowanych liczb wykorzystanie stosu 10k1)2
bajtów sumujkliczb PUSH HL PUSH BC
skladowanie rejestrów na stosie PUSH DE PUSH
AF LD HL,10 ADD HL,SP IX-gtk na
stosie LD B,(HL) B - licznik
liczb INC HL EX DE,HL LD HL,0
wyzerowanie sumy S sumujliczbe INC DE
DE-gtliczba na stosie LD A,(DE) Amlodszy
bajt ADD A,L LD L,A INC DE LD A,(DE)
Astarszy bajt ADC A,H LD H,A DJNZ sumu
jliczbe dekrement licznika powtórzen
20Procedury
20/21
LD (DE),A zapisanie sumy S na
stosie DEC DE w miejscu pierwszej z
liczb LD A,L LD (DE),A zapis mlodszego
bajtu POP AF odtworzenie rejestrów POP DE
POP BC POP HL RET
21Procedury
21/21