Ukážeme niekoľko procedúr na prácu v textovom režime. Ako inak, i teraz vám ponúkam DOWNLOAD. PROG3.ZIP (11.92KB)
Ak chcete pochopiť ako procedúry pracujú, musíte si ich inštrukciu za inštrukciou pozorne pozrieť. Cliknite si na Inštrukčný súbor procesora x86. Všimnite si, že niektoré procedúry začínajú krátkym opisom. V tomto opise nájdete vždy potrebné informácie na používanie procedúry, t.j. aké registre naplniť a čím, ďalej ak procedúra poskytuje nejaké výstupné hodnoty, tak aké. Čo sa
týka BIOSovských alebo DOSovských služieb odporúčam literatúru číslo [5], prípadne inú podobne zameranú knihu, alebo elektronický help. Bolo by asi vhodné uviesť aj nejaký ten príklad, ktorý vám viac ozrejmí používanie predchádzajúcich procedúr. Takže, nech sa páči, príklad.Vysvetlenie
Teraz si objasníme niektoré nové prvky, ktoré obsahuje predchádzajúci príklad. Program začína na návestí štart, najprv odstránime blikajúci kurzor a zmažeme obrazovku. Potom nasleduje časť, ktorá obsahuje cyklus. V assembleri často používaným cyklom je cyklus typu FOR
. Tento cyklus sa tiež môže realizovať pomocou podmienených skokov. Avšak v assembleri sa častejšie používa modifikácia tohto cyklu, kedy sa na začiatku register CX naplní počtom opakovaní cyklu. Po každom priechode cyklom sa hodnota registra CX dekrementuje o 1 a cyklus sa opakuje, pokiaľ je register CX rôzny od nuly. Pre vytvorenie tohto cyklu sa používa inštrukcia LOOP návestie.Na začiatku programu sa reg. ES naplní segmentovou adresou videoram. Ďalej vynulujeme offset, t.j. reg. DI a segmentový register
DS naplníme adresou, ktorú práve obsahuje segmentový register CS.Poznámka. - Segmentové registre (CS, DS, ES ...), stačí ak nastavíte na začiatku programu. Ak ste si istý, že sa ich obsah nebude počas behu programu meniť, nemusíte ich viac už nastavovať.
Skráti sa tým aj výsledný kód. Ostatne nechám to na vás, experimentujte.Prácou cyklu je zaplniť obrazovku textom "PC REVUE", pričom každý znak tohto slova bude inej farby. Pokračujeme výpisom textu na pozíciu (12,4), použijeme k tomu procedúru výpis. Nasledujúcim krokom je čakanie na stlačenie ľubovoľnej klávesy (viď inštrukcie MOV AX,0 a INT 16h). Po stlačení klávesy pokračujeme vykreslením štyroch rôznofarebných rámčekov. Tú
to procedúru určite využijete pri svojich vlastných pokusoch. Posledná časť programu vykoná zmazanie obrazovky a zmenu na režim 80x43 riadkov (EGA) alebo 80x50 riadkov (VGA). Nasleduje výpis textu a program opäť čaká na stlačenie ľubovoľnej klávesy. Program končí zmazaním obrazovky, zmenou textového režimu na mód 3 a zapnutím zobrazovania kurzora.