assembler86 3

assembler86 3



186 7. Wybrane techniki programowania

Przykład

• ••

ASSUME SS:STOS MOV AX, STOS

MOV SS, AX ; inicjalizacja rej. segmentowego MOV SP, OFFSET SZCZYT STOSU

W przypadku uruchamiania programu pod kontrolą systemu operacyjnego MS-DOS, definiowanie segmentu stosu nieco upraszcza się, ponieważ program łączący automatycznie inicjuje rejestry SP i SS odpowiednimi wartościami. Dodatkowo należy określić, który z segmentów ma być traktowany jako segment stosu (zob. opis dyrektywy SEGMENT). Powyższa przykładowa definicja i inicjacja będzie miała postać

• • •

STOS    SEGMENT STACK

DW 128 DUP (?)

STOS    ENDS

• ••

ASSUME    SS:STOS

• • •

Stos jest najczęściej wykorzystywany w programie

-    automatycznie w czasie wykonywania niektórych rozkazów, np. CALL, RET, INT,

IRET;    V

-    do chwilowego zapamiętywania stanu rejestrów i niektórych zmiennych w przypadku, gdy ich stan trzeba będzie później odtworzyć, np. przy wykorzystaniu rozkazów POP, PUSH ilp.;

-    przy konstrukcji podprogramów wielokrotnie wykorzystywanych w systemach wielozadaniowych;

-    do przekazywania parametrów do (z) podprogramów.

Podprogramy w języku asemblerowym mikroprocesorów 8086/8088 mogą być umieszczane zarówno wewnątrz segmentu programu, w którym znajduje się program wywołujący je, jak i też w innych segmentach programu, tłumaczonych i uruchamianych oddzielnie. O ile w pierwszym przypadku wywołanie podprogramu i powrót z niego wiąże się jedynie z koniecznością zmiany zawartości wskaźnika rozkazów IP -o tyle w drugim przypadku, także ze zmianą zawartości rejestru segmentowego CS. Ponieważ w obu przypadkach asembler koduje rozkazy CALL i RET nieco inaczej (zob. p. 5.5.), rozróżnienie ich musi być dokonywane za pośrednictwem dyrektywy PROC/ENDP (zob. p. 4.3.3). Podprogram, który będzie wywoływany wyłącznie z zawierającego go segmentu programu, powinien być zadeklarowany bliski (NEAR)-

Przykład

PROGRAM SEGMENT

; tutaj jest program główny

CALL PODPROGRAM

7.1. Podprogramy. Praca z segmentami stosu

powered by

Mi sto!


• • •

CALL PODPROGRAM

; a tu się kończy ; początek podprogramu ; koniec podprogramu


HLT

PODPROGRAM PROC NEAR

• • •

RET

PODPROGRAM ENDP

PROGRAM    ENDS    ; koniec segmentu    +

W przypadku, gdy podprogram ma być uruchamiany niezależnie od programu głównego (np. przez różnych programistów lub w różnym czasie), a później połączony z programem wywołującym, musi być on zdefiniowany w oddzielnym segmencie i zadeklarowany jako daleki (FAR). Równocześnie nazwa podprogramu musi być zdefiniowana jako zewnętrzna, przy czym tak jak opisano w p. 4.3.3, każdej dyrektywie EXTRN musi odpowiadać dyrektywa PUBLIC. Brak dyrektywy EXTRN (na zewnątrz definicji segmentu) spowoduje, że w czasie asemblacji segmentu z programem wywołującym, nazwa podprogramu będzie zasygnalizowana jako nie zdefiniowana.

Przykład

; w tym segmencie PODPR1 będzie wywoływany, choć nie jest ; w nim zdefiniowany

EXTRN    PODPR_l:FAR

PROGRAMGLOWNY SEGMENT

• ••

CALL PODPR1

• ••

CALL PODPR 1

PROGRAM GŁÓWNY    ENDS

END

; kolejny segment zawiera wywoływany podprogram i będzie ; tłumaczony niezależnie od segmentu poprzedniego PODPROGRAMY    segment

PUBLIC PODPR1,...

PODPR 1    PROC FAR

; treść podprogramu

PODPR 1

RET

ENDP

PODPROGRAMY

•••

ENDS

END


; np. inne podprogramy




Wyszukiwarka

Podobne podstrony:
assembler?86? 7 194 7. Wybrane techniki programowania WEKTOR_P 32 EQU STOS WORD PTR ES:32*4 SEGMEN
assembler?86? 2 184 7. Wybrane techniki programowania Z tworzeniem podprogramów zasadniczo są zwią
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? 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? 4 188 7. Wybrane techniki programowania Opisany mechanizm jest bardzo skutecznym nar
assembler?86? 3 26 2. Mikroprocesory 8086/8088 Przykład (rys. 2.12) ZMIENNA2 ZMIENNA 1 ADD AX, ZMI
assembler?86? 3 266 10. Przykłady programów 80    ) 81 82    006C 00
UCZELNIE TECHNICZNERachunekkosztów Wybrane zagadnienia w teorii i przykładach Anna Stronczek Anna
X e Właściwości dla Przechwytywanie okna 3’ Okno [WINWORD.EXE]: Wybrane funkcje programu OBS Studio
Ewolucja technik programowania■Zestawienie cech wybranych języków programowania Language
assembler?86? 3 146    5. Rozkazy mikroprocesorów 8086/8088 Tablica 5.11. Przykłado
assembler?86? 3 206    & Uruchamianie programów asemblerowych Znaczenie poszcze
assembler?86? 3 226 8. Uruchamianie programów asemblerowych -    stanu rejestrów, 7
221 (60) Parametry techniczne kilku przykładowo wybranych warikapów    Tablica 4.5
229 (59) Parametry techniczne kilku przykładowo wybranych diod tunelowych Tablica 4.6 Typ diody Pa
assembler?86? 3 246 9. Wykorzystanie procedur systemowych w programach użytkowych 06H - bezpośredn

więcej podobnych podstron