Kurs programowania w asemblerze
Procesy
Proces - jest to wykonywany w danej chwili program wraz z otoczeniem. System operacyjny DOS może w jednej chwili może wykonywań jeden proces. Wyjątkami są programy rezydentne. Każdy proces może wywoływać inny, zawieszając na ten czas swoją pracę. Procesy więc dzielą się na macierzyste i potomne. System operacyjny DOS podczas uruchamiania procesu w pierwszej kolejności przydziela pamięć operacyjną. Jeśli odpalany plik jest plikiem typu COM, przydzielona zostaje cała dostępna pamięć, jeśli jest typu EXE zostaje przydzielona pamięć wynikająca z nagłówka pliku. Następnie tworzony zostaje przedrostek procesu (PSP). Jest to struktura zajmująca 256 bajtów i zawierająca najważniejsze informacje o procesie. Po stworzeniu PSP, DOS tworzy statyczną kopię środowiska systemowego. Na końcu tego środowiska znajduje się ścieżka dostępu do aktualnie odpalanego pliku. Przez tworzenie kopii środowiska wszystkie ustawienia zostają przywrócone, np. jeśli zmienisz znak zachęty w swoim programie, po powrocie do DOS'a, znak zachęty zostanie ustawiony, na taki, jaki był przed uruchomieniem programu. Następnie DOS ustawia bufor roboczy operacji dyskowych (DTA) na PSP:080 i odpala program zaczynając od adresu o PSP:0100. Dla programów typu COM wszystkie rejestry segmentowe są ustawione na adres PSP, a do IP wpisywana jest wartość 100H. Przy odpalaniu programów typu EXE punkt startu odczytywany jest z nagłówka pliku.
Poniżej została zamieszczona tabela przedstawiająca przedrostek PSP.
| Offset | Rozmiar | Zawartość | Opis |
|---|---|---|---|
| 0 | 2 | CD 20H | Skok do tego miejsca powoduje zakończenie procesu (przerwanie 20H) |
| 2 | 2 | pamięć | Pamięć; Pułap pamięci programu (Pierwszy wolny segment) |
| 4 | 1 | Zarezerwowane | |
| 5 | 5 | call offset segment | FAR CALL do procedury obsługującej funkcje systemowe (przerwanie 21H) |
| 6 | (2) | Dost. | Liczba dostępnych bajtów w segmencie (dla plików COM) |
| AH | 4 | offset segment | Adres procedury obsługującej przerwanie 22H |
| EH | 4 | offset segment | Adres procedury obsługującej przerwanie 23H |
| 12H | 4 | offset segment | Adres procedury obsługującej przerwanie 24H |
| 16H | 16H | zarezerwowane przez DOS | |
| 2CH | 2 | środowisko | Numer segmentu środowiska systemowego |
| 2EH | 2EH | zarezerwowane przez DOS | |
| 5CH | 10H | FCB #1 | Blok FCB pierwszego argumentu programu |
| 6CH | 14H | FCB #2 | Blok FCB drugiego argumentu programu |
| 80H | 1 | len | Liczba znaków w tekście parametrów |
| 81H | 7FH | obszar parametrów | Tekst parametrów |
| FFH |
