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
|