assembler€86ˆ 2

assembler€86ˆ 2



184


7. Wybrane techniki programowania

Z tworzeniem podprogramów zasadniczo sÄ… zwiÄ…zane dwa typy rozkazów: CALL wywoÅ‚ujÄ…cy podprogram i RET pozwalajÄ…cy powrócić do miejsca wywoÅ‚ania (rys. 7.1). Rozkazy te zmieniajÄ… zawartość wskaźnika rozkazów 1P oraz ewentualnie rejestru segmentowego CS, przekazujÄ…c sterowanie w żądane miejsce programu. WykorzystujÄ… także stos, tj. wydzielony obszar pamiÄ™ci operacyjnej, do którego dostÄ™p odbywa siÄ™ zgodnie z zasadÄ… LIFO (ang. Å‚asi in,first out ), czyli "ostatni wchodzi, pierwszy wychodzi". Stos jest używany do zapamiÄ™tania offsetu (i ewentualnie adresu poczÄ…tku segmentu) rozkazu, znajdujÄ…cego siÄ™ bezpoÅ›rednio po wywoÅ‚aniu podprogramu rozkazem CALL. Do rozkazu tego należy powrócić po wykonaniu podprogramu. DostÄ™p do stosu najÅ‚atwiej wytÅ‚umaczyć przez porównanie ze stosem talerzy, na którego szczyt możemy dokÅ‚adać talerze i z którego możemy je zdejmować jedynie w odwrotnej kolejnoÅ›ci. Szczyt stosu jest wska/ywany przez rejestry: SP - offset szczytu oraz SS - adres poczÄ…tku segmentu stosu (rys. 7.2). ZmianÄ™ zawartoÅ›ci rejestru SP oraz IP, a także stosu w czasie wywoÅ‚ywania kolejnych podprogramów, przedstawiono na rys. 7.3. Segment stosu może być definiowany w identyczny sposób jak segment danych. Jedynie sÅ‚owa mogÄ… być zapisywane i odczytywane do (ze) stosu. Wskaźnik stosu SP zawiera zawsze offset ostatnio zapisanego sÅ‚owa do stosu. Zapis lub odczyt każdorazowo zmniejsza lub zwiÄ™ksza o dwa zawartość wskaźnika SP. Stos jest inicjowany z naj-

Segment stosu


PoczÄ…tek segmentu stosu

SS

Offset danego słowa w stosie

SP

Po inicjacji stosu, przed pierwszym zapisem


Pamięć

0

1

2

3


OFEH

SP


OFPH

Rys. 7.2. Przykładowy segment stosu

Stos







Rys. 7.3. Stany stosu w trakcie przykładowego wywołania podprogramów



większym adresem segmentu stosu i jest zapełniany wraz z adresami malejącymi. Typowy sposób definiowania segmentu stosu.

Przykład

STOS

SEGMENT

DW 128 DUP (?) ; stos ma 128 słów

SZCZYT STOSU LABEL WORD

STOS

ENDS

♦

Tak zdefiniowanemu segmentowi stosu musi odpowiadać w segmencie programu (ini-cJująca) sekwencja rozkazów i dyrektyw.


Wyszukiwarka

Podobne podstrony:
assembler?86? 4 188 7. Wybrane techniki programowania Opisany mechanizm jest bardzo skutecznym nar
assembler?86? 3 186 7. Wybrane techniki programowania Przykład • •• ASSUME SS:STOS MOV AX, STOS MO
assembler?86? 5 190 7. Wybrane techniki programowania Offsc! Stos SP, nowe BP + 2 +4 + 6 
assembler?86? 6 192 7. Wybrane techniki programowania to wydzielony fragment pamięci operacyjnej (
assembler?86? 7 194 7. Wybrane techniki programowania WEKTOR_P 32 EQU STOS WORD PTR ES:32*4 SEGMEN
assembler?86? 8 196 7. Wybrane techniki programowania TAB 3 TAB 4 Rys. 7.8. W przypadku, gdy tabli
assembler?86? 9 198 7. Wybrane techniki programowania CLD PI:    MOVSB ; modyfikacj
assembler?86? 2 264 10. Przykłady programów znaków, wówczas kolejny znak jest ignorowany, przerwan
zdj6 Rozwój technik programowania obiektowe - gdzie poÅ‚ożono nacisk na : •    tworze
Ewolucja technik programowania■Zestawienie cech wybranych języków programowania Language
Sterowniki Programowalne (SP)Wybrane aspekty procesu tworzenia oprogramowania dla sterownika PLCPods
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
assembler?86? 2 204 8. Uruchamianie programów asemblerowych /L - utworzenie pliku z listingiem o n
assembler?86? 2 224 8. Uruchamianie programów asemblerowych S zakres lista Polecenie powoduje odsz
assembler?86? 2 244 9. Wykorzystanie procedur systemowych w programach użytkowych Program użytkowy
img189 (9) r4.7 Frasprogramme mit Unterprogramm - Technik L 4.7.3 Programmier-iibung: Unter*

więcej podobnych podstron