Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Služby operačného systému MS-DOS

Z aplikačného programu môžeme k vstupným a výstupným zariadeniam pristupovať prostredníctvom služieb operačného systému. Služby operačného systému sú funkcie, ktoré sú súčasťou operačného systému, ale sú tiež dostupné z užívateľských programov. V tejto kapitole sa zameriame na operačný systém MS-DOS, poskytujúci 85 služieb. Každá služba má číslo, ktoré sa pred jej vyvolaním musí uložiť do registra AH. Služby majú definované vstupné a výstupné parametre. Vstupné parametre sa pred vyvolaním služby uložia do požadovaných registrov. Podobne v registroch odovzdáva služba výstupné parametre. Služba sa vyvolá inštrukciou int 21h.

V tabuľke 9 sú uvedené najpoužívanejšie služby, s ktorými sa stretnete pri tvorbe aplikačných programov. Ostatné služby nájdete napr. v elektronickom manuáli TECH Help firmy Flambeaux Software.

Tabuľka 9
Služby operačného systému MS-DOS
Služba číslo Názov Poznámka Vstupné parametre Výstupné parametre
1 Vstup znaku z klávesnice Služba čaká na stlačenie znaku. Stlačený znak sa zároveň zobrazí na obrazovke. CTRL/BREAK spôsobí návrat do DOS-u.
AL – ASCII kód stlačeného znaku
2 Výstup znaku na obrazovku
DL – ASCII kód znaku AL – ASCII kód vypísaného znaku
9 Výpis reťazca na obrazovku Reťazec musí byť ukončený znakom $. Znak $ sa nevypíše. DS:DX – adresa reťazca AL – ASCII kód posledného znaku reťazca ('$' = 24h)
0Ah Vstup reťazca z klávesnice Číta znaky zadávané z klávesnice, kým sa nestlačí ENTER. Maximálnu dĺžku reťazca (vrátane ukončovacieho znaku ENTER) musíme pred volaním služby uložiť do bajtu na adrese DS:DX. Stlačené znaky sa uložia do pamäti od adresy DS:DX +2. Ako posledná sa do pamäti uloží hodnota 0Dh (ASCII kód riadiaceho znaku ENTER). Do bajtu na adrese DS:DX+1 sa uloží skutočná dĺžka reťazca (okrem ENTER). CTRL/BREAK je aktívny. DS:DX – adresa poľa, do ktorého sa uloží reťazec AL – ASCII kód posledného stlačeného znaku (0Dh)
4Ch Návrat do DOS-u


3Ch Vytvor súbor Vytvorí nový súbor, priradí mu popisovač (file handle) a otvorí ho pre čítanie a zápis. Ak súbor so zadaným menom už existuje a jeho atribút je read-only, dôjde ku chybe, v opačnom prípade sa existujúci súbor skráti na dĺžku 0. DS:DX – adresa mena súboru
CX – atribúty súboru
AX – popisovač
5Bh Vytvor súbor Ako 3Ch, s výnimkou: ak súbor už existuje, vyhlási chybu, ale neprepíše ho. DS:DX – adresa mena súboru
CX – atribúty súboru
AX – popisovač
3Dh Otvor súbor Otvorí súbor pre spôsob prístupu, ktorý určuje vstupný parameter AL, a pridelí súboru popisovač. Ukazovateľ pozície v súbore (file pointer) sa nastaví na 0. Súbor musí existovať. DS:DX – adresa mena súboru
AL – spôsob prístupu:
0 – čítanie,
1 – zápis,
2 – čítanie/zápis
AX – popisovač
3Eh Zatvor súbor
BX – popisovač
3Fh Čítaj zo súboru Číta súbor po bajtoch od pozície danej aktuálnou hodnotou ukazovateľa. BX – popisovač
CX – počet bajtov, ktoré sa majú načítať zo súboru
DS:DX – adresa poľa, do ktorého sa uložia načítané bajty
AX – počet skutočne prečítaných bajtov
40h Zápis do súboru Zapíše do súboru zadaný počet bajtov od pozície danej aktuálnou hodnotou ukazovateľa. BX – popisovač
CX – počet bajtov, ktoré sa majú zapísať do súboru
DS:DX – adresa poľa, z ktorého sa kopírujú bajty do súboru
AX – počet zapísaných bajtov
41h Vymaž súbor Vymaže súbor z disku. DS:DX – adresa mena súboru
42h Nastav ukazovateľ Presunie ukazovateľ v súbore relatívne voči pozícii danej hodnotou parametra AL. BX – popisovač
CX:DX – počet bajtov, o ktoré treba posunúť ukazovateľ
AL – posunúť:
0 – od začiatku súboru,
1 – od aktuálnej pozície ukazovateľa,
2 – od konca súboru
DX:AX – nová pozícia ukazovateľa vzhľadom na začiatok súboru

Postup pri spracovaní súborov na disku je rovnaký ako v Pascale: ak chceme zo súboru čítať, musíme ho najprv otvoriť; ak chceme do súboru zapisovať, musíme buď vytvoriť nový súbor, alebo otvoriť existujúci súbor. Po ukončení práce so súborom ho musíme zatvoriť. Pri prvej operácii so súborom – vytvorení nového alebo otvorení existujúceho súboru – musíme ako vstupný parameter odovzdať službe DOS-u meno súboru. Služba pridelí súboru 16-bitové identifikačné číslo – popisovač (file handle). Musíme si ho zapamätať, pretože pri ďalších operáciách (čítaní, zápise, zatvorení) identifikujeme súbor pomocou tohto čísla, a nie jeho menom. Popisovač je analógiou pascalovskej prístupovej premennej k súboru.

Meno súboru je tzv. ASCIIZ reťazec, t.j. reťazec ukončený nulou. Meno súboru môže obsahovať špecifikáciu disku a cestu k súboru, napr.

File1 DB ’MOJ.ASM’,0
File2 DB ’C:\USERS\JANOSIK\TEST.TXT’,0

Ďalším parametrom požadovaným pri vytvorení nového súboru sú atribúty súboru, ktoré sa odovzdávajú službe v registri CX. Atribúty súboru popisuje najnižších 6 bitov registra CX. Význam jednotlivých bitov je nasledujúci:

bit 0: 1 = súbor len pre čítanie (read-only)

bit 1: 1 = skrytý súbor (hidden)

bit 2: 1 = systémový súbor (system)

bit 3: 1 = nie je to súbor, ale názov média (volume label)

bit 4: 1 = nie je to súbor, ale adresár (directory)

bit 5: 1 = súbor sa bude archivovať (archive)

Pre obyčajný súbor uložíme do CX nulu.

Čítanie a zápis do súboru sa uskutočňuje cez buffer v pamäti. Buffer obsahuje údaje, ktoré sa načítali zo súboru alebo ktoré sa majú do súboru zapísať. Požadovaný počet prenášaných bajtov sa zadáva príslušnej službe ako vstupný parameter v registri CX. Skutočný počet prečítaných (zapísaných) bajtov vráti služba ako výstupný parameter v registri AX. Ak je pri čítaní AX < CX, znamená to, že sa dosiahol koniec súboru skôr, ako sa načítal požadovaný počet bajtov. Pri zápise do súboru to zase znamená, že disk je plný. Čítanie a zápis do súboru sa uskutočňuje od aktuálnej pozície interného ukazovateľa v súbore (file pointer). Po každom prečítanom (zapísanom) bajte sa pozícia ukazovateľa aktualizuje.

Pozíciu ukazovateľa môžeme nastaviť aj priamo bez čítania alebo zápisu, a to službou 42h. Služba je popísaná v tab. 9, tu len spomenieme, že ak službu zavoláme s parametrami AL = 2, CX = 0, DX = 0, presunie sa ukazovateľ na koniec súboru a v DX:AX sa vráti dĺžka súboru. Ak budú vstupné parametre AL = 0, CX = 0, DX = 0, ukazovateľ sa presunie na začiatok súboru.

Všetky služby pre prácu so súbormi používajú príznakový bit CF ako výstupný parameter, ktorý informuje volajúci program o tom, či sa služba vykonala bez chyby (CF sa nastaví na 0), alebo pri požadovanej operácii so súborom došlo ku chybe (CF sa nastaví na 1). Ak nastala chyba, obsahuje register AX kód chyby. Výstupné parametre v tab. 9 platia pre bezchybný priebeh operácie.

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Moduly | Služby operačného systému Windows 95/98/NT/XP
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 18.11.2011.