- -+----            - --             +
                     | Chráněný režim (Protected Mode) |
                     +       ----                  ----+- -

                                  > Díl I. <

     Tak vás tu vítám. Tenhle miniseriál  by se měl zabývat alespoň  základním
vysvětlením pojmů jako  chráněný režim procesoru, DPMI,  VCPI, A20 apod...  Je
určen spíš začátečníkům a  mírně pokročilým  v této  oblasti, ostřílení  braši
v něm  těžko najdou  něco nového.  Praktické informace budou pojaty z hlediska
programování v Assembleru, teoretické informace jsou však na programovacím ja-
zyku nezávislé. To by bylo k úvodu.

                                    . . .

     Kdokoliv, kdo zkoušel programovat paměťově náročnější věc (např. grafické
viewery, editory nebo přehrávače různých hudebních modulů), došel časem k  ná-
zoru, že konvenční paměť nedostačuje. I pustil se tedy do zkoumání  literatury
k EMS a XMS. Udělal si jednoduché  nebo složitější rutinky pro práci s  pamětí
nad 1 MB a byl skoro spokojen. Problém  byl v tom, že v paměti musel být  vždy
nějaký ovladač, který tu či onu  paměť zpřístupňuje. Když nebyl - program  ne-
mohl fungovat. A případně ještě neustálé testování, která z pamětí je  vlastně
přístupná a využitelná. I tak se  náš zkroušený programátor pustil do  hledání
něčeho výhodnějšího. A doslechl se někde o chráněném režimu procesoru...

                                    . . .

     Na čem to  běží? Chráněný režim  je vlastní procesorům  286 a výše,  plně
využitelný je však až od procesoru 386  (to  je  jeden  z  důvodů,  proč  nyní
spousta programů  vyžaduje alespoň  onu 386ku).  Tento fakt  je dán  rozdílnou
architekturou obou procesorů. Teprve procesor 386 je totiž 32-bitový a obsahu-
je některé další důležité prvky, které zlepšují komfort při práci s  chráněným
režimem (o některých důvodech se zmíním jindy). [Z tohoto důvodu se i já  budu
zabývat chráněným režimem pro 386ky a výše. Některé příklady však poběží i  na
286kách - na to upozorním.]

     Další omezení se týká levnější varianty  procesoru 386 a to 386SX,  který
má vnější 16bitovou datovou sběrnici a 24bitovou adresovou sběrnici - adresová
sběrnice šíře 24 bitů dovoluje  připojit fyzickou paměť kapacity maximálně  16
MB. Procesory 386DX a výše  mají adresovou  sběrnici 32bitovou  a tudíž  mohou
adresovat až 4 GB RAM.

     A snad jen aby nevzniklo zbytečné nedorozumění - u nových her, u  kterých
recenzenti uváděli, že pracují v protected modu, byla nejmenší možná  velikost
paměti 4MB. Od té doby jsem slyšel od různých lidí "zaručené" zprávy, že chrá-
něný režim tuto velikost vyžaduje! NENÍ  TO PRAVDA! Pro jeho spuštění stačí  i
základní velikost nutná pro spuštění  klasického EXE souboru, který  vytvoříte
+ několik pár bajtů navíc -  ale rozhodně ne 4MB.  Tato situace se ovšem  týká
čistého kódu v assembleru, neboť  jiné překladače (kupříkladu Watcom C++  nebo
Borland Pascal) používají vlastní rutiny pro správu chráněného režimu a jejich
paměťové nároky jsou nejrůznější.

                                > Příklad <

     Pro ty, které nudí teoretická  stránka výkladu, jsem připravil  nejjedno-
dušší otestování, jestli se procesor už v chráněném režimu nachází - tato  si-
tuace může nastat v případě,  že používáte  nějaký manažer  EMS paměti  (např.
EMM386 nebo QEMM386).
     V těchto příkladech bych rád pokračoval i v příštích dílech - pokud to
bude možné.


     .286P          ; Tento program vyžaduje  alespoň procesor 286 - je  nutné
                    ; také nastavit instrukční  sadu  pro  podporu  chráněného
                    ; režimu

     . . .          ; Nějaký předcházející kód...

     Smsw AX        ; Speciální instrukce chr. režimu pro načtení stavu proce-
                    ; soru
     Test AX,1      ; Otestování prvního bitu - je již počítač v chráněném re-
                    ; žimu? (Jestli ano, 1. bit = 1)

     Jnz @@V_Chráněném_režimu

     . . .          ; Další kód...


                              > Slovník pojmů <

     Jelikož ne  všechno v  textu vysvětluji  úplně, zařazuji  na závěr  textu
slovník použitých pojmů. Přesto však  znalost některých předpokládám a  nebudu
se jim věnovat.

    • Chráněný režim (Protected mode) - speciální režim procesorů 80286 a výše,
dovolující využívat veškerou  volnou  paměť  fyzicky  dostupnou,  řídit  práva
jednotlivých programů při přístupu do  paměti, vytvářet tzv. virtuální  paměť,
apod. Při jeho používání je  možné a nutné  použít několika dalších  instrukcí
pro podporu chráněného režimu. O tom by měl být tento miniseriál.


P.S.:  Pokud  by se někomu zdálo, že jsem něco uvedl špatně nebo nedostatečně,
budu rád, když se mi ozve, a já svoji chybu napravím - jsem taky jenom člověk.


                                                                      Valor


            výheň