Ćwiczenie 3 - wprowadzenie polecenia CALL RET



W ćwiczeniu tym poznamy polecenie Call Ret pozwalajace na wywolanie podprogramow znajdujacych sie w naszym programie. Zatem jak to działa.

Polecenie Call służy do wywołania podprogramu umieszczonego w naszym programie. Składnia tego polecenia wygląda następująco:

Call nazwa_podprogramu


Każde podprogram wywołany przez Call musi zostac zakończony poprzez instrukcję Ret. Samo Ret oznacza nic innego jak Ret, zatem podprogram ten może zwracać pewną wartość uzyskaną poprzez jego działanie. Jeżeli po wykonaniu Call nie zostanie odnaleziona instrukcja Ret program wyrzuci błąd. Dlatego jeżeli korzystamy z większej ilości wywołań podprgramów najlepiej jest umieścić je na koniec programu a na samym początku tegż programu użyć instrukcji JMP(poznanej w poprzednim ćwiczeniu), aby przenieść sie automatycznie przy instrukcjach wywołania Call. Po wykonaniu określonego podprogramu (czyli po dotarciu do instrukcji Ret) kolejną instrukcja wykonywaną będzie ta znajdująca sie bezpośrednio po Call. Zobaczmy zatem jak to wygląda w praktyce. Zajmiemy się odrazu częścią danych, a zatem instrukcjami zawartymi pomiędzy .Starup a .Exit

JMP wywolanie skok do etykiety wywołanie
napis poczatek podprogramu napis
mov dx, offset tekst wprowadzenie parametrów wywołania
mov ah, 09h procedury wyświetlenia komunikatu
Ret zakończenie podprogramu
wywołanie: etykieta
Call napis wywołanie podprogramu napis
Call napis wywołanie podprogramu napis
Call napis wywołanie podprogramu napis
Call napis wywołanie podprogramu napis


Powyższy program czterokrotnie wyświetli nam na ekranie napis Hello World (deklaracja jaki tekst wyświetlamy jest w ćwiczeniu 1 na podstawie którego wciąż bazujemy). Przyjżyjmy się zatem, co jest pokolei wykonywane. Najpierw mamy skok do etykiety wywołanie (jest to najczęściej używany sposób jeżeli w programie mamy wywołania). Następnie wykonujemy instrukcję Call która przenosi nas do podprogramu Napis. Po jego wykonaniu jesteśmy przenoszeni do następnej instrukcji za naszym Callem ktory został właśnie wykonany. Kolejną instrukcja jest także Call, a zatem następuje jego wykonanie, i tak do końca programu.
Copyright by Murathag