208 8. Uruchamianie programów asemblerowych
/NO (ang. node) - bez podajania nazw bibliotek musi wystąpić zgodność nazw domniemanej bibliteki z łączonym programem.
/ST rozmiar - (deklaruje się), gdy przynajmniej jeden moduł wejściowy zawiera polecenie alokowania stosu.
Przykład
A > LINK lista_plik,plik_ładow,plik_połącz,lista_bibI [/przełączniki]
przy czym:
lista_plik - nazwa lub lista nazw plików (rozdzielonych spacją lub znakiem +) do łączenia (OBJ),
plik Jadów - nazwa pliku z ładowalnym programem maszynowym (EXE), plik_połącz - nazwa pliku z listą adresów (MAP), lista bibl - nazwa lub lista nazw plików bibliotecznych (LIB), przełączniki - znaczenie jak w poprzednim przykładzie.
Sposób wywołania można uprościć stosując znaki przecinka i średnika. Przy wywołaniu
A > LINK PROGRAM
modułem wejściowym jest PROGRAM.OBJ. Dla wszystkich pozostałych plików są proponowane nazwy standardowe.
A > LINK PROGRAM;
Równoważne deklaracji LINK PROGRAM.OBJ, PROGRAM.EXE, NUL.MAP.
A > LINK PROGRAM,,;
Równoważne deklaracji PROGRAM.OBJ, PROGRAM.EXE, PROGRAM.MAP. « Przykład
A> LINK @nazwa_pliku_tekstowego
Plik tekstowy powinien zawierać wiersze, z których każdy odpowiada właściwemu zapytaniu programu LINK, podobnie jak w przedstawionym pierwszym przykładzie wywołania. Każdy wiersz w pliku musi być zakończony znakiem Enter. Wprowadzając znak + i Enter, można kontynuować wprowadzanie listy w nowym wierszu. Obowiązują również opisane zasady stosowania przecinka i średnika. Parametry można wprowadzić z więcej niż jednego pliku.
Jeżeli wielkość wczytywanych przez program LINK modułów przekracza dostępną pojemność komputera, to jest tworzony przejściowy plik roboczy o nazwie VM.TMP. Utworzenie pliku jest sygnalizowane komunikatem VM.TMP has been crcated Do not change diskette in drive A:
Drugi wiersz komunikatu informuje, że w czasie pracy programu LINK nie wolno zmienić dyskietki w stacji dysków. Plik VM.TMP jest kasowany automatycznie po zakończeniu pracy przez program ładujący.
Na rysunku 8.3 przedstawiono przykładowe wywołania programu LINK oraz zawartość pliku o rozszerzeniu MAP.
BT 2T 8.3. Programy pomocnicze |
powered by Misi°ol | |||
a) |
A;\TEST>b:link Microsoft (R) 8086 Objcct Linker Version 3.05 Copyright (C) Microsoft Corp 1983.1984, 1985. Ali rights reserved. Object Modules [.OBJ]: test Run File [TEST.EXE|: List File [NUL.MAP): test Libraries [.LIB]: | |||
b) |
A:\TEST >b:link tesfeom Microsoft (R) 8086 Object Linker Version 3.05 Copyright (C) Microsoft Corp 1983. 1984, 1985. Ali rights reserved. Run File [TESTCOM.EXE]: a: List File [NUL.MAP]: Libraries [.LIB]: * Warning: no stack segment |
A:\TEST > type test.map Start Stop Length
c)
d)
Na mc Class DANE STOS PROGRAM
00000H 0087011 00871H
00880H 0097FH 00100H
00980H 00AB2H 00133H
Program entry point at 0098:0000
Microsoft (R) 8086 Object Linker Version 3.05
Copyright (C) Microsoft Corp 1983,1984, 1985. Ali rights reserved.
Valtd switches are:
CPARMAXAI LOC
DOSSEG
DASLLOCATE
EXEPACK
HELP
HIGH
L1NUNUMBERS
MAP
NODEFAULTLIBRARYSEARCII
NOGROLPASSOCIATION
NOIGNORECASE
OVERLAYINTERRUPT
PAUSE
SEGMENTS
SI A CK
Rys. 8.3. Przykładowe wywołania programu LINK: a) pierwszy sposób wywołania - przebieg łączenia; b) ostrzeżenie o braku segmentu stosu; c) plik o rozszerzeniu MAP uzyskany z przykładu w rozdz. 10.1; d) opcje programu LINK/HE.
Pliki z rozszerzeniem EXE uzyskane w wyniku działania programu LINK są Ograniczone jedynie rozmiarami dostępnej pamięci operacyjnej. Oznacza to, że programy źródłowe mogą zawierać wiele segmentów (do 64 KB), komunikujących się między sobą za pomocą 32-bitowych adresów logicznych. Program maszynowy zawarty w pliku o rozszerzeniu EXE jest przesuwalny (relokowalny), może być zatem załadowany i uruchomiony począwszy od dowolnego adresu będącego wielokrotnością liczby 16 (10H). Wymaga to oczywiście dodatkowych informacji zawartych w pliku