assembler€86ˆ 5

assembler€86ˆ 5



â– 


210    8. Uruchamianie programów asemblerowych

o rozszerzeniu EXE - sÅ‚użących do modyfikowania programu (a konkretnie wszystkich adresów 32-bitowych zawierajÄ…cych adres poczÄ…tku segmentu oraz offset) w czasie jego Å‚adowania oraz wykorzystania wÅ‚aÅ›ciwych mechanizmów systemu operacyjnego. Odbywa siÄ™ to oczywiÅ›cie automatycznie, praktycznie bez udziaÅ‚u programisty uruchamiajÄ…cego swój program użytkowy. Informacje te sÄ… zawarte w pliku o rozszerzeniu EXE w tzw. nagłówku (ang. program header) umieszczonym przed wÅ‚aÅ›ciwym programem. W tablicy 8.1 przedstawiono zawartość nagłówka. Informacje nagłówka sÄ… wykorzystywane też do modyfikowania niektórych bajtów w specjalnym obszarze w pamiÄ™ci operacyjnej rezerwowanym przez system operacyjny MS-DOS bezpoÅ›rednio przed wÅ‚aÅ›ciwym programem. Obszar ten, wielkoÅ›ci 256 bajtów (100H), nazywany w skrócie PSP (ang. program segment prefix) zawiera informacje o programie, np. jego parametry. StrukturÄ™ bloku PSP przedstawiono w tabl. 8.2.

Tablica 8.1. Nagłówek programu w pliku dyskowym o rozszerzeniu EXE Adres

wzglÄ™dny    Znaczenie

00H-01II

02H-03H

041I-05H

06H-07H

08H-09II

0A1I-0B1I

0CH-0DH

0EH-0FH

10H-11H

1211-1311

14H-15H

16H-17H

18H-19H

1AH-1BH

1CH-...


Znaki ASCII "MZ" będące wy różnikiem pliku o rozszerzeniu EXE (ang. program file signature)

Liczba bajtów na ostatniej zajÄ™tej przez program 512-bajtowej stronie Wielkość pliku EXE w 512-bajtowych stronach, liczona wTaz z nagłówkiem Liczba pozycji w tabeli relokacji (ang. numberof relocation entries)

Rozmiar nagłówka liczony w 16-bajtowych r paragraphs)

Minimalna liczba paragrafów, które po załadowaniu programu mają być zarezcrwowane za końcem programu (ang. minimum allocation of mcmoiy)

Maksymalna liczba paragrafów, które po załadowaniu programu mają być zarezerwowane za końcem programu (ang. maximum allocation memory)

Wartość poczÄ…tkowa rejestru segmentu stosu SS po zaÅ‚adowaniu programu do pamiÄ™ci Wartość poczÄ…tkowa wskaźnika stosu SS po zaÅ‚adowaniu programu do pamiÄ™ci Ujemna suma kontrolna wszystkich 16-bitowych słów pliku (ang. load error chcck sum) Wartość poczÄ…tkowa rcjestu wskaźnika rozkazów IP po zaÅ‚adowaniu programu do pamiÄ™ci Wartość poczÄ…tkowa rejestru segmentu programu CS po zaÅ‚adowaniu programu do pamiÄ™ci Przemieszczenie tabeli relokacji wzglÄ™dem poczÄ…tku pliku

Numer nakładki określony przez program łączący' (0 - oznacza część rezydentną programu) Tabela relokacji

Tablica 8.2. Struktura bloku PSP poprzedzającego program wprowadzany do pamięci operacyjnej Adres

wzglÄ™dny    Znaczenie

00H-01H

02H-03H

04H

05II-06II

0AII-0DH

0EII-11H


Rozkaz INT 20H - międzysegmentowy skok pod ten adres kończy wykonywanie programu użytkownika (rozdz. 9)

Wskaźnik pierwszego wolnego segmentu w pamięci operacyjnej (program może przykładowo zarezerwować pamięć pod tym adresem funkcją 4811)

Za reze rwowa ny

Międzysegmentowe wywołanie funkcji 00H-24II (rozdz. 9); numer funkcji w rejestrze CI.; w kolejnych wersjach systemu znaczenie może być zmienione

Adres kontynuacji po zakończeniu programu (ang. terminale address); kopia wektora przerwania 22H

Adres obsługi klawiszy Ctrl-Brcak; kopia wektora przerwania 23H

powered by

8.3. Programy pomocnicze


Mi si^l

12II-15H

16H-2BI1

2CH-2DH


2EH-4FH

50H-52H

53H-5BH

5CH-6BH

6CH-7FH

80H-FFH


• • •


Adres obsługi po wystąpieniu fatalnego błędu operacji; kopia wektora przerwania 24H Za reze rwowa nc

Adres segmentu obszaru zawierajÄ…cego "otoczenie programowe"; w obszarze tym znajdujÄ… siÄ™ m.in. takie informacje jak: sposób uaktywnienia procesora poleceÅ„, zmienne zdefiniowane za pomocÄ… SET oraz Å›cieżka dostÄ™pu do plików poza bieżącym katalogiem, zdefiniowana za pomocÄ… PATH =. CiÄ…g znaków opisujÄ…cych otoczenie zaczyna siÄ™ z offsetem równym 0 i może zaw ierać 32 K znaków. SkÅ‚ada siÄ™ z mniejszych ciÄ…gów zakoÅ„czonych zerowym bajtem; caÅ‚ość koÅ„czy siÄ™ dwoma zerowymi bajtami Zarezerwowane

Rozkazy INT 21H oraz RET (międzysegmentowy); służą do wywołania dowolnej funkcji

00H-57H za pomocą wywołania międzysegmentowego

Zarezerwowane

Blok sterujÄ…cy pierwszego pliku (FCB1) zwiÄ…zany z pierwszÄ… nazwÄ… pliku jeżeli zostaÅ‚a podana przy wywoÅ‚aniu programu; format FCB dla pliku jeszcze nie otwartego Blok sterujÄ…cy drugiego pliku (FCB2) zwiÄ…zany z drugÄ… nazwÄ… pliku jeżeli zostaÅ‚a podana przy wywoÅ‚aniu programu

Format FCB dla pliku jeszcze nie otwartego; obszar transmisji dyskowych (ang. disk transfer area - DTA). Po uruchomieniu programu używany jako bufor dyskowy aż do ewentualnej zmiany bufora za pomocÄ… funkcji 1AH.

BezpoÅ›rednio po wczytaniu programu w obszarze tym znajdujÄ… siÄ™. wprowadzone w wierszu (ang. command linÄ™) za poleceniem uruchomienia programu, znaki w kodzie ASCII bÄ™dÄ…ce parametrem (ami) polecenia:

80H-8IH - liczba wprowadzonych znaków

82H-... - wprowadzone znaki    _

adresu 80H. W PSP znajdują się dwa bloki sterujące FCB1 i FCB2 dla plików dyskowych FCB1 i FCB2 (ang .file control blok). Po załadowaniu programu zawartość rejestru AX informuje, czy istnieje zgodność z aktualnie wybraną stacją dysków a mechanizmami wybranymi w nie otwartych blokach FCB1 i FCB2 struktury PSP:

AL = 00H zgodność FCB1,    AH = 00H zgodność FCB2

AL = FFH niezgodność FCB1,    AH = FFH niezgodność FCB2

Ponadto rejestry DS i ES zawierajÄ… adres poczÄ…tku obszaru PSP, a rejestry CS, IP, SS i SP zawierajÄ… wartoÅ›ci przekazane przez program Å‚Ä…czÄ…cy. StrukturÄ™ bloku kontrolnego FCB przedstawiono w tabl. 8.3. W momencie otwarcia pliku (funkcja OFH - rozdz. 9), jego blok kontrolny ulega rozszerzeniu, powodujÄ…c automatycznie zamazanie obszaru drugiego bloku kontrolnego.

Tablica 8.3. Struktura bloku kontrolnego FCB

Adres

*7.g|ędny

7H

6II-(.2H)

1H


Znaczenie

Bajt o zawartoÅ›ci OFFH oznacza poczÄ…tek rozszerzonego bloku sterowania pliku Za reze rwowane Atrybut pliku

00000000 - dostęp bez ograniczeń ???????! - plik może być tylko czytany

?????? 1? - plik ukryÅ‚y (ang. hidden). nie można go otworzyć za pomocÄ… funkcji OFH (rozdz. 9) ?????!?? - plik systemowy, nie można go otworzyć za pomocÄ… funkcji OFH ????!??? - nazwa logiczna noÅ›nika pamiÄ™ci (ang. volume ID), umieszczana w katalogu głównym (ang. root)


Wyszukiwarka

Podobne podstrony:
assembler?86? 5 230 8. Uruchamianie programów asemblerowych BREAKPOINT ENTRY MENU BR# Break
assembler?86? 9 218 S. Uruchamianie programów asemblerowych z pliku o rozszerzeniu MAP pozwoli to
assembler?86? 1 202 8. Uruchamianie programów asemblerowych boliczne zebrane w tabeli zostają w pr
assembler?86? 2 204 8. Uruchamianie programów asemblerowych /L - utworzenie pliku z listingiem o n
assembler?86? 3 206    & Uruchamianie programów asemblerowych Znaczenie poszcze
assembler?86? 4 208 8. Uruchamianie programów asemblerowych /NO (ang. node) - bez podajania nazw b
assembler?86? 6 212 8. Uruchamianie programów asemblerowych ???1???? - nazwa podkatalogu ??1?????
assembler?86? 0 220 8. Uruchamianie programów asemblerowych E adres [lista] Polecenie może mieć dw
assembler?86? 1 222 & Uruchamianie programów asemblerowych L [adres [drive sektor sektor]] Pol
assembler?86? 2 224 8. Uruchamianie programów asemblerowych S zakres lista Polecenie powoduje odsz
assembler?86? 3 226 8. Uruchamianie programów asemblerowych -    stanu rejestrów, 7
assembler?86? 4 228 8. Uruchamianie programów asemblerowych wprowadzanie rozpoczyna się od bieżące
assembler?86? 8 216 8. Uruchamianie programów asemblerowych Wywołanie programu bibliotekarza A>
assembler?86? 0 8. Uruchamianie programów asemblerowych8.1. Programy pomocnicze W rozdziale zostan
assembler?86? 7 214 214 8. Uruchamianie programów asemblerowych Program CREF833. W wyniku działani
•    UruchamiajÄ… program OutlookExpress. PostÄ™pujÄ… zgodnie z opisem do ćwiczenia
programowania, pojawiają się także służące do tego narzędzia. Niniejszy skrypt omawia wiele takich

więcej podobnych podstron