202
8. Uruchamianie programów asemblerowych
boliczne zebrane w tabeli zostają w programie zastąpione odpowiednimi wartościami (np. nazwy zmiennych odpowiednią wartością offsetu), a dla rozkazów są wygenerowane właściwe kody rozkazów maszynowych. Program maszynowy zostaje zapisany do pliku dyskowego o rozszerzeniu OBJ. Oprócz tego asembler może utworzyć dwa dodatkowe pliki o rozszerzeniach LST i CRF. W pierwszym z nich zostaje zapisany listing programu - raport asemblacji, który zawiera wiele istotnych informacji (adresy, kody, błędy itd.). Bez ich znajomości przetestowanie programu asemblerowego jest praktycznie niemożliwe. Drugi plik zawiera informacje dla listy odwołań (ang. cross reference), które za pomocą innego programu narzędziowego CREF mogą być przekształcone w możliwy do wydrukowania inny plik dyskowy z rozszerzeniem REF.
Program Å‚Ä…czÄ…cy LINK
Program ten pozwala utworzyć program maszynowy z wielu niezależnie tłumaczonych modułów (plików o rozszerzeniu OBJ) oraz procedur bibliotecznych (pliki o rozszerzeniu LIB). Efektem pracy programu LINK jest plik z programem maszynowym o rozszerzeniu EXE, zawierający dodatkowe informacje dla systemu operacyjnego. Wyprowadzenie do systemu MS-DOS nazwy tego pliku jako polecenia systemowego spowoduje załadowanie go do pamięci operacyjnej komputera i automatyczne jego uruchomienie. Program LINK może utworzyć dodatkowy plik o rozszerzeniu MAP, (zawierający listę połączeń), informujący o sposobie uporządkowania segmentów.
Program bibliotekarza LIB
Przy programowaniu modularnym, gdy dane zadanie jest rozwiązywane przez ciąg kolejnych podprogramów', można utworzyć z niektórych przetestowanych i uruchomionych podprogramów pliki biblioteczne, do wykorzystania w innych programach. Pliki
0 rozszerzeniu LIB są tworzone z plików uzyskanych po asemblacji OBJ. Jeżeli jakiś program potrzebuje podprogramów bibliotecznych, to należy przy wywołaniu programu łączącego LINK użyć nazwy biblioteki LIB. Program LINK odnajduje odpowiednie symbole zewnętrzne (EXTERNAL/PUBLIC) i przyłącza znaleziony podprogram.
Program uruchomieniowy
Program ten pozwala śledzić wykonanie programu maszynowego załadowanego do pamięci operacyjnej mikrokomputera, krok po kroku, z. możliwością podglądania
1 modyfikowania zawartości rejestrów, obszarów' pamięci i włelu innych operacji ułatwiających sprawne testowanie programu i usunięcie błędów logicznych. Wśród popularnych programów uruchomieniowych dostępnych w komputerach klasy IBM PC/XT/AT wymienimy klasyczny program systemowy DEBUG, oraz w większości przypadków znacznie efektywniejszy ASD (ang. advunced screen debugger) będący izw. programem uruchomieniowym pełnoekranowym. Różnica między tymi programami stanie się dla Czytelnika jasna po zapoznaniu się z rozdz. 8.3.
Program EXE2BIN
Program EXE2BIN pozwala przekształcić niektóre pliki dyskowe o rozszerzeniu EXE w pliki o rozszerzeniu COM lub BIN. Pliki z rozszerzeniem COM wywodzą się z sys-
powered by
8.2. Przebieg asemblacji
temu operacyjnego CP/M dla mikrokomputerów 8-bitowych. Aby przetworzenie w plik o rozszerzeniu COM było możliwe, program źródłowy musi spełniać pewne warunki, m.in.: kod wynikowy* mieści się w obszarze pamięci operacyjnej nie większej niż 64 KB, nie został zdefiniowany segment stosu, wskaźnik programu ustawiony dyrektywą ORG ma wartość 100H, jest to adres pierwszego rozkazu w programie (rozdz. 8.2)
Makroasembler MASM można wywołać na kilka sposobów. Wymienimy trzy, najczęściej stosowane, a Czytelnik wybierze najbardziej mu odpowiadający. W przykładach założymy, że plik MASM.EXE znajduje się na dyskietce w stacji dysków A, a pliki z programami do asemblacji i programami pomocniczymi w stacji dysków B.
Przykład
A > MASM [/przełączniki]
Polecenie spowoduje załadowanie makroasemblera do pamięci operacyjnej, który po przedstawieniu się zażąda wprowadzenia trzech parametrów.
Source filename[.ASM]:
Nazwa pliku z programem źródłowym. Rozszerzenie ASM jest przyjmowane automatycznie i nie trzeba go wprowadzać.
Object filename [source.OBJ]:
Nazwa tworzonego pliku z programem wynikowym. Potwierdzenie jedynie klawiszem Enter spowoduje przyjęcie identycznej nazwy pliku wynikowego jak nazwa pliku źródłowego z rozszerzeniem OBJ.
Source listing [NUL.LST]:
Nazwa utworzonego pliku z listingiem (raport asemblacji). Potwierdzenie jedynie klawiszem Enter (czyli przyjęcie nazwy* NUL), jest równoznaczne z poleceniem nictwo-rzenia pliku.
Cross reference [NUL.CRF]:
Nazwa utworzonego pliku z listą odwołań.
Znaczenie słowa NUL identyczne jak dla listingu. ♦
W wywołaniu makroasemblera może wystąpić jeden lub kilka jednoliterowych przełączników o następującym znaczeniu
/A - zapisanie segmentów w kolejności alfabetycznej w pliku o rozszerzeniu OBJ;
/B liczba - zadeklarowanie wielkości bufora dla pliku źródłowego (liczba określa wielkość bufora w 1 KB blokach);
/C - utworzenie pliku o rozszerzeniu CRF;
* polecenie utworzenia listingu przy obu przebiegach asemblera. Porównanie oba listingów może czasem wydatnie pomóc przy usuwaniu błędów; l^symbol[ - wartość] - działanie jak dla dyrektywy EQU w programie źródłowym;
/Ipat/t - zdefiniowanie katalogu dla plików dołączanych dyrektywą INCLUDE;