Ïåðåéòè íà ãëàâíóþ   
  helloworld.ru - äîêóìåíòàöèÿ è êíèãè ïî ïðîãðàììèðîâàíèþ  
helloworld.ru - äîêóìåíòàöèÿ è êíèãè ïî ïðîãðàììèðîâàíèþ
    ãëàâíàÿ     õîñòèíã    
Ïîèñê ïî ñàéòó:  
Ñìîòðèòå òàêæå
ßçûêè ïðîãðàììèðîâàíèÿ
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Èíòåðíåò-òåõíîëîãèè
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
ïðîòîêîëû TCP/IP
Apache

Web-äèçàéí
HTML
Äèçàéí
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Ïðîãðàììèðîâàíèå èãð
DirectDraw
DirectSound
Direct3D
OpenGL
3D-ãðàôèêà
Ãðàôèêà ïîä DOS

Àëãîðèòìû
×èñëåííûå ìåòîäû
Îáðàáîòêà äàííûõ

Ñèñ. ïðîãðàììèðîâàíèå
Äðàéâåðû

Áàçû äàííûõ
MySQL
SQL

Äðóãîå

Õîñòèíã


Äðóçüÿ
demaker.ru
Ðåêëàìà

Ëó÷øèé õîñòèíã. Àðåíäà ñåðâåðîâ




helloworld.ru

Bûâoä ía òepìèíaë

                  1. Óïpaâëeíèe âûâoäoì ía òepìèíaë.

   Bce âèäeocècòeìû  ècïoëüçóþò  áóôepa,  â êoòopûe oòoápaæaþòcÿ äaííûe
äëÿ èçoápaæeíèÿ ía ýêpaíe. Ýêpaí ïepèoäè÷ecêè oáíoâëÿeòcÿ cêaíèpoâaíèeì
ýòèx  äaííûx.  Paçìep  è pacïoëoæeíèe ýòèx áóôepoâ ìeíÿeòcÿ c cècòeìoé,
peæèìoì ýêpaía,  a òaêæe êoëè÷ecòâoì çapaíee oòâeäeííoé ïaìÿòè. Koãäa â
áóôepe  xpaíèòcÿ  íecêoëüêo  oápaçoâ ýêpaía,  òo êaæäûé oòäeëüíûé oápaç
íaçûâaþò äècïëeéíoé còpaíèöeé. Hèæe ïpèâeäeía êopoòêaÿ câoäêa:

Moíoxpoìíûé aäaïòop

   Moíoxpoìíûé aäaïòop èìeeò 4K áaéò ïaìÿòè ía ïëaòe,  ía÷èíaÿ c aäpeca
B0000H (ò.e.  B000:0000). Ýòoé ïaìÿòè xâaòaeò òoëüêo äëÿ xpaíeíèÿ oäíoé
80-cèìâoëüíoé còpaíèöû òeêcòa.

Öâeòíoé ãpaôè÷ecêèé aäaïòop.

   Öâeòíoé ãpaôè÷ecêèé aäaïòop èìeeò 16K áaéò ïaìÿòè ía ïëaòe,  ía÷èíaÿ
c  aäpeca  ïaìÿòè  B8000H.  Ýòoão  äocòaòo÷ío  äëÿ  oòoápaæeíèÿ  oäíoão
ãpaôè÷ecêoão ýêpaía,  áeç còpaíèö,  èëè oò ÷eòûpex  äo  âocüìè  ýêpaíoâ
òeêcòa, â çaâècèìocòè oò ÷ècëa cèìâoëoâ â còpoêe - 40 èëè 80.

EGA

   EGA ìoæeò  áûòü  cíaáæeí  64K,  128K  èëè  256K  ïaìÿòè.  Kpoìe  èc-
ïoëüçoâaíèÿ â êa÷ecòâe  âèäeoáóôepa  ýòa  ïaìÿòü  ìoæeò  òaêæe  xpaíèòü
áèòoâûe  oïècaíèÿ  âïëoòü  äo  1024  cèìâoëoâ.  Còapòoâûé  aäpec áóôepa
äècïëeÿ ïpoãpaììèpóeì,  ïoýòoìó áóôep ía÷èíaeòcÿ  c  aäpeca  A000H  äëÿ
óëó÷øeííûx ãpaôè÷ecêèx peæèìoâ,  è c B000H è B800H äëÿ coâìecòèìocòè co
còaíäapòíûìè ìoíox- poìíûì è  öâeòíûì  ãpaôè÷ecêèì  peæèìaìè.  B  áoëü-
øèícòâe cëó÷aeâ EGA çaíèìaeò äâa ceãìeíòa c aäpecaìè oò A000H äo BFFFH,
äaæe êoãäa èìeeòcÿ 256K ïaìÿòè.  Ýòo âoçìoæío,  ïocêoëüêó  â  íeêoòopûx
peæèìax  äâa èëè áoëee áaéòoâ ïaìÿòè äècïëeÿ c÷èòûâaþòcÿ èç oäíèx è òex
æe aäpecoâ. Äocòóïíoe ÷ècëo còpaíèö çaâècèò êaê oò peæèìa ýêpaía, òaê è
oò  êoëè÷ecòâa  èìeþùeécÿ ïaìÿòè.  Bcëeäcòâèe câoeé cëoæíocòè EGA èìeeò
ÏÇÓ ía 16K áaéò,  êoòopoe  çaìeíÿeò  è  pacøèpÿeò  ïpoöeäópû  paáoòû  c
òepìèíaëoì BIOS. Ha÷aëo oáëacòè ÏÇÓ - aäpec C000:0000.
   B òeêcòoâûx peæèìax áóôepa ía÷èíaþòcÿ c äaííûx  äëÿ  âepxíeé  còpoêè
ýêpaía,  ía÷èíaÿ  c  ëeâoão  óãëa.  Äaëüíeéøèe  äaííûe  ïepeío- cÿòcÿ c
ïpaâoão êoíöa oäíoé còpoêè ía ëeâûé êoíeö cëeäóþùeé,  êaê  áóäòo  ýêpaí
ïpeäcòaâëÿeòcÿ oäíoé áoëüøoé còpoêoé - è c òo÷êè çpeíèÿ âèäeoáóôepa òaê
oío è ecòü. Oäíaêo â ãpaôè÷ecêèx peæèìax áóôep ìoæeò áûòü paçäeëeí ía 2
èëè 4 ÷acòè.  Ó öâeòíoão ãpaôè÷ec- êoão aäaïòopa paçëè÷íûe ÷acòè áóôepa
coäepæaò èíôopìaöèþ,  oòíocÿùóþcÿ ê êaæäoé âòopoé èëè êaæäoé  ÷eòâepòoé
ëèíèè  òo÷eê ía ýêpaíe.  Ó EGA êaæäaÿ ÷acòü áóôepa coäepæèò oäèí áèò èç
äâóx èëè ÷eòûpex, êoòopûe oïpeäeëÿþò öâeò äaííoé òo÷êè ýêpaía.
   Ïpè âûâoäe  òeêcòa  paçëè÷íûe  âèäeocècòeìû paáoòaþò oäèíaêoâo.  Äëÿ
ýêpaía oòâoäèòcÿ 4000 áaéòoâ,  òaê ÷òo ía êaæäóþ èç 2000 ïoçèöèé ýêpaía
ïpèxoäèòcÿ  2 áaéòa (25 còpoê * 80 cèìâoëoâ).  Ïepâûé áaéò coäepæèò êoä
ASCII.  Aïïapaòópa äècïëeÿ ïpeoápaçóeò íoìep êoäa ASCII â  câÿçaííûé  c
íèì  cèìâoë  è  ïocûëaeò  eão  ía  ýêpaí.  Bòopoé áaéò (áaéò aòpèáóòoâ)
coäepæèò èíôopìaöèþ o òoì,  êaê äoëæeí áûòü âûâeäeí äaííûé cèìâoë.  Äëÿ
ìoíoxpoìíoão   äècïëeÿ  oí  óc-  òaíaâëèâaeò  áóäeò  ëè  äaííûé  cèìâoë
ïoä÷epêíóò,  âûäeëeí ÿpêocòüþ èëè íeãaòèâoì,  èëè ècïoëüçóeò êoìáèíaöèþ
ýòèx  aòpèáóòoâ.  B  öâeòo-  âûx  cècòeìax áaéò aòpèáóòoâ ócòaíaâëèâaeò
ocíoâíoé è ôoíoâûé öâeòa cèìâoëa.  B ëþáoì cëó÷ae Baøa ïpoãpaììa  ìoæeò

                                     - 2 -
ïècaòü  äaííûe  ïpÿìo  â  áóôep  òepìèíaëa,  ÷òo  çía÷èòeëüío  ïoâûøaeò
cêopocòü âûâoäa ía ýêpaí.
   Bce cècòeìû,   êpoìe   ìoíoxpoìíoé,   ïpeäocòaâëÿþò   íaáop  öâeòíûx
ãpaôè÷ecêèx peæèìoâ,  êoòopûe oòëè÷aþòcÿ êaê paçpeøeíèeì,  òaê è ÷ècëoì
oäíoâpeìeíío  âûâoäèìûx  öâeòoâ.  EGA  ìoãóò oäíoâpe- ìeíío âûâoäèòü 16
öâeòoâ,  ïpè÷eì EGA ìoæeò âûáèpaòü ýòè 16  èç  íaáopa  64  öâeòoâ.  Ïpè
ècïoëüçoâaíèè 16 öâeòoâ êaæäaÿ òo÷êa ýêpaía òpeáóeò ÷eòûpex áèò ïaìÿòè,
ïocêoëüêó 4  áèòa  ìoãóò  xpaíèòü  ÷ècëa  oò  0  äo  15.  Ïo  aíaëoãèè,
÷eòûpexöâeòíaÿ  ãpaôèêa  òpeáóeò  òoëüêo  2 áèòa ía òo÷êó.  Äâóxöâeòíaÿ
ãpaôèêa  ìoæeò  óïaêoâaòü  ïpeäcòaâëeíèe  âocüìè  òo÷eê  â  oäèí   áaéò
âèäeoáóôepa.  Koëè÷ecòâo ïaìÿòè,  òpeáóe- ìoe äëÿ äaííoão peæèìa ýêpaía
ìoæeò áûòü ëeãêo âû÷ècëeío,  ecëè èçâecòío êoëè÷ecòâo âûâoäèìûx â  ýòoì
peæèìe  òo÷eê  è êoëè÷ecòâo áèò,  íeoáxoäèìoe äëÿ oïècaíèÿ oäíoé òo÷êè.
Teêcò  ëeãêo  êoìáèíèpóeòcÿ  c  ãpaôèêoé  (BIOS   pècóeò   cèìâoëû   ía
ãpaôè÷ecêoì ýêpaíe) è Bû ìoæeòe coçäaâaòü câoè cïeöèaëüíûe cèìâoëû.

             2. Ïpoãpaììèpoâaíèe êoíòpoëëepa äècïëeÿ 6845.

   Bce âèäeocècòeìû   còpoÿòcÿ  âoêpóã  ìèêpocxeìû  êoíòpoëëepa  âèäeo-
òepìèíaëa Motorola 6845 (EGA ècïoëüçóeò çaêaçíóþ ìèêpocxeìó, ocíoâaííóþ
ía  6845).  Mèêpocxeìa  ècïoëüçóeòcÿ âo ìíoãoì aíaëoãè÷ío â ìoíoxpoìíoì
aäaïòope,  â öâeòíoì aäaïòope;  ío EGA íe íacòoëüêo coâìecòèì è ïo ýòoé
ïpè÷èíe   ìû   peêoìeíäóeì   Baì   èçáeãaòü   ïpÿìoão  ïpoãpaììèpoâaíèÿ
ìèêpocxeìû,  êoãäa BIOS ìoæeò âûïoëíèòü paáoòó ça  Bac.  Ãoâopÿ  oáùèìè
cëoâaìè,  ìèêpocxeìa 6845 ócòaíaâëèâaeò âèäeoäècïëeé â oäèí èç íecêoëü-
êèx aëôaâèòíoöèôpoâûx èëè ãpaôè÷ecêèx peæèìoâ.  Oía âûïoëíÿeò  ocíoâíóþ
paáoòó  ïo  èíòepïpeòa-  öèè  íoìepoâ  êoäoâ  ASCII è ïoècêó äaííûx äëÿ
âûâoäa  cooòâeòcòâóþùèx  cèìâoëoâ  â  ìèêpocxeìe  ÏÇÓ   (a   èíoãäa   â
oïepaòèâíoé   ïaìÿòè).   Oía  äeêoäèpóeò  çía÷eíèÿ  aòpèáóòoâ  öâeòa  è
cooòâeòcòâeíío  ócòaíaâëèâaeò  ýêpaí.  Oía  òaêæe  coçäaeò   êópcop   è
óïpaâëÿeò  èì.  B apxèòeêòópe EGA ÷acòü ýòèx ôóíêöèé pacïpeäeëeía ìeæäó
äpóãèìè ìèêpocxe- ìaìè.
   Mèêpocxeìa 6845 èìeeò 18 óïpaâëÿþùèx peãècòpoâ, ïpoíóìepoâaííûx oò 0
äo 17.  Ïepâûe 10 peãècòpoâ  ôèêcèpóþò  ãopèçoíòaëüíûe  è  âepòèêaëüíûe
ïapaìeòpû   äècïëeÿ.   Ýòè   peãècòpû,  êaê  ïpaâèëo,  íeèíòepecíû  äëÿ
ïpoãpaììècòoâ,  ïocêoëüêó oíè aâòoìaòè÷ecêè  ócòaíaâëèâaþòcÿ  BIOS  ïpè
èçìeíeíèè   peæèìa  ýêpaía.  He  coâeòóeì  ýêcïepèìeíòèpoâaòü  c  ýòèìè
peãècòpaìè,  ïocêoëüêó  èìeeòcÿ  âoçìoæíocòü  ècïop-   òèòü   òepìèíaë.
Peãècòpû èìeþò paçìep 8 áèò, ío íeêoòopûe câÿçaíû â ïapû, ÷òoáû xpaíèòü
16-áèòíûe  âeëè÷èíû.  Ïapû  #10-11  è  #14-15  ócòaíaâëèâaþò  ôopìó   è
ìecòoïoëoæeíèe êópcopa. Ïapa #12-13 óïpaâëÿeò còpaíèöaìè äècïëeÿ . Ïapa
#16-17 cooáùaeò ïoçèöèþ câeòoâoão ïepa.  Áîëüøèícòâo peãècòpoâ äocòóïío
òoëüêo  äëÿ  çaïècè;  òoëüêo  peãècòp  aäpeca  êópcopa ìoæío è ÷èòaòü è
ïècaòü,  a peãècòp câeòoâoão ïepa ïpeäíaçía÷eí òoëüêo äëÿ  ÷òeíèÿ.  EGA
èìeeò 6 äoáaâo÷íûx peãècòpoâ,  êoòopûe câÿçaíû c òex- íè÷ecêèìè äeòaëÿ-
ìè.  Peãècòp  20  íaèáoëee  èíòepeceí;  oí   oïpeäeëÿeò   êaêaÿ   ëèíèÿ
cêaíèpoâaíèÿ â còpoêe cèìâoëa ècïoëüçóeòcÿ äëÿ ïoä÷epêèâaíèÿ.
   Äocòóï êo âceì 18 peãècòpaì ocóùecòâëÿeòcÿ ÷epeç oäèí è òoò æe ïopò,
aäpec  êoòopoão äëÿ ìoíoxpoìíoão aäaïòopa paâeí 3B5H.  Ýòoò aäpec paâeí
3D5H äëÿ öâeòíoão aäaïòopa. EGA ècïoëüçóeò oäèí èç ýòèx äâóx aäpecoâ, â
çaâècèìocòè  oò  òoão,  ïpècoeäèíeí  ëè  ê íeìó öâeòíoé èëè ìoíoxpoìíûé
ìoíèòop.  Äëÿ çaïècè â peãècòp ìoíoxpoìíoão  aäaïòopa  íaäo  cía÷aëa  â
peãècòp aäpeca, pacïoëoæeííûé â ïopòe 3B4H (3D4H äëÿ öâeòíoão), ïocëaòü
íoìep òpeáóeìoão peãècòpa.  Toãäa cëeäóþùèé áaéò,  ïocëaííûé â  ïopò  c
aäpecoì   3B5H  áóäeò  çaïècaí  â  ýòoò  peãècòp.  Ïocêoëüêó  peãècòpû,
èíòepecíûe äëÿ ïpoãpaììècòa,  ècïoëüçóþòcÿ ïoïapío,  òo íaäo cía÷a-  ëa
çaïècaòü â aäpecíûé peãècòp, ïoòoì â ïepâûé peãècòp ïapû, ïoòoì cíoâa â
aäpecíûé peãècòp è,  íaêoíeö,  âo âòopoé peãècòp ïapû. Ïocêoëüêó aäpeca
ïopòoâ cìeæíûe,  òo ëeã÷e âceão aäpecoâaòü èx, ècïoëüçóÿ èícòpóêöèè INC

                                     - 3 -
è DEC, êaê â cëeäóþùeì ïpèìepe:

;---çaïècü â peãècòpû 11 è 12 ìèêpocxeìû 6845 (äaííûe â BX)
   ;---âûáèpaeì peãècòp ìëaäøeão áaéòa
      MOV  DX,3B4H        ;ïopò aäpecíoão peãècòpa
      MOV  AL,11          ;íoìep peãècòpa äëÿ ìëaäøeão áaéòa
      OUT  DX,AL          ;ïocûëaeì íoìep peãècòpa
   ;---ïocûëaeì áaéò
      INC  DX             ;óâeëè÷èâaeì aäpec ïopòa
      MOV  AL,BL          ;áepeì ìëaäøèé áaéò
      OUT  DX,AL          ;ïocûëaeì eão â peãècòp 11
   ;---âûáèpaeì peãècòp còapøeão áaéòa
      DEC  DX             ;âoccòaíaâëèâaeì aäpec ïopòa
      MOV  AL,12          ;íoìep peãècòpa äëÿ còapøeão áaéòa
      OUT  DX,AL          ;ïocûëaeì íoìep peãècòpa
   ;---ïocûëaeì áaéò
      INC  DX             ;óâeëè÷èâaeì aäpec ïopòa
      MOV  AL,BH          ;áepeì còapøèé áaéò
      OUT  DX,AL          ;ïocûëaeì eão â peãècòp 12

   Ó ìoíoxpoìíoão è öâeòíoão aäaïòopoâ èìeþòcÿ eùe òpè  ïopòa,  êoòopûe
âaæíû  äëÿ  ïpoãpaììècòoâ.  Oíè  èìeþò  aäpeca  3B8H,  3B9H  è 3BAH äëÿ
ìoíoxpoìíoão è 3D8H,  3D9H è 3DAH - äëÿ  öâeòíoão  aäaïòo-  pa.  Ïepâûé
ócòaíaâëèâaeò  peæèì  ýêpaía,  âòopoé  - câÿçaí â ocíoâíoì c ócòaíoâêoé
öâeòoâ ýêpaía, a òpeòèé cooáùaeò ïoëeçíóþ èíôopìaöèþ o còaòóce äècïëeÿ.
   EGA pacïpeäeëÿeò ýòè ôóíêöèè ìeæäó ìèêpocxeìoé êoíòpoëëepa aòpèáóòoâ
(aäpec ïopòa 3C0H) è äâóìÿ  ìèêpocxeìaìè  êoíòpoëëepa  ãpaôèêè  (aäpeca
ïopòoâ  3CCH-3CFH).  Koíòpoëëep aòpèáóòoâ coäepæèò 16 peãècòpoâ ïaëeòòû
EGA,  ïpoíóìepoâaííûx oò 00 äo 0FH.  Ýòè  pe-  ãècòpû  ìoãóò  coäepæaòü
6-áèòíûe  êoäû öâeòoâ,  êoãäa EGA câÿçaí c óëó÷øeííûì öâeòíûì äècïëeeì,
ïoýòoìó ìoãóò áûòü ècïoëüçoâaíû ëþáûe  16  öâeòoâ  èç  íaáopa  64-x.

                 3. Ócòaíoâêa/ïpoâepêa peæèìa äècïëeÿ.

   Moíoxpoìíûé aäaïòop  ïoääepæèâaeò  oäèí  peæèì  òepìèíaëa,   öâeòíoé
ãpaôè÷ecêèé - ceìü, a EGA - äâeíaäöaòü.
   EGA paçpeøaeò èìeòü 8 còpaíèö â peæèìe 7 - còaíäapòíoì ìoíox- poìíoì
òeêcòoâoì  peæèìe.  Peæèìû  0-6 ïoëíocòüþ coâìecòèìû,  ècïoëüçóÿ ïaìÿòü
oäèíaêoâûì oápaçoì.  Ïpè ócëoâèè,  ÷òo ïepeêëþ÷aòeëè ía EGA ócòaíoâëeíû
äëÿ  paáoòû  c  óëó÷øeííûì  öâeòíûì  äècïëeeì  ôèpìû IBM,  òpaäèöèoííûe
òeêcòoâûe peæèìû âûâoäÿòcÿ c âûcoêèì paçpeøe- íèeì,  ècïoëüçóÿ  pècóíoê
cèìâoëoâ, cocòoÿùèé èç 8*14 òo÷eê, a íe oáû÷íûe 8*8.
   BIOS xpaíèò oäíoáaéòíóþ ïepeìeííóþ ïo aäpecó  0040:0049,  â  êoòopoé
coäepæèòcÿ  íoìep òeêóùeão peæèìa.  Áaéò ïo aäpecó 0040:004A äaeò ÷ècëo
cèìâoëoâ â còpoêe â òeêcòoâoì peæèìe.

   Cpeäíèé ópoâeíü.

   Ôóíêöèÿ 0 ïpepûâaíèÿ 10H ócòaíaâëèâaeò peæèì äècïëeÿ.  B  AL  äoëæeí
íaxoäèòücÿ íoìep peæèìa oò 0 äo A. ×òoáû ócòaíoâèòü öâeòíoé ãpaôè÷ecêèé
peæèì cpeäíeão paçpeøeíèÿ íaäo:

   MOV  AH,0       ;íoìep ôóíêöèè
   MOV  AL,4       ;íoìep òpeáóeìoão peæèìa
   INT  10H        ;ócòaíaâëèâaeì peæèì

Äëÿ oïpeäeëeíèÿ òeêóùeão ãpaôè÷ecêoão peæèìa íaäo ècïoëüçoâaòü  ôóíêöèþ
F  ïpepûâaíèÿ 10H.  Ïpepûâaíèe âoçâpaùaeò íoìep peæèìa â AL.  Oío òaêæe
äaeò íoìep òeêóùeé còpaíèöû äècïëeÿ â BH è ÷ècëo cèìâoëoâ  â  còpoêe  â

                                     - 4 -
AH.

   MOV  AH,0FH          ;íoìep ôóíêöèè
   INT  10H             ;ïoëó÷eíèe èíôopìaöèè o peæèìe äècïëeÿ
   MOV  MODE_NUMBER,AL  ;íoìep peæèìa â AL
   MOV  NUMBER_COLS,AH  ;÷ècëo cèìâoëoâ â còpoêe â AH
   MOV  CURRENT_PAGE,BH ;íoìep òeêóùeé còpaíèöû â BH

   MS DOS  oáecïe÷èâaeò  òaêæe  Esc-ïocëeäoâaòeëüíocòè  äëÿ ócòaíoâêè è
cápoca peæèìoâ äècïëeÿ. Äëÿ ýòoão íeoáxoäèìo, ÷òoáû Bû ïpeäâa- pèòeëüío
çaãpóçèëè äpaéâep ANSI.SYS,  êaê oáúÿcíeío â ïpèëoæeíèè Ä.  Óïpaâëÿþùaÿ
còpoêa èìeeò âèä ESC [=#h,  ãäe # - íoìep  peæèìa,  óêaçaííûé  êaê  êoä
ASCII, a ESC oáoçía÷aeò oäèí cèìâoë c êoäoì ASCII 27. Haïpèìep:

;---â ceãìeíòe äaííûx
MED_RES_COLOR  DB   27, '[=4h$'
MED_RES_B&W    DB   27, '[=5h$'
;---ócòaíoâêa öâeòíoão ãpaôè÷ecêoão peæèìa cpeäíeão paçpeøeíèÿ
   MOV  AH,9             ;íoìep ôóíêöèè âûâoäa còpoêè
   LEA  DX,MED_RES_COLOR ;DS:DX äoëæíû óêaçûâaòü ía còpoêó
   INT  21H              ;èçìeíeíèe peæèìa

   Hèçêèé ópoâeíü.

                4. Ócòaíoâêa aòpèáóòoâ/öâeòoâ cèìâoëoâ.

   Koãäa äècïëeé  ócòaíoâëeí â òeêcòoâûé peæèì â ëþáoé èç âèäeo cècòeì,
òo êaæäoé ïoçèöèè cèìâoëa ía ýêpaíe oòâoäèòcÿ äâa áaéòa ïaìÿòè.  Ïepâûé
áaéò  coäepæèò  íoìep  êoäa  ASCII  êoäa  cèìâoëa,  a âòopoé - aòpèáóòû
cèìâoëa.  Öâeòíoé aäaïòop è ìoãóò âûâoäèòü â öâeòe, êaê caì cèìâoë, òaê
è âcþ oáëacòü,  oòâeäeííóþ äaííoìó cèìâoëó (ôoíoâûé öâeò).  Moíoxpoìíûé
aäaïòop  oãpaíè÷eí  òoëüêo  ÷epíûì  è  áeëûì  öâeòoì,   ío   oí   ìoæeò
ãeíepèpoâaòü   ïoä÷epêíóòûe  cèìâoëû,  ÷eão  íe  ìoãóò  äeëaòü  öâeòíoé
aäaïòop.  Bce òpè cècòeìû ìoãóò âûäaâaòü ìèãaþùèe cèìâoëû è  íeãaòèâíoe
èçoápaæeíèe.  Bce  òpè  cècòeìû ìoãóò òaêæe coçäaâaòü cèìâoëû c âûcoêoé
èíòeícèâíocòüþ,  xoòÿ äëÿ öâeòíoão  aäaïòopa  ïoâûøeííaÿ  èíòeícèâíocòü
cèìâoëa  ía caìoì äeëe ïpèâoäèò ê äpóãoìó öâeòó (âoceìü ocíoâíûx öâeòoâ
èìeþò âepcèè c ïoâûøeííoé èíòeícèâíocòüþ,  ÷òo äaeò íaáop  16  öâeòoâ).
EGA  óìeeò  äeëaòü  âce,  ÷òo  ìoãóò  âce  oc- òaëüíûe cècòeìû è ìíoãoe
äpóãoe. B ÷acòíocòè, ía óëó÷øeííoì äècïëee oí ìoæeò âûâoäèòü ïoä÷epêíó-
òûe  öâeòíûe cèìâoëû,  ïocêoëüêó ìaòpèöa èçoápaæeíèÿ cèìâoëoâ 8*14 äaeò
òaêóþ âoçìoæíocòü.

   Aòpèáóòû öâeòa:
   Äëÿ óêaçaíèÿ  öâeòoâ ýêpaía oäíè è òe æe íoìepa êoäoâ ècïoëüçóþòcÿ â
Áeécèêe è ïpepûâaíèÿìè oïepaöèoííoé cècòeìû. Oíè òaêèe:

          0 - ÷epíûé                  8 - cepûé
          1 - cèíèé                   9 - ãoëóáoé
          2 - çeëeíûé                10 - câeòëoçeëeíûé
          3 - öèaí                   11 - câeòëûé öèaí
          4 - êpacíûé                12 - câeòëoêpacíûé
          5 - ìaãeíòa                13 - câeòëaÿ ìaãeíòa
          6 - êopè÷íeâûé             14 - æeëòûé
          7 - áeëûé                  15 - ÿpêoáeëûé

Mëaäøèe ÷eòûpe  áèòa  áaéòa aòpèáóòoâ ócòaíaâëèâaþò öâeò caìoão cèìâoëa
(áèò  3   âêëþ÷aeò   âûcoêóþ   èíòeícèâíocòü).   Cëeäóþùèe   òpè   áèòa
ócòaíaâëèâaþò  ôoí  cèìâoëa.  È ïpè oáû÷íûx oácòoÿòeëücòâax còapøèé áèò

                                     - 5 -
âêëþ÷aeò è âûêëþ÷aeò ìèãaíèe. Taêèì oápaçoì:

êoãäa áèò 0 = 1, cèíèé âêëþ÷aeòcÿ â ocíoâíoé öâeò
          1 = 1, çeëeíûé âêëþ÷aeòcÿ â ocíoâíoé öâeò
          2 = 1, êpacíûé âêëþ÷aeòcÿ â ocíoâíoé öâeò
          3 = 1, cèìâoë âûâoäèòcÿ c âûcoêoé èíòeícèâíocòüþ
          4 = 1, cèíèé âêëþ÷aeòcÿ â ôoíoâûé öâeò
          5 = 1, çeëeíûé âêëþ÷aeòcÿ â ôoíoâûé öâeò
          6 = 1, êpacíûé âêëþ÷aeòcÿ â ôoíoâûé öâeò
          7 = 1, cèìâoëû ìèãaþò

   Áèòû 0-2  è  4-6  coäepæaò  oäíè è òe æe êoìïoíeíòû öâeòoâ äëÿ caìèx
cèìâoëoâ  è  ôoía.  Ýòè  òpexáèòíûe  ãpóïïû   ïoçâoëÿþò   8   âoçìoæíûx
êoìáèíaöèé.  Koãäa âêëþ÷aeòcÿ áèò âûcoêoé èíòeícèâíocòè, òo äoáaâëÿþòcÿ
eùe 8 öâeòoâ. Øecòíaäöaòü âoçìoæíûx öâeòoâ ïoëó÷aþòcÿ èç ýòèx ócòaíoâoê
áèòoâ cëeäóþùèì oápaçoì:
   Kpacíûé  Çeëeíûé  Cèíèé  Hèçêaÿ èíòeícèâíocòü  Bûcoêaÿ

      0        0       0        ÷epíûé            cepûé
      0        0       1        cèíèé             câeòëocèíèé
      0        1       0        çeëeíûé           câeòëoçeëeíûé
      0        1       1        öèaí              câeòëûé öèaí
      1        0       0        êpacíûé           câeòëoêpacíûé
      1        0       1        ìaãeíòa           câeòëaÿ ìaãeíòa
      1        1       0        êopè÷íeâûé        æeëòûé
      1        1       1        áeëûé             ÿpêoáeëûé

Moæío èìeòü 16 öâeòoâ è äëÿ ôoíoâoão öâeòa.  B ýòoì cëó÷ae áèò 7 äoëæeí
cëóæèòü óêaçaòeëeì âûcoêoé èíòeícèâíocòè  äëÿ  ôoía,  a  íe  óêaçaòeëeì
ìèãaíèÿ  cèìâoëoâ.  Äëÿ  öâeòíoão  aäaïòopa íaäo èçìeíèòü áèò 5 ïopòa c
aäpecoì 3D8H â 0,  êaê ïoêaçaío  íèæe.  Ïocêoëüêó  ýòoò  ïopò  äocòóïeí
òoëüêo  äëÿ çaïècè,  òo âce ocòaëüíûe áèòû äoëæíû áûòü ïepeócòaíoâëeíû.
Ýòa âoçìoæíocòü äocòóïía òoëüêo â äâóx cëó÷aÿx:  òeêcòoâûx peæèìoâ c 40
è  c  80  cèìâoëaìè â còpoêe.  Äëÿ peæèìa c 80 cèìâoëaìè íaäo ïocëaòü â
ïopò ÷ècëo 9,  a äëÿ peæèìa c 40 cèìâoëaìè -  ÷ècëo  8.  ×òoáû  âepíóòü
ìèãaíèe íaäo äoáaâèòü ê oáoèì ýòèì çía÷eíèÿì 32.
   EGA òaêæe ìoæeò paçpeøaòü/çaïpeùaòü  ìèãaíèe,  xoòÿ  â  ýòoì  cëó÷ae
aäpec  ïopòa  3C0H.  Cía÷aë  íaäo  ïpo÷èòaòü ïopò 3DAH,  ÷òoáû ïoëó÷èòü
äocòóï ê aäpecíoìó peãècòpó â 3C0H.  çaòeì íaäo  ïocëaòü  â  3C0H  10H,
÷òoáû óêaçaòü cooòâeòcòâóþùèé peãècòp.  Haêoíeö, íaäo ïocëaòü äaííûe ïo
òoìó æe aäpecó.  Ïocêoëüêó ýòoò peãècòp òoëüêo äëÿ çaïècè,  òo âce áèòû
äoëæíû áûòü ïpaâèëüío ócòaíoâëeíû. Mèãa- íèe âêëþ÷aeòcÿ ócòaíoâêoé áèòa
3,  a âûêëþ÷aeòcÿ cápocoì ýòoão áèòa.  Bce  ocòaëüíûe  áèòû  â  öâeòíoì
òeêcòoâoì peæèìe äoëæíû áûòü paâíû 0.
   Äëÿ öâeòíoão aäaïòopa,  êoãäa cèìâoëû âûâoäÿòcÿ ía äècïëeé â öâeòíoì
ãpaôè÷ecêoì  peæèìe,  òo  oíè  èçoápaæaþòcÿ  â  òeêóùeì  ôoíoâoì öâeòe.
Oïepaòopû,  êoòopûe âûâoäÿò ía ýêpaí,  êaê â Áeécèêe,  òaê è â  MS  DOS
(ïpepûâaíèe  21H)  oãpaíè÷eíû  âûâoäoì cèìâoëoâ â òpeòüeì öâeòe ècïoëü-
çóeìoé ïaëeòòû.  B ïaëeòòe 0 cèìâoëû æeëòûe/êopè÷íeâûe,  a â ïaëeòòe  1
oíè  áeëûe.  Ïpoöeäópû  âûâoäa cèìâoëoâ BIOS (ïpepûâaíèe 10H),  oäíaêo,
ìoãóò óêaçaòü ëþáoé èç òpex öâeòoâ ïaëeòòû. C äpóãoé còopoíû, äëÿ PCjr,
öâeò  íaçía÷eííûé  oïpeäeëeííoé  ïoçèöèè  ïaëeòòû  ìoæeò  áûòü èçìeíeí,
ïoýòoìó äëÿ âûâoäa cèìâoëoâ ìoãóò ècïoëüçoâa- íû ëþáûe öâeòa.
   EGA òaêæe ècïoëüçóeò 16 peãècòpoâ ïaëeòòû. Oíè pacïoëoæeíû â ïopòe c
íoìepoì 3C0H, a íoìepa èx ìeíÿþòcÿ oò 00 äo 0FH. Haäo cía÷aëa ïpo÷èòaòü
èç  ïopòa 3DAH,  ÷òoáû ïepeêëþ÷èòü ïopò ía eão aäpecíûé peãècòp,  çaòeì
ïocëaòü íoìep peãècòpa ïaëeòòû â 3C0H,  a çaòeì ïocëaòü  äaííûe.  Koãäa
ïepeêëþ÷aòeëè  ía  EGA ócòaíoâëeíû ía óëó÷øeííûé peæèì (äëÿ óëó÷øeííoão
öâeòíoão äècïëeÿ IBM),  òo ïa- ëeòòa ìoæeò áûòü âûápaía èç 64 öâeòoâ. B

                                     - 6 -
ýòoì  cëó÷ae  ócòaíoâêa  peãècòpa ïaëeòòû èìeeò äëèíó 6 áèòoâ â ôopìaòe
R'G'B'RGB. Áèòû RGB äaþò òeìíûe öâeòû, a áèòû R'G'B' - öâeòa ïoâûøeííoé
ÿpêocòè.  Koãäa ócòaíoâëeíû è R' è R, íaïpèìep, òo ýòo ïpèâoäèò ê o÷eíü
ÿpêoìó êpacíoìó öâeòó. Áèòû ìoãóò cìeøèâaòücÿ äaâaÿ íoâûe oòòeíêè. Ecëè
peãècòpû  ïaëeòòû,  ïpeäíaçía÷eííûe  äëÿ  64 öâeòoâ,  ècïoëüçóþòcÿ íe â
óëó÷øeííoì peæèìe, òo 4-é è 5-é áèòû peãècòpa èãíopèpóþòcÿ è coäepæèìoe
peãècòpoâ paccìaòpèâaeòcÿ ïo oáû÷íoé cxeìe RGB. Ïocêoëüêó EGA ècïoëüçó-
þò  peãècòpû  ïaëeòòû,   òo   âûáop   ôoíoâoão   öâeòa   íe   oãpaíè÷eí
ècïoëüçoâaíèeì áèòa 7 áaéòa aòpèáóòoâ â êa÷ecòâe áèòa ìèãaíèÿ.

Moíoxpoìíûe cèìâoëû:

   Moíoxpoìíûe cèìâoëû   ècïoëüçóþò   áaéò  aòpèáóòoâ  íecêoëüêo  áoëee
còpaííûì oápaçoì.  Kaê è c aòpèáóòaìè  öâeòa,  áèòû  0-2  ócòaíaâëèâaþò
ocíoâíoé öâeò,  a áèòû 4-6 - ôoíoâûé. Ýòè öâeòa ìoãóò áûòü òoëüêo áeëûì
è ÷epíûì, co cëeäóþùèì cooòâeòcòâèeì áèòaì:

   Áèò      Áèò     Áèò     Ocíoâíoé aòpèáóò        Ôoíoâûé
 6 èëè 2  5 èëè 1 4 èëè 0

    0        0       0      ÷epíûé                  ÷epíûé
    0        0       1      ïoä÷epêíóòûé áeëûé      áeëûé
    0        1       0      áeëûé                   áeëûé
    0        1       1      áeëûé                   áeëûé
    1        0       0      áeëûé                   áeëûé
    1        0       1      áeëûé                   áeëûé
    1        1       0      áeëûé                   áeëûé
    1        1       1      áeëûé                   áeëûé
Hopìaëüíûé peæèì áeëûé ía ÷epíoì,  êoãäa áèòû 0-2 ócòaíoâëeíû â 111,  a
áèòû 4-6 ócòaíoâëeíû â 000.  Heãaòèâíoe èçoápaæeíèe coçäaeòcÿ oápaòíûìè
çía÷eíèÿìè áèòoâ.  Cèìâoëû âûâoäÿòcÿ c ïoâûøeííoé ÿpêocòüþ, êoãäa áèò 3
ócòaíoâëeí â 1;  íe cóùecòâóeò cïocoáa ïpèäaòü ïoâûøeííóþ ÿpêocòü ôoíó,
êoãäa  cèìâoëû  âûâoäÿòcÿ â íeãaòèâíoì èçoápaæeíèè,  a òaêæe íeäocòóïío
ïoä÷epêèâaíèe â íeãaòèâe.  Bo âcex cëó÷aÿx,  ócòaíoâêa â 1 áèòa 7  äaeò
ìèãaíèe  cèìâoëoâ.  Bceão âoçìoæío òoëüêo 10 êoìáèíaöèé,  êoãäa cèìâoëû
âèäíû.  Oíè ìoãóò áûòü peaëèçoâaíû paçëè÷íûìè ócòaíoâêaìè  áèòoâ.  Hèæe
ïpèâoäÿòcÿ ïo oäíoé èç âoçìoæíûx ócòaíoâoê äëÿ êaæäoão cëó÷aÿ:

   Aòpèáóò                 Öeïo÷êa áèòoâ       Ãeêc    10-íoe

   íopìaëüíûé                00000111            7         7
   èíòeícèâíûé               00001111            F        15
   íopìaëüíûé ïoä÷epêíóòûé   00000001            1         1
   èíòeícèâíûé ïoä÷epêíóòûé  00001001            9         9
   íeãaòèâíûé                01110000           70       112
   íopìaëüíûé ìèãaþùèé       10000111           87       135
   èíòeícèâíûé ìèãaþùèé      10001111           8F       143
   íopìaëüíûé ìèãaþùèé ïoä÷. 10000001           81       129
   ÿpêèé ìèãaþùèé ïoä÷epê.   10001001           89       137
   ÿpêèé íeãaòèâíûé          11110000           F0       240

   Cpeäíèé ópoâeíü.

   Ïpepûâaíèÿ DOS è BIOS ïpeäocòaâëÿþò  o÷eíü  áeäíûe  âoçìoæíocòè  äëÿ
paáoòû  c  öâeòíûì  òeêcòoì.  Toëüêo ôóíêöèÿ 9 ïpepûâaíèÿ 10H ïpèíèìaeò
áaéò aòpèáóòoâ ïpè âûâoäe cèìâoëa.  Ôóíêöèÿ A  ïpepûâaíèÿ  10H  âûâoäèò
cèìâoë  áeç  óêaçaíèÿ öâeòa èëè aòpèáóòa;  oía ïpocòo ïoìeùaeò cèìâoë â
âèäeoáóôep,  íe òpoãaÿ áaéò aòpèáóòa,  òaêèì oápaçoì aòpèáóòû coxpaíÿþò
câoe còapoe çía÷eíèe. Ôóíêöèÿ D ïpepûâaíèÿ 10H òaêæe ocòaâëÿeò íeòpoíó-

                                     - 7 -
òûì áaéò aòpèáóòoâ.
   Ôóíêöèè âûâoäa  ía  ýêpaí DOS ïpepûâaíèÿ 21H âceãäa âûâoäÿò áeëoe ía
÷epíoì.  Äaæe ecëè äëÿ âceão ýêpaía ócòaíoâëeí íeêoòopûé ôoíoâûé  öâeò,
òo  ôóíêöèè  DOS  ócòaíaâëèâaþò  aòpèáóò â íopìaëüíûé ÷epíûé ïpè âûâoäe
êaæäoão cèìâoëa. Oäíaêo èìeeòcÿ cïocoá ïpeoäo- ëeòü ýòo oãpaíè÷eíèe. MS
DOS   ïpeäocòaâëÿeò   äpaéâep   ócòpoécòâa   ANSI.SYS,   êoòopûé  ìoæeò
èíòepïpeòèpoâaòü cïeöèaëüíûe Esc-ïocëeäo- âaòeëüíocòè.  B ïpèëoæeíèè  Ä
oáúÿcíÿþòcÿ ocíoâû eão ècïoëüçoâaíèÿ.  Esc-ïocëeäoâaòeëüíocòè âûâoäÿòcÿ
÷epeç ôóíêöèþ 9 ïpepûâaíèÿ 21H,  êoòopûe oáû÷ío âûâoäÿò còpoêó cèìâoëoâ
ía  ýêpaí.  B  ýòoì  cëó÷ae  còpoêa cocòoèò èç cèìâoëa Esc,  ça êoòopûì
cëeäóeò [,  a äaëee oäío èëè áoëee êoäoâûx  ÷èceë  èç  íèæeïpèâeäeííoão
cïècêa.  Còpoêa  äoëæía êoí÷aòücÿ cèìâoëoì m è oáû÷íûì oãpaíè÷èòeëeì $.
Boò êoäoâûe íoìe- pa:

   0   âce aòpèáóòû âûêëþ÷eíû (÷epíûé ía áeëoì)
   1   âêëþ÷eía ïoâûøeííaÿ èíòeícèâíocòü
   4   âêëþ÷eío ïoä÷epêèâaíèe
   5   âêëþ÷eío ìèãaíèe
   7   âêëþ÷eío íeãaòèâíoe èçoápaæeíèe
   8   âce âêëþ÷eío (ïpè ýòoì cèìâoëû íeâèäèìû)

   30 ÷epíûé ocíoâíoé öâeò         40 ÷epíûé ôoí
   31 êpacíûé ocíoâíoé öâeò        41 êpacíûé ôoí
   32 çeëeíûé ocíoâíoé öâeò        42 çeëeíûé ôoí
   33 æeëòûé ocíoâíoé öâeò         43 æeëòûé ôoí
   34 cèíèé ocíoâíoé öâeò          44 cèíèé ôoí
   35 ocíoâíoé öâeò ìaãeíòa        45 ôoí ìaãeíòa
   36 ocíoâíoé öâeò öèaí           46 ôoí öèaí
   37 áeëûé ocíoâíoé öâeò          40 áeëûé ôoí

Oòìeòèì, ÷òo êoãäa ôóíêöèè MS DOS âûâoäÿò cèìâoëû â ãpaôè÷ecêoì peæèìe,
òo   oíè   oáû÷ío   ècïoëüçóþò   êoä   3  òeêóùeé  ïaëeòòû.  C  ïoìoùüþ
Esc-ïocëeäoâaòeëüíocòeé ìoæío ócòaíoâèòü öâeò  cèìâoëa  cooòâeòcòâóþùèì
ëþáoìó èç öâeòoâ ïaëeòòû.  Haäo óêaçûâaòü 30 èëè 31 äëÿ ôoíoâoão öâeòa,
32 èëè 33 - äëÿ êoäa 1,  34 èëè 35 - äëÿ êoäa 2 è 36 èëè 37 - äëÿ  êoäa
3. B ýòoì cëó÷ae íe íaäo óêaçûâaòü ôoíoâûé öâeò.
   B cëeäóþùeì ïpèìepe ía ýêpaí âûâoäÿòcÿ äâe còpoêè c ïoìoùüþ  ôóíêöèè
9  ïpepûâaíèÿ  21H.  Ïepâaÿ  âûâoäèòcÿ  cèíèì  ía  êpacíoì,  a âòopaÿ -
ìèãaþùèì öèaíoì ía êpacíoì. He íaäo ïepeoïpeäeëÿòü êpac- íûé â êa÷ecòâe
ôoíoâoão  öâeòa  äëÿ  âòopoé  còpoêè,  ïocêoëüêó  íaçía-  ÷eíèÿ  öâeòoâ
äeécòâóþò ía âce  ïocëeäóþùèe  êoìaíäû  âûâoäa  (âêëþ÷aÿ  ôóíêöèè  BIOS
ïpepûâaíèÿ 10H),  äo òex ïop,  ïoêa íe áóäóò cäeëaíû äpóãèe íaçía÷eíèÿ.
Oòìeòèì,  êaê ïpocòo ïepeìeøèâaòü êoìaíäû óïpaâëeíèÿ öâeòoì  c  âûâoäoì
caìèx còpoê.

;---â ceãìeíòe äaííûx
STRING_1     DB   'The rain in Spain',0AH,0DH,'$'
STRING_2     DB   'Falls mainly on the plain$'
BLUE_RED     DB   27,'[34;41m$'
BLINK_CYAN   DB   27,'[5;36m$'
;---âûâoä còpoê
   MOV  AH,9          ;ôóíêöèÿ âûâoäa còpoêè
   LEA  DX,BLUE_RED   ;aäpec óïpaâëÿþùeé còpoêè â DX
   INT  21H           ;âce áóäeò âûäaâaòücÿ cèíèì ía êpacíoì
   LEA  DX,STRING_1   ;óêaçûâaeì ía ïepâóþ còpoêó
   INT  21H           ;ïe÷aòaeì còpoêó
   LEA  DX,BLINK_CYAN ;aäpec âòopoé óïpaâëÿþùeé còpoêè
   INT  21H           ;ìeíÿeì öâeò ía ìèãaþùèé öèaí
   LEA  DX,STRING_2   ;óêaçûâaeì ía âòopóþ còpoêó

                                     - 8 -
   INT  21H           ;ïe÷aòaeì còpoêó

Bû âceãäa  äoëæíû  ïoçaáoòèòücÿ o òoì,  ÷òoáû cápocèòü aòpèáóòû öâeòa â
íopìaëüíoe  cocòoÿíèe  ïepeä  çaâepøeíèeì  ïpoãpaììû,  ïoc-  êoëüêó   â
ïpoòèâíoì  cëó÷ae  oíè  áóäóò  äeécòâoâaòü  è  ía  âûâoä  ïocëe- äóþùèx
ïpoãpaìì.  B êoíöe cëeäóeò âûâecòè Esc-ïocëeäoâaòeëüíocòü, ècïoëüçóþùóþ
êoä íoìep 0, êaê óêaçaío âûøe.
   EGA èìeþò cïeöèaëüíóþ  ôóíêöèþ  BIOS  äëÿ  ócòaíoâêè  coäep-  æèìoão
peãècòpoâ  ïaëeòòû.  Ýòo ïoäôóíêöèÿ 0 ôóíêöèè 10H ïpepûâaíèÿ 10H.  Haäo
ïoìecòèòü íoìep peãècòpa ïaëeòòû (oò 0 äo 15) â  BL,  a  çía÷eíèe  êoäa
öâeòa (òaêæe oò 0 äo 15) â BH, a çaòeì âûïoëíèòü ïpepûâaíèe. Ïoäôóíêöèÿ
2 ôóíêöèè 10H ócòaíaâëèâaeò âce peãècòpû ïaëeòòû, a òaêæe öâeò ãpaíèöû,
ècïoëüçóÿ 17-áaéòíûé ìaccèâ,  ía êoòopûé äoëæíû óêaçûâaòü ES:DX.  Áaéòû
0-15  ìaccèâa  ïoìeùaþòcÿ  â  peãècòpû  ïaëeòòû   0-15,   a   áaéò   16
ócòaíaâëèâaeò öâeò ãpaíèöû.

   Hèçêèé ópoâeíü.

   Íàäo  ïpocòo
ïoìecòèòü òpeáóeìoe çía÷eíèe  áaéòa  aòpèáóòoâ  â  âèäeoáóôep,  ça  òeì
cèìâoëoì,  ê  êoòopoìó ýòè aòpèáóòû äoëæíû oòíocèòücÿ.  Ïpèâeäeí ïpèìep
äëÿ öâeòíoão aäaïòopa.  B ïpèìepe ócòaíaâëèâaeòcÿ òeêcòoâûé ýêpaí 80*25
c  16  ôoíoâûìè öâeòaìè,  a çaòeì ýêpaí èíèöèaëèçèpóeòcÿ â êpacíûé öâeò
câeòëocèíeì ôoíe:

;---ócòaíoâêa 16 ôoíoâûx öâeòoâ â òeêcòoâoì peæèìe 80*25
        MOV  AL,00001001B   ;ócòaíoâêa â 0 áèòa ìèãaíèÿ
        MOV  DX,3D8H        ;aäpec peãècòpa
        OUT  DX,AL          ;ïocûëaeì â peãècòp
;---èíèöèaëèçèpóeì âecü ýêpaí â êpacíûé ía câeòëocèíeì ôoíe
        MOV  AX,0B800H      ;óêaçûâaeì ía âèäeoáóôep
        MOV  ES,AX          ;
        MOV  CX,2000        ;çaïècûâaeì aòpèáóò â 2000 ÿ÷eeê
        MOV  BX,1           ;BX óêaçûâaeò ía áaéò aòpèáóòoâ
        MOV  AL,10010100B   ;çía÷eíèe áaéòa aòpèáóòoâ
NEXT_CHAR:   MOV  ES:[BX],AL   ;ïocûëaeì aòpèáóòû â áóôep
        INC  BX             ;óâeëè÷èâaeì óêaçaòeëü ía aòpèáóòû
        INC  BX             ;
        LOOP NEXT_CHAR      ;ïèøeì â cëeäóþùóþ ïoçèöèþ

                  5. Ócòaíoâêa öâeòa ãpaíèöû ýêpaía.

   Ãpaíèöa cèìâoëüíoão ýêpaía ìoæeò èìeòü öâeò,  oòëè÷íûé oò ôoío- âoão
öâeòa öeíòpaëüíoé ÷acòè ýêpaía.  Moæeò áûòü  ècïoëüçoâaí  ëþáoé  èç  16
öâeòoâ.  C  äpóãoé  còopoíû,  ãpaôè÷ecêèe  ýêpaíû  òexíè÷ecêè  íe èìeþò
oáëacòè ãpaíèöû.  Koãäa öâeò ôoía ócòaíaâëèâaeòcÿ â ãpaôè÷ecêoì peæèìe,
òo  âecü  ýêpaí,  âêëþ÷aÿ  oáëacòü  ãpaíèöû,  oêpaøèâaeòcÿ â ýòoò öâeò.
Oäíaêo,  oïepaöèè âûâoäa òo÷eê ía ýêpaí  íe  èìeþò  äocòóïa  ê  oáëacòè
ãpaíèöû;   ecëè  áoëüøóþ  ÷acòü  aäpecóeìûx  òo÷eê  ýêpaía  èçìeíèòü  â
íeôoíoâûé öâeò, òo áóäeò coçäaía âèäèìocòü ãpaíèöû ýêpaía.

   Cpeäíèé ópoâeíü.

   Äëÿ âcex âèäeocècòeì ôoíoâûé öâeò ìoæeò áûòü ócòaíoâëeí ôóíêöèeé BH,
ïpepûâaíèÿ 10H.  Ýòa ôóíêöèÿ ócòaíaâëèâaeò òaêæe ocíoâíûe öâeòa.  ×òoáû
óêaçaòü, ÷òo íaäo èçìeíèòü ôoíoâûé öâeò, íaäo ïoìec- òèòü 0 â BH, a êoä
öâeòa  â  BL  è  âûïoëíèòü  ïpepûâaíèe.  Kpoìe  òoão, EGA èìeþò
cïeöèaëüíóþ ôóíêöèþ äëÿ ócòaíoâêè ôoíoâoão öâe- òa.  Ýòo  ïoäôóíêöèÿ  1
ôóíêöèè 10H ïpepûâaíèÿ 10H. Haäo ïoìecòèòü 10H â AH, 1 â AL è êoä öâeòa

                                     - 9 -
â BH. Hèêaêèx çía÷eíèé íe âoçâpa- ùaeòcÿ.

   Hèçêèé ópoâeíü.

   Äëÿ öâeòíoão ãpaôè÷ecêoão aäaïòopa áèòû 0-3 ïopòa  3D9H  (Pe-  ãècòp
âûáopa  öâeòa)  ócòaíaâëèâaþò  öâeò ãpaíèöû,  êoãäa ýêpaí ía- xoäìòcÿ â
òeêcòoâoì peæèìe. Kaê oáû÷ío, íaçía÷eíèe áèòoâ â âocxo- äÿùeì ïopÿäêe -
cèíèé  (B),  çeëeíûé (G),  êpacíûé (R) è èíòeícèâíocòü.  Ïocêoëüêó ýòoò
aäpec ïpeäíaçía÷eí òoëüêo äëÿ çaïècè, âce ocòaëüíûe áèòû ýòoão peãècòpa
äoëæíû  áûòü  ïpaâèëüío  ócòaíoâëeíû.  Ýòo  áèò  4,  êoòopûé,  ecëè eão
ócòaíoâèòü â 1, ïpèâoäèò ê òoìó, ÷òo âce ôoíoâûe öâeòa áóäóò âûâoäèòücÿ
c âûcoêoé èíòeícèâíocòüþ.

;---ócòaíoâêa câeòëocèíeão öâeòa ãpaíèöû
   MOV  AL,00001001B   ;aòpèáóò câeòëocèíeão öâeòa
   MOV  DX,3D9H        ;aäpec peãècòpa âûáopa öâeòa
   OUT  DX,AL          ;ócòaíaâëèâaeì öâeò ãpaíèöû

   Äëÿ EGA  öâeò   ãpaíèöû   ócòaíaâëèâaeòcÿ   peãècòpoì   cêaíèpoâaíèÿ
(overscan).  Ýòo  peãècòp íoìep 11H ïopòa c aäpecoì 3C0H.  Haäo cía÷aëa
ïpo÷èòaòü ýòoò ïopò,  ÷òoáû ïepeêëþ÷èòü eão ía aäpecíûé peãècòp,  çaòeì
ïocëaòü  òóäa  íoìep  11H  â êa÷ecòâe èíäeêca,  a çaòeì ïocëaòü äaííûe.
Èìeþò çía÷eíèe òoëüêo ìëaäøèe 4 áèòa äaííûx,  ecëè òoëüêo EGA íe câÿçaí
c  óëó÷øeííûì  öâeòíûì  äècïëeeì  IBM,  a  â ýòoì cëó÷ae èìeþò çía÷eíèe
ìëaäøèe 6 áèòoâ, êoòopûe ócòaíaâëèâaþò öâeò ãpaíèöû.

                    6. O÷ècòêa ÷acòè/âceão ýêpaía.

   O÷ècòêa ýêpaía cocòoèò ïpocòo â çaïècè ïpoáeëa â êaæäóþ  èç  ïoçèöèé
ýêpaía  (êoä  ASCII  -  32).  Oäíaêo,  ecëè  ïpè  âûâoäe  ía ýêpaí áûëè
ècïoëüçoâaíû íeíopìaëüíûe aòpèáóòû,  òo äoëæíû áûòü  òaêæe  èçìeíeíû  è
áaéòû  aòpèáóòoâ.  Oïepaöèoííaÿ  cècòeìa  oáecïe÷èâaeò  ïpocòoé  cïocoá
o÷ècòêè òoëüêo ÷acòè ýêpaía.

   Cpeäíèé ópoâeíü.

   Oïepaöèoííaÿ cècòeìa  ïpeäocòaâëÿeò   íecêoëüêo   cïocoáoâ   o÷ècòêè
ýêpaía. Kaêoé èç íèx Bû âûáepeòe çaâècèò oò òoão, êaêèe cpeäcòâa òpeáó-
þòcÿ ïpoãpaììe äëÿ äocòèæeíèÿ äpóãèx öeëeé.  Ïepâûé ìeòoä - ýòo  ïpocòo
cápoc   peæèìa   äècïëeÿ,  ècïoëüçóÿ  ôóíêöèþ  0  ïpepûâaíèÿ  10H.  Äëÿ
cèìâoëüíoão ýêpaía êaæäaÿ ïoçèöèÿ çaïoëíÿeòcÿ ïpoáeëoì  (ASCII  32),  a
âce  aòpèáóòû ócòaíaâëèâaþòcÿ íopìaëüíûìè (ASCII 7).  Oáû÷ío ýòoò ìeòoä
xopoø òoëüêo â ía÷aëe ïpoãpaììû,  êoãäa âce  paâío  íaäo  ócòaíaâëèâaòü
peæèì paáoòû äècïëeÿ.  Äëÿ öâeòíoão ãpaôè÷ecêoão aäaïòopa è PCjr peèíè-
öèaëèçaöèÿ peæèìa äècïëeÿ ïpèâoäèò ê êaòaâacèè ía ýêpaíe.  Ýòoò  ýôôeêò
oòcóòcòâóeò ó ìoíoxpoìíoão aäaïòopa è EGA.

;---o÷ècòêa ýêpaía ïóòeì ócòaíoâêè íoâoão peæèìa
   MOV  AH,0      ;íoìep ôóíêöèè ócòaíoâêè peæèìa äècïëeÿ
   MOV  AL,2      ;êoä peæèìa 80*25 ÷epío-áeëoão
   INT  10H       ;o÷ècòêa ýêpaía

   Bòopoé ìeòoä cocòoèò â ècïoëüçoâaíèè ôóíêöèé 6 è 7  ïpepûâaíèÿ  10H,
êoòopûe  cäâèãaþò  ýêpaí.  ×ècëo còpoê,  ía êoòopoe íaäo cäâèíóòü ýêpaí
ïoìeùaeòcÿ  â  AL  è  êoãäa  ýòo  ÷ècëo  paâío  íóëþ  ýêpaí  o÷èùaeòcÿ.
Ïpepûâaíèe  ïoçâoëÿeò  cäâèãaòü  òoëüêo  ÷acòü  ýêpaía,  ïoýòoìó  òaêèì
oápaçoì  ìoæío  o÷ècòèòü  oòäeëüíoe  oêío  ía  ýêpaíe.  Haäo  ïoìecòèòü
êoopäèíaòû  ëeâoão  âepxíeão  óãëa  oêía  â CX,  a êoop- äèíaòû ïpaâoão
íèæíeão óãëa â DX (íoìep còpoêè â CH/DH,  a  íoìep  còoëáöa  â  CL/DL).

                                     - 10 -
Ïoìecòèòe  aòpèáóò,  c êoòopûì äoëæeí ÷ècòèòücÿ ýêpaí â BH.  Koopäèíaòû
oòc÷èòûâaþòcÿ oò 0.

;---o÷ècòêa oêía ìeæäó 3,4 è 13,15
   MOV  AH,6     ;ècïoëüçóeì ïpoöeäópó cäâèãa
   MOV  AL,0     ;÷ècëo còpoê cäâèãa äeëaeì paâíûì íóëþ
   MOV  BH,7     ;áaéò aòpèáóòoâ äëÿ çaïoëíeíèÿ
   MOV  CH,3     ;còpoêa äëÿ âepxíeão ëeâoão óãëa
   MOV  CL,4     ;còoëáeö äëÿ ëeâoão âepxíeão óãëa
   MOV  DH,13    ;còpoêa äëÿ íèæíeão ëeâoão óãëa
   MOV  DL,15    ;còoëáeö äëÿ íèæíeão ëeâoão óãëa
   INT  10H      ;÷ècòèì oêío
   Tpeòèé ìeòoä  çaêëþ÷aeòcÿ  â ècïoëüçoâaíèè ôóêíöèè 9 ïpepûâaíèÿ 10H;
êoòopaÿ âûâoäèò cèìâoë è aòpèáóòû còoëüêo paç,  cêoëüêo óêa- çaío â CX.
Çía÷eíèe  2000  ÷ècòèò âecü ýêpaí,  ecëè êópcop áûë ócòa- íoâëeí â 0,0,
ècïoëüçóÿ ìeòoä  ïoêaçaííûé  â  [4.2.1].  AH  äoëæeí  coäepæaòü  cèìâoë
ïpoáeëa, AL - áaéò aòpèáóòoâ, a BH - íoìep còpa- íèöû äècïëeÿ.

;---ócòaíoâêa êópcopa â ëeâûé âepxíèé óãoë ýêpaía
   MOV  AH,2     ;ôóíêöèÿ ócòaíoâêè êópcopa
   MOV  BH,0     ;íoìep còpaíèöû
   MOV  DX,0     ;êoopäèíaòû 0,0
   INT  10H      ;ócòaíaâëèâaeì êópcop
;---âûâoä cèìâoëa ïpoáeëa 2000 paç
   MOV  AH,9     ;íoìep ôóíêöèè
   MOV  CX,2000  ;÷ècëo ïoâòopeíèé âûâoäa
   MOV  AL,' '   ;cèìâoë ïpoáeëa â AL
   MOV  BL,7     ;aòpèáóòû â BL
   INT  10H      ;o÷ècòêa ýêpaía

   Haêoíeö, DOS  oáecïe÷èâaeò  o÷ècòêó  ýêpaía  c  ïoìoùüþ  cïeöèaëüíûx
Esc-ïocëeäoâaòeëüíocòeé,  êoòopûe  paáoòaþò   c   äpaéâepoì   ANSI.SYS.
Ocíoâíûe  câeäeíèÿ  o  íeì  ïpèâeäeíû  â  ïpèëoæeíèè Ä.  Ýòè ïocëeäoâa-
òeëüíocòè - ýòo còpoêè,  ía÷èíaþùèecÿ c cèìâoëa  Esc,  a  çaâepøaþùèecÿ
oãpaíè÷èòeëeì  $.  Taêèe  còpoêè âûâoäÿòcÿ ôóíêöèeé 9 ïpepûâa- íèÿ 21H,
ïpè  ýòoì  DS:DX  äoëæíû  óêaçûâaòü  ía  ïepâûé  cèìâoë   còpoêè.   DOS
èíòepïpeòèpóeò còpoêó íe âûâoäÿ ee ía äècïëeé. ×òoáû còepeòü âecü ýêpaí
còpoêa äoëæía áûòü [2J.  ×òoáû còepeòü êoíeö còpoêè, ía÷èíaÿ oò ïoçèöèè
êópcopa (âêëþ÷aÿ ýòó ïoçèöèþ), còpoêa [K.

;---â ceãìeíòe äaííûx
CLEAR_LINE   DB   27,'[K$'

;---o÷ècòêa êoíöa còpoêè, ía÷èíaÿ oò ïoçèöèè êópcopa
   MOV  AH,9          ;ôóíêöèÿ âûâoäa còpoêè
   LEA  DX,CLEAR_LINE ;DX äoëæeí óêaçûâaòü ía ía÷aëo còpoêè
   INT  21H           ;còèpaeì êoíeö còpoêè

   Hèçêèé ópoâeíü.

   Ha íèçêoì ópoâíe íaäo ïpocòo ïoìecòèòü cèìâoëû ïpoáeëa è òpe- áóeìûé
áaéò aòpèáóòoâ â ïaìÿòü äècïëeÿ, ècïoëüçóÿ èícòpóêöèþ STOSW. Boò ïpèìep
äëÿ ìoíoxpoìíoão äècïëeÿ:

      MOV  AX,0B000H   ;óêaçûâaeì ía ïaìÿòü äècïëeÿ
      MOV  ES,AX       ;
      MOV  DI,0        ;DI óêaçûâaeò ía ía÷aëo áóôepa
      MOV  AL,32       ;cèìâoë ïpoáeëa
      MOV  AH,7        ;íopìaëüíûe aòpèáóòû

                                     - 11 -
      MOV  CX,2000     ;÷ècëo ïoâòopeíèé
REP   STOSW            ;ïocûëaeì AX â ES:DI 2000 paç

                        7. Óïpaâëeíèe êópcopoì.

   Kópcop cëóæèò äâóì öeëÿì.  Bo-ïepâûx,  oí cëóæèò óêaçaòeëeì ìecòa ía
ýêpaíe,  â êoòopoe oïepaòopû ïpoãpaììû ïocûëaþò câoé âûâoä.  Bo-âòopûx,
oí  oáecïe÷èâaeò  âèäèìóþ  òo÷êó  oòc÷eòa  ía  ýêpaíe  äëÿ ïoëüçoâaòeëÿ
ïpoãpaììû.  Toëüêo äëÿ âòopoão ïpèìeíeíèÿ êópcop äoëæeí  áûòü  âèäèìûì.
Koãäa  êópcop íeâèäèì (âûêëþ÷eí),  òo oí âce paâío óêaçûâaeò ía ïoçèöèþ
ýêpaía.  Ýòo âaæío,  ïocêoëüêó ëþáoé  âûâoä  ía  ýêpaí,  ïoääepæèâaeìûé
oïepaöèoííoé cècòeìoé, ía÷èíaeòcÿ c òeêóùeé ïoçèöèè êópcopa.
   Kópcop ãeíepèpóeòcÿ  ìèêpocxeìoé  êoíòpoëëepa  äècïëeÿ   6845.   Ýòa
ìèêpocxeìa èìeeò peãècòpû,  ócòaíaâëèâaþùèe paçìep è ïoëoæeíèe êópcopa.
Mèêpocxeìa  6845  äeëaeò  òoëüêo   ìepöaþùèé   êópcop,   xoòÿ   èìeþòcÿ
ïpoãpaììíûe  cïocoáû coçäaíèÿ íe- ìepöaþùeão êópcopa.  ×acòoòa ìepöaíèÿ
êópcopa íe  ìoæeò  áûòü  èçìeíeía.  B  ãpaôè÷ecêèx  peæèìax  êópcop  íe
âûâoäèòcÿ,  xoòÿ  cèìâoëû  ïoçèöèoíèpóþòcÿ  ía  ýêpaíe  òeìè  æe caìûìè
ïpoöeäópaìè ócòaíoâêè êópcopa, ÷òo è â òeêcòoâûx peæèìax.
   Koãäa âèäeocècòeìa   paáoòaeò   â   peæèìe,   äoïócêaþùeì  íecêoëüêo
äècïëeéíûx còpaíèö,  òo êaæäaÿ còpaíèöa èìeeò câoé coácòâeííûé êópcop è
ïpè  ïepeêëþ÷eíèè  ìeæäó  còpaíèöaìè âoccòaíaâëèâaeòcÿ ïoçèöèÿ êópcopa,
êoòopóþ   oí   çaíèìaë,   êoãäa   áûëo   ïocëeäíee   oápaùe-   íèe    ê
âoccòaíaâëèâaeìoé còpaíèöe.  Heêoòopûe peæèìû äècïëeÿ ïoçâo- ëÿþò èìeòü
äo 8 äècïëeéíûx còpaíèö è cooòâeòcòâóþùèe èì ïoçèöèè êópcopa xpaíÿòcÿ â
íaáope  âocüìè  2-áaéòíûx  ïepeìeííûx â oáëacòè äaííûx BIOS,  ía÷èíaÿ c
aäpeca 0040:0050H.  B êaæäoé ïepeìeííoé  ìëaäøèé  áaéò  coäepæèò  íoìep
còoëáöa,  oòc÷èòûâaÿ oò 0,  a còapøèé áaéò coäepæèò íoìep còpoêè, òaêæe
oòc÷èòûâaÿ oò 0.  Koãäa ècïoëüçóeòcÿ ìeíüøe ÷eì 8 còpaíèö, òo ècïoëüçó-
þòcÿ ïepeìeííûe, pacïoëo- æeííûe â áoëee ìëaäøèx aäpecax ïaìÿòè.

              8. Ócòaíoâêa êópcopa â aácoëþòíóþ ïoçèöèþ.

   Äëÿ êópcopa   ìoãóò   áûòü  ócòaíoâëeíû  aácoëþòíûe  êoopäèíaòû  èëè
êoopäèíaòû  oòíocèòeëüío  eão  òeêóùeé  ïoçèöèè   [4.2.2].   Aácoëþòíûe
êoopäèíaòû  ìoãóò  ìeíÿòücÿ  â  ïpeäeëax  25  còpoê  è  80  (èíoãäa 40)
còoëáöoâ.  ßçûêè âûcoêoão ópoâíÿ oáû÷ío oòc÷èòûâaþò êoopäèíaòû  ýêpaía,
ía÷èíaÿ  c  1,  è òaêèì oápaçoì ïoçèöèÿ ëeâoão âepxíeão óãëa 1,1.  ßçûê
acceìáëepa âceãäa ía÷èíaeò oòc÷eò c íóëÿ è ïoçèöèÿ ëeâoão âepxíeão óãëa
0,0.

Cpeäíèé ópoâeíü.

   Oïepaöèoííaÿ cècòeìa  ïpeäocòaâëÿeò  äâa  cïocoáa ïoçèöèoíèpoâa- íèÿ
êópcopa â aácoëþòíóþ  ïoçèöèþ  ía  ýêpaíe.  Ôóíêöèÿ  2  ïpepûâaíèÿ  10H
ócòaíaâëèâaeò êópcop, oòíocÿùèécÿ ê óêaçaííoé còpaíèöe ïaìÿòè. Còpaíèöû
íóìepóþòcÿ ía÷èíaÿ c íóëÿ è äëÿ  ìoíoxpoìíoão  äècïëeÿ  íoìep  còpaíèöû
(íaxoäÿùèécÿ â BH) äoëæeí âceãäa áûòü paâíûì 0. DH:DL coäepæaò còpoêó è
còoëáeö,  êoòopûe òoæe íóìepóþòcÿ c 0.  Kópcop ìeíÿeò câoe ïoëoæeíèe ía
ýêpaíe  òoëüêo  ecëè  ócòaíoâêa  êópcopa  oòíocèòcÿ  ê òeêóùeé aêòèâíoé
còpaíèöe.

;---ócòaíoâêa êópcopa â còpoêó 13, còoëáeö 39
   MOV  AH,2        ;íoìep ôóíêöèè
   MOV  BH,0        ;íoìep còpaíèöû
   MOV  DH,13       ;còpoêa
   MOV  DL,39       ;còoëáeö
   INT  10H         ;ïoçèöèoíèpóeì êópcop
   Bòopoé ìeòoä  ïoçèöèoíèpoâaíèÿ  êópcopa  cocòoèò   â   ècïoëüçoâaíèè

                                     - 12 -
cïeöèaëüíoão äpaéâepa ócòpoécòâa ANSI.SYS, êoòopûé äoëæeí áûòü çaãpóæeí
ïpè còapòe cècòeìû.  B ïpèëoæeíèè  Ä  äaíû  íeoáxoäèìûe  câeäeíèÿ.  Äëÿ
âûâoäa  còpoêè,  coäepæaùeé  èíôopìaöèþ o còpoêe è còoëáöe ècïoëüçóeòcÿ
ôóíêöèÿ 9 ïpepûâaíèÿ 21H. Còpoêa ía÷èíaeòcÿ c cèìâoëa Esc (ASCII 27), a
çaâepøaeòcÿ     cèìâoëoì     oãpaíè÷èòeëeì     $.     Ôopìaò     còpoêè
Esc[còpoêa,còoëáeöH$,  ãäe còpoêa è còoëáeö íóìe- póþòcÿ oò íóëÿ, a Esc
oáoçía÷aeò  êoä ASCII 27.  Haïpèìep,  còpoêa 27,'10;60H$' ócòaíaâëèâaeò
êópcop â còpoêó 10, còoëáeö 60.

   Xoòÿ òaêoé ìeòoä êaæeòcÿ èçëèøíe cëoæíûì,  ío oí  oêaçûâaeòcÿ  o÷eíü
óäoáíûì   ïpè   âûâoäe   pÿäa   còpoê  ía  ýêpaí,  òaê  êaê  Esc-ïocëe-
äoâaòeëüíocòü oápaáaòûâaeòcÿ êaê oäía èç còpoê íaáopa. B äaííoì ïpèìepe
òpè còpoêè cooáùeíèÿ paçápocaíû ïo âceìó ýêpaíó.

;---â ceãìeíòe äaííûx
POSITION_1   DB   27,'[10;30H$'
STRING_1     DB   'There are two options:$'
POSITION_2   DB   27,'[13;32H$'
STRING_2     DB   '(1) Review part 1$'
POSITION_3   DB   27,'[15;32H$'
STRING_3     DB   '(2) Move on to part 2$'
;---ïe÷aòü còpoê
   MOV  AH,9           ;íoìep ôóíêöèè âûâoäa còpoêè
   LEA  DX,POSITION_1  ;1-ÿ còpoêa ïoçèöèoíèpoâaíèÿ êópcopa
   INT  21H            ;ïoçèöèoíèpóeì êópcop
   LEA  DX,STRING_1    ;1-ÿ òeêcòoâaÿ còpoêa
   INT  21H            ;âûâoä còpoêè
   LEA  DX,POSITION_2  ;è ò.ä.
   INT  21H            ;
   LEA  DX,STRING_2    ;
   INT  21H            ;
   LEA  DX,POSITION_3  ;
   INT  21H            ;
   LEA  DX,STRING_3    ;
   INT  21H            ;

   Hèçêèé ópoâeíü.

   Peãècòpû 14 è 15 ìèêpocxeìû 6845 xpaíÿò ïoëoæeíèe êópcopa. Bû ìoæeòe
èçìeíèòü èx çía÷eíèe è êópcop ïepeäâèíeòcÿ  â  cooòâeòcòâóþùóþ  ïoçèöèþ
ýêpaía,  ío  ïpepûâaíèÿ  âûâoäa  ía ýêpaí DOS è BIOS áóäóò èãíopèpoâaòü
Baøó ócòaíoâêó è âepíóò êópcop â còapoe  ïoëo-  æeíèe.  Ýòo  ïpoècxoäèò
ïoòoìó,  ÷òo êaæäûé paç ïpè âûçoâe ýòèx ïpepûâaíèé, oíè âoccòaíaâëèâaþò
peãècòpû êópcopa,  ècïoëüçóÿ 2-áaéòíoe çía÷eíèe,  xpaíÿùeecÿ â  oáëacòè
äaííûx  BIOS.  B  ýòoé  oáëacòè,  ía÷èíaÿ  c  aäpeca  0040:0050,  ìoãóò
íaxoäèòücÿ äo âocüìè òaêèx çía÷eíèé,  äaâaÿ òeêóùee  ïoëoæeíèe  êópcopa
äëÿ êaæäoé èç còpaíèö äècïëeÿ.  Ïpoöeäópa íèçêoão ópoâíÿ äoëæía ìoäèôè-
öèpoâaòü è ýòè çía÷eíèÿ, ÷òoáû èçìeíèòü cocòoÿíèe êópcopa ïoëíocòüþ.
   Ïoçèöèÿ êópcopa xpaíèòcÿ â peãècòpax 14 è 15 êaê ÷ècëo oò 0 äo 1999,
÷òo cooòâeòcòâóeò 2000 (25*80) ïoçèöèÿì ýêpaía. He cïóòaéòe ýòó cècòeìó
íóìepaöèè  c  ïoçèöèÿìè  âèäeoáóôepa  oò  0 äo 3999,  ãäe êaæäûé cèìâoë
coïpoâoæäaeòcÿ  eùe  áaéòoì  aòpèáóòoâ  (äëÿ  ïoëó÷eíèÿ  ýêâèâaëeíòíoão
óêaçaòeëÿ ía ïoçèöèþ êópcopa íaäo cäâèíóòü óêaça- òeëü âèäeoáóôepa ía 1
áèò âïpaâo).  Oápaùaeì òaêæe Baøe âíèìaíèe,  ía òo,  ÷òo íe íaäo ìeíÿòü
ìecòaìè  còapøèé  è  ìëaäøèé  áaéòû:  â  peãècòpe 14 - còapøèé,  a 15 -
ìëaäøèé.

;---â ïpoãpaììe
   MOV  BL,24         ;còpoêa â BL (0-24)

                                     - 13 -
   MOV  BH,79         ;còoëáeö â BH (0-79)
   CALL SET_CURSOR    ;âûçoâ ïpoöeäópû

;---ïpoöeäópa ócòaíoâêè êópcopa
SET_CURSOR  PROC
   ;ïoëó÷aeì äocòóï ê peãècòpó ìëaäøeão áaéòa
       MOV  DX,3B4H   ;ïopò aäpecíoão peãècòpa 6845
       MOV  AL,15     ;âûáèpaeì peãècòp 15
       OUT  DX,AL     ;ïocûëaeì çaïpoc
   ;âû÷ècëeíèe ïoçèöèè êópcopa
       MOV  AL,80     ;óìíoæaeì íoìep còpoêè ía 80
       MUL  BL        ;â AX - íoìep còpoêè, óìíoæeííûé ía 80
       MOV  BL,BH     ;ïepeíocèì íoìep còoëáöa â BL
       SUB  BH,BH     ;pacïpocòpaíÿeì BL ía BX
       ADD  AX,BX     ;âû÷ècëÿeì ïoçèöèþ êópcopa
   ;ïocûëaeì ìëaäøèé áaéò peçóëüòaòa
       INC  DX        ;aäpecóeì óïpaâëÿþùèé peãècòp
       OUT  DX,AL     ;ïocûëaeì ìëaäøèé áaéò
   ;ïoëó÷aeì äocòóï ê peãècòpó còapøeão áaéòa
       MOV  AL,14     ;íoìep òpeáóeìoão peãècòpa
       DEC  DX        ;âoccòaíaâëèâaeì ïopò aäpecíoão peãècòpa
       OUT  DX,AL     ;ïocûëaeì çaïpoc
   ;ïocûëaeì còapøèé áaéò peçóëüòaòa
       INC  DX        ;aäpecóeì óïpaâëÿþùèé peãècòp
       MOV  AL,AH     ;ïoìeùaeì còapøèé áaéò â AL
       OUT  DX,AL     ;ïocûëaeì còapøèé áaéò
       RET
SET_CURSOR    ENDP
[ Íàçàä | Îãëàâëåíèå ]










helloworld.ru © 2001-2021
Âñå ïðàâà çàùèùåíû