assembler86 4

assembler86 4



188


7. Wybrane techniki programowania

Opisany mechanizm jest bardzo skutecznym narzędziem do tworzenia własnej biblioteki podprogramów wcześniej sprawdzanych, uruchomionych i wykorzystanych. Taka biblioteka ułatwia budowę nowych programów.

Stos odgrywa ważną rolę przy przekazywaniu parametrów do (z) podprogramów. Istnieją cztery sposoby przekazywania parametrów.

Przekazywanie parametrów przez rejestr}> - metoda najprostsza i najszybsza, ale posiadająca liczne wady, z których najistotniejsze to brak możliwości przekazania wprost większej liczby danych oraz konieczność skrupulatnego zachowania stanu rejestrów, gdy dane są przekazywane przez wiele poziomów odwołań.

Przekazywanie parametrów przez wspólny obszar pamięci - sposób pozwala przekazać dużą liczbę parametrów, wymaga jednak uwagi przy programowaniu, łatwo bowiem utracić panowanie nad obszarem pamięci, do którego różne procedury mogą zapisywać informacje. Metoda jest łączona najczęściej z poprzednią; przez rejestr(y) jest przekazywany adres omawianego wspólnego obszaru pamięci.

Przekazywanie parametrów przez listę umieszczoną w treści programu - w segmencie programu za rozkazem wywołania umieszcza się parametry w kolejnych bajtach. Wymaga to modyfikowania adresu powrotu z podprogramu, a także modyfikowania fragmentu segmentu programu, w którym mają być umieszczone parametry, co nie zawsze jest możliwe (np. program rezyduje w pamięci EPROM), a prawie zawsze jest niewskazane. Przykłady stosowania wymienionych metod znajdzie Czytelnik w publikacjach [5] i [8]. My zajmiemy się szerzej czwartą metodą, wykorzystującą stos.

Przekazywanie parametrów przez stos - metoda nawiązująca do języków wysokiego poziomu, dla których przekazywanie parametrów przez stos jest rozwiązaniem standardowym. Przekazywanie parametrów do (z) podprogramu przez stos może wydawać się w pierwszej chwili uciążliwe i mało wydajne. Spośród wszystkich wymienionych wyżej metod, ta zapewnia największą dyscyplinę programowania, a tym samym znacznie zmniejsza prawdopodobieństwo popełnienia błędu, zwłaszcza w przypadku wielu poziomów odwołań. Ułatwia ona konstruowanie procedur współużywalnych i jako jedyna może zagwarantować prawidłowe współdziałanie modułów programowych napisanych w różnych językach programowania. Metodę pokazano na przykładzie i rys. 7.4.

Przykład

; program wywołujący podprogram

•• •

EXTRN PODPROGRAMiFAR

• • •

BAJT    DB ?    ; deklaracja zmiennych

SŁOWO DW ?    ; będących parametrami wywołania

SLOWO_2 DD ?    ; podprogramu

TABLICA DW 100 DUP (?)

WYNIK DW ?

powered by

7.1. Podprogramy. Praca z segmentami stosu


Mi sto!

; przygotowanie parametrów wejściowych MOV AL, BAJT

PUSH AX    ; trzeba zapisać całe słowo

PUSH SŁOWO

PUSH WORD PTR SLOWO_2 ; mniej znacząca część zmiennej PUSH WORD PTR SLOWO_2 + 2    ; bardziej znacząca część zmiennej

MOV AX, OFFSET TABLICA PUSH AX

MOV AX, LENGTH TABLICA PUSH AX

; przesłanie offsetu dla parametru wyjściowego MOV AX, OFFSET WYNIK PUSH AX

; wywołanie podprogramu CALL PODPROGRAM

Początkowy fragment wywoływanego podprogramu może mieć postać

PUSH BX PUSH CX PUSH SI PUSH DI PUSH BP MOV BP, SP


MOV CX,[BP 4-16] MOV BX,[BP + 18]

• • •

MOV DI,[BP +14] MOV AX,[BP + 26]


MOV BX,[BP + 24| MOV AX,[BP + 22] MOV DX,[BP + 20)


wszystkie używane w podprogramie rejestry powinny być bezwzględnie odtworzone po powrocie do programu wywołującego

rejestr BP wskazuje teraz szczyt stosu

standardowo rejestr BP adresuje

segment stosu

długość tablicy

offset tablicy

jakaś operacja na tablicy

offset wyniku

w akumulatorze jest zmienna BAJT

w rejestrze BX jest wartość zmiennej SŁOWO rejestry AX i DX zawierają zmienną SŁOWO 2 (słowo podwójne)

obliczony wynik

odtworzenie zawartości rejestrów


MOV[DI],AX POP BP POP DI POP SI POP CX POP BX

RET 14    ; dodatkowo: SP<—SP + 14


; SP wskazuje tę samą warstwę stosu co przed przesłaniem ; do stosu parametrów wywołania


Wyszukiwarka

Podobne podstrony:
assembler?86? 2 184 7. Wybrane techniki programowania Z tworzeniem podprogramów zasadniczo są zwią
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
WYBRANE ZASTOSOWANIA PROGRAMOWANIA LINIOWEGO1. Zagadnienie o diecie (zadanie o mieszance) Mamy do dy
Wprowadzenie Programy obiektowe 3D Programy tej klasy zostały stworzone jako narzędzie do szybkiej
Porównanie kosztów wybranych rozwiązań (na podstawie: [2]): Rozwiązanie Narzędzia do tworzenia
Czym jest program prezentacyjny Jest to oprogramowanie służące do tworzenia grafiki prezentacyjnej,
16.    Program TELNET wykorzstywany jest najczęściej podczas emulacji do: 17.
14    Wśród programów użytkowych wytó/nu się pakiety narzędziowe do których
W4. Programy narzędziowe do tworzenia systemów SCADA. Przykłady komercyjnych systemów SCADA. W5.
55931 img293 (3) 287 Elementarne wprowadzenie do techniki sieci neuronowych12.2. Jakie są dostępne r
Strona5 15Podstawowe moduły programu Unigraphics NX MS    ...... Program Unigraphics
img293 (3) 287 Elementarne wprowadzenie do techniki sieci neuronowych12.2. Jakie są dostępne rodzaje

więcej podobnych podstron