assembler€86ˆ 6

assembler€86ˆ 6



212 8. Uruchamianie programów asemblerowych

???1???? - nazwa podkatalogu ??1????? - plik zmodyfikowany ?1 ?????? - zarezerwowane 1 ??????? - zarezerwowane

OOH

01H-08H

09H-0BH

OCH-ODH

OEH-OFH

10H-13H

14H-15H


16H-17H


18H-1FH

20H


21H-24H


Numer stacji dysków: 0 - aktualnie Przydzielony dysk, 1 - dysk A:, 2 - dysk B: itd.

Nazwa pliku (bez rozszerzenia); niewykorzystane miejsca wypełnione od prawej strony spacjami

Rozszerzenie nazwy pliku: niewykorzystane miejsca wypeÅ‚nione od prawej spacjami Wskazanie aktualnego rekordu logicznego w pliku (rekord logiczny skÅ‚ada siÄ™ z jednego lub wiÄ™cej bloków po 128 bajtów); po otwarciu pliku ustalany jest na wartość 0 Wielkość bloku w bajtach; standardowo równa 80H, OOH dla bloku o 128 bajtach (po otwarciu pliku wielkość może być zmieniona)

Rozmiar pliku w bajtach (ang. filc size)

Data ostatniego zapisu do pliku adres 15H: rrrrrrrm 1411: mmmddddd

przy czym: rrrrrrr - rok zakodowany dwójkowo liczony od 1980 mmmm - miesiÄ…c dwójkowo ddddd - dzieÅ„ zakodowany dwójkowo Czas ostatniego zapisu do pliku adres 17H: gggggmmm 16H: mmmsssss przy czym: ggggg - godzina dwójkowo

mmmmmm - minuty dwójkowo

sssss - trzydzieste części minuty dwójkowo (n/30)

Zarezerwowane

Aktualny blok o dÅ‚ugoÅ›ci 128 bajtów wewnÄ…trz rekordu logicznego okreÅ›lonego pod adresem OCH-ODH: musi być okreÅ›lony przez program przed dostÄ™pem do pliku sekwencyjnego

Bieżący numer bloku w odniesieniu do poczÄ…tku pliku; używany przed dostÄ™pem swobodnym do pliku; wskaźnik musi być ustawiany przez program; jeżeli wielkość bloku jest mniejsza niż 64, to używane sÄ… tylko trzy bajty wskaźnika___

832.    Program EXE2B1N

Program EXE2BIN dostÄ™pny jako plik o nazwie EXE2BIN.EXE przeksztaÅ‚ca plik o rozszerzeniu EXE (uzyskany w wyniku Å‚Ä…czenia programem LINK), w plik o rozszerzeniu COM lub BIN. Plik o rozszerzeniu COM jest przewidziany do bezpoÅ›redniego Å‚adowania do pamiÄ™ci operacyjnej i automatycznego wykonania (podobnie jak plik o rozszerzeniu EXE). W przypadku wystÄ…pienia dwóch plików o tej samej nazwie lecz różnych rozszerzeniach EXE i COM, zostanie zaÅ‚adowany i wykonany drugi z wymienionych.

Sposób wywołania programu EXE2BINjesl następujący A> EXE2BIN plik wej[.EXE] [plik_wyj[.ext]

przy czym ext może być: COM lub BIN.    ^ 1

Pierwszy parametr okreÅ›la plik wejÅ›ciowy przeznaczony do przetwarzania. PominiÄ™cie rozszerzenia powoduje przyjÄ™cie EXE. PominiÄ™cie z kolei nazwy pliku wyjÅ›ciowego powoduje domyÅ›lne jej przyjÄ™cie zgodne z nazwÄ… pliku wejÅ›ciowego. Niepodanie rozszerzenia nazwy pliku wyjÅ›ciowego powoduje przyjÄ™cie BIN. Przy tworzeniu programu źródÅ‚owego, który ma być przeksztaÅ‚cony w program zapisany w pliku o rozszerzeniu COM należy pamiÄ™tać, że Å‚Ä…czna wielkość programu i obszaru

8.3. Programy pomocnicze danych nie może przekraczać 64 KB, nie może też wystÄ…pić segment stosu. Program powinien rozpoczynać siÄ™ dyrektywÄ… ORG 100H i nie może zakÅ‚adać konkretnych wartoÅ›ci dla rejestrów segmentowych. Sposób przeprowadzenia konwersji zależy od poczÄ…tkowej wartoÅ›ci rejestrów CS:IP.

Jeżeli CS:IP nie jest określone, to plik o rozszerzeniu EXE zawiera informacje

0    poczÄ…tkowej zawartoÅ›ci tych rejestrów - równej 0:0 - i o bezpoÅ›rednim wykonaniu konwersji. JeÅ›li program zawiera instrukcje, których konwersja wymaga znajomoÅ›ci poÅ‚ożenia programu w pamiÄ™ci, to EXE2BIN zażąda podania adresów segmentów. W tym przypadku program musi być Å‚adowany w konkretny, żądany obszar pamiÄ™ci

1    automatyczne Å‚adowanie programu przez system MS-DOS nie może być użyte.

Jeżeli CS.IP jest okreÅ›lone jako 0000:100H, to program EXE2B1N przyjmuje, że program jest w caÅ‚oÅ›ci relokowalny, a definiowanie poÅ‚ożenia programu w pamiÄ™ci jest niedozwolone. W przypadku, gdy plik wejÅ›ciowy nie jest zgodny z formatem plików o rozszerzeniu EXE lub rejestry CS:IP majÄ… innÄ… niż ww. wartoÅ›ci, wreszcie gdy program nie jest w caÅ‚oÅ›ci relokowalny lub przekracza 64 KB pamiÄ™ci, to jest wyÅ›wietlany komunikat o bÅ‚Ä™dzie

File cannot be converted

Po zaÅ‚adowaniu do pamiÄ™ci operacyjnej programu zapisanego w pliku o rozszerzeniu COM rejestry segmentów zawierajÄ… adres segmentu dla PSP, wskaźnik programu 1P przyjmuje wartość 100H, a rejestr SP wartość odpowiedniÄ… adresowi koÅ„ca segmentu programu. Faktyczny rozmiar segmentu zostaje zmniejszony o 256 bajtów w celu zbudowania stosu. Na szczycie stosu (adres 0FFFEH-0FFFFH) zostaje umieszczone zerowe sÅ‚owo. Jeżeli program koÅ„czy siÄ™ rozkazem RET, to nastÄ…pi skok pod adres OH znajdujÄ…cy siÄ™ w obszarze PSP i zostanie wykonany rozkaz INT 20H koÅ„czÄ…cy program. Jest to możliwe pod warunkiem, że wskaźnik stosu bÄ™dzie miaÅ‚ tÄ™ samÄ… wartość przed wejÅ›ciem do programu i bezpoÅ›rednio przed rozkazem RET. Ten sposób koÅ„czenia programu nie jest jednak zalecany, gdyż Å‚atwo prowadzi do bÅ‚Ä™dów. StrukturÄ™ obszaru PSP przedstawiono w tabl. 8.2.

Na rysunku 8.4 pokazano przykładowe wywołanie programu EXE2BIN oraz katalog dysku po tej operacji. Jak widać, plik o rozszerzeniu COM jest znacznie mniejszy od swego odpowiednika o rozszerzeniu EXE.

B:\ >a:cxc2bin ekran.exe ckran.com B:\ >dir

Volumc in drive B is MASM Directory of B:\EKRAN

< D1R>

5.02.88

9.24

<DIR>

5.02.88

9.24

1792

5.02.88

10.08

6221

5.02.88

10.10

281

5.02.88

10.10

172

5.02.88

10.11

959

5.02.88

10.11

191

17.05.88

68608 bytes frec

11.45


EKRAN ASM EKRAN LST EKRAN OBJ EKRAN MAP EKRAN EXE EKRAN COM

10 File(s)

Rys. 8.4. Przebieg konwersji plików EXE => COM


Wyszukiwarka

Podobne podstrony:
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? 5 â– 210    8. Uruchamianie programów asemblerowych o rozszerzeniu EXE
assembler?86? 9 218 S. Uruchamianie programów asemblerowych z pliku o rozszerzeniu MAP pozwoli to
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? 5 230 8. Uruchamianie programów asemblerowych BREAKPOINT ENTRY MENU BR# Break
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
assembler?86? 6 272 W. Przykłady programów INT1CH.............................. L 0004 01B5 PROG
assembler?86? 6 52 4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 6 72 4. Język asemblerowy mikroprocesorów 8086/8088 72 4. Język asemblerowy mikropro
assembler?86? 6 172 6. Makrojęzyk asemblera MA SM dyrektywy pomocnicze PURGE, EXITM, LOCAL specjal

więcej podobnych podstron