←ïðåäûäóùàÿ ñëåäóþùàÿ→
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
ïocûëêè cèìâoëa ía ïpèíòep
MOV AL,[BX] ;BX óêaçûâaeò ía áóôep äaííûx
INT 17H ;ïocûëaeì cèìâoë
TEST AH,8 ;ïpoâepÿeì áèò oøèáêè
JNZ PRNTR_ERROR ;ía oápaáoòêó oøèáêè
INC BX ;óâeëè÷èâaeì óêaçaòeëü
LOOP NEXT_CHAR ;âûâoäèì cëeäóþùèé cèìâoë
Còaíäapòíoe ïpepûâaíèe MS DOS äëÿ âûâoäa ía ïpèíòep ýòo ôóíêöèÿ 5
ïpepûâaíèÿ 21H. Ïpocòo ïoìecòèòe cèìâoë â DL è âûïoëíèòe ïpepûâaíèe.
Ýòa ôóíêöèÿ âceãäa âûâoäèò ía LPT1 è ó íee íeò âoçâpaùaeìûx peãècòpoâ.
;---âûâoä äaííûx ía LPT1
MOV AH,5 ;íoìep ôóíêöèè
MOV DL,CHAR ;ãoòoâèì ïe÷aòaeìûé cèìâoë
INT 21H ;ïocûëaeì eão ía ïpèíòep
Äpóãoé cïocoá âûâoäa äaííûx ía ïpèíòep ýòo ôóíêöèÿ 40H ïpepûâaíèÿ
21H. Ýòo ôóíêöèÿ còaíäapòíoão âûâoäa, c ècïoëüçoâaíèeì ìeòoäa
äecêpèïòopa ôaéëoâ äëÿ äocòóïa ê ôaéëó èëè ócòpoécòâó [5.3.0]. B äaííoì
cëó÷ae ýòa ôóíêöèÿ ècïoëüçóeò cïeöèaëüíûé ïpe- äoïpeäeëeííûé íoìep
ôaéëa äëÿ ïpèíòepa. Ýòoò íoìep #4 è eão íaäo ïoìecòèòü â BX. Ôóíêöèÿ
èìeeò äocòóï òoëüêo ê LPT1, ïoýòoìó äëÿ âûâoäa ía äpóãoé ïpèíòep Baì
íaäo ïoìeíÿòü áaçoâûe aäpeca [6.1.4]. DS:DX äoëæíû óêaçûâaòü ía âûâoäè-
ìûe äaííûe, a CX coäep- æaòü ÷ècëo ïocûëaeìûx áaéòoâ. Haïpèìep:
- 8 -
;---âûâoä 120 áaéòoâ äaííûx ía LPT1
MOV AH,40H ;íoìep ôóíêöèè
MOV BX,4 ;íoìep ôaéëa äëÿ ïpèíòepa
MOV CX,120 ;÷ècëo ïocûëaeìûx áaéòoâ
LEA DX,PRTR_DATA ;DS:DX óêaçûâaþò ía äaííûe
INT 21H ;ïocûëaeì äaííûe
JC PRTR_ERROR ;ía oápaáoòêó oøèáêè
Ïpè âoçâpaòe ócòaíoâëeííûé ôëaã ïepeíoca èíäèöèpóeò oøèáêó, ïpè
ýòoì AX áóäeò coäepæaòü 5, ecëè ïpèíòep íe câÿçaí c ìaøèíoé è 6 - ecëè
óêaçaí íeâepíûé íoìep ôaéëa. Oòìeòèì, ÷òo ïpè ècïoëüçoâaíèè
ïpeäoïpeäeëeííoão íoìepa ôaéëa íeíóæío oòêpûâaòü ócòpoécòâo.
Hèçêèé ópoâeíü.
Áaéò äaííûx ïocûëaeòcÿ ía ïpèíòep, ïóòeì ïocûëêè eão â peãècòp
âûâoäèìûx äaííûx, aäpec ïopòa êoòopoão coâïaäaeò c áaçoâûì aäpe- coì
ïpèíòepa. Ïoìíèòe, ÷òo áaçoâûe aäpeca äëÿ LPT1-3 xpaíÿòcÿ co cìeùeíèÿìè
8, 10 è 12 â oáëacòè äaííûx BIOS (ía÷èíaþùeécÿ c 0040:0000). Ïocëe òoão
êaê äaííûe ïocëaíû â peãècòp ía êopoòêoe âpeìÿ âêëþ÷aeòcÿ áèò còpoáa
peãècòpa óïpaâëeíèÿ âûâoäoì, aäpec ïopòa êoòopoão ía 2 áoëüøe, ÷eì äëÿ
peãècòpa äaííûx. Hoìep áèòa còpoáa paâeí 0 è oí äoëæeí áûòü ócòaíoâëeí
òoëüêo ía o÷eíü êopoòêoe âpeìÿ, ÷òoáû èíèöèèpoâaòü ïepeäa÷ó äaííûx,
íaxoäÿùèxcÿ â peãècòpe äaííûx. Ïpoöeäópa ïe÷aòè ìoæeò íeìeäëeíío
cápocèòü áèò còpoáa oápaòío â 0.
Ïocëe òoão êaê áaéò äaííûx ïocëaí, ïpoãpaììa äoëæía oæèäaòü, ïoêa
ïpèíòep íe cooáùèò, ÷òo oí ãoòoâ ê ïpèeìó cëeäóþùeão. Ýòo äeëaeòcÿ äâó-
ìÿ cïocoáaìè. Ïpè ãoòoâíocòè ïpèíòep äaeò èìïóëüc â áèò ïoäòâepæäeíèÿ
peãècòpa còaòóca ââoäa, aäpec ïopòa êoòopoão ía 1 áoëüøe áaçoâoão
aäpeca ïpèíòepa. Hoìep áèòa ïoäòâepæäeíèÿ paâeí 6 è oáû÷ío oí
ócòaíoâëeí â 1. Èìïóëüc ïoäòâepæäeíèÿ cápacûâaeò ýòoò áèò â 0 ía
äocòaòo÷ío äoëãoe âpeìÿ, ÷òoáû ïpoãpaììa ía ÿçûêe acceìáëepa ìoãëa
óâèäeòü ýòo, ecëè oía ïocòoÿíío cëeäèò ça pe- ãècòpoì.
Äpóãoé cïocoá óçíaòü, ÷òo ïpèíòep ãoòoâ ê ïpèeìó cëeäóþùeão áaéòa
äaííûx cocòoèò â íeïpepûâíoé ïpoâepêe áèòa 7 peãècòpa còa- òóca,
êoòopûé cápacûâaeòcÿ â 0, êoãäa ïpèíòep çaíÿò è ócòaíaâëèâaeòcÿ â 1,
êoãäa oí ãoòoâ ïpèíÿòü äaííûe. Ecëè Bû ïèøèòe ïpoöe- äópó ïe÷aòè
íèçêoão ópoâíÿ, êoòopaÿ äoëæía paáoòaòü â èíòepïpeòèpóeìoì Áeécèêe èëè
äpóãoì o÷eíü ìeäëeííoì ÿçûêe, òo íaäo ècïoëüçoâaòü ýòoò ìeòoä.
Cëeäóþùèé ïpèìep ïoëó÷aeò áaçoâûé aäpec LPT1 èç oáëacòè äaííûx BIOS
è çaòeì âûâoäèò äaííûe èç áóôepa, ía êoòopûé óêaçûâaeò pe- ãècòp BX.
Ïpoãpaììa ïocòoÿíío ïpoâepÿeò peãècòp còaòóca ía çaíÿòocòü è
oäíoâpeìeíío ïpoâepÿeò áèò 3, ÷òoáû ïpoâepèòü íaëè÷èe oøèáêè ía
ïpèíòepe.
;---ïoäãoòoâêa
MOV AX,40H ;ES óêaçûâaeò ía oáëacòü äaííûx BIOS
MOV ES,AX ;
MOV DX,ES:[8] ;áaçoâûé aäpec LPT1 â DX
MOV BX,DATA_START ;BX óêaçûâaeò ía áóôep äaííûx
;---ïocûëaeì cèìâoë
NEXTCHAR: MOV AL,[BX] ;ïoìeùaeì cèìâoë â AL
OUT DX,AL ;ïocûëaeì cèìâoë
INC DX ;DX áóäeò óêaçûâaòü ía peãècòp
INC DX ;óïpaâëeíèÿ âûâoäoì
MOV AL,13 ;öeïo÷êa áèòoâ äëÿ èìïóëüca còpoáa
OUT DX,AL ;ïocûëaeì cèãíaë còpoáa
DEC AL ;íopìaëüíoe ccoòoÿíèe peãècòpa
OUT DX,AL ;ïocûëaeì eão
- 9 -
;---ïpoâepêa ía oøèáêó è oæèäaíèe ãoòoâíocòè ïpèíòepa
DEC DX ;DX óêaçûâaeò ía peãècòp còaòóca
NOT_YET: IN AL,DX ;ïoëó÷aeì áaéò còaòóca
TEST AL,8 ;oøèáêa?
JNZ PRTR_ERROR ;ïepexoä ía oápaáoòêó oøèáêè
TEST AL,80H ;ïpèíòep çaíÿò?
JZ NOT_YET ;ecëè çaíÿò, òo íaçaä
INC BX ;óâeëè÷èâaeì óêaçaòeëü â áóôepe äaííûx
DEC DX ;DX óêaçûâaeò ía peãècòp äaííûx
JMP NEXTCHAR ;èäeì ía ïe÷aòü cëeäóþùeão cèìâoëa
Koãäa ócòaíoâëeí áèò 4 óïpaâëÿþùeão peãècòpa ïpèíòepa, òo paçpeøeío
ïpepûâaíèe ïpèíòepa. Koãäa ècïoëüçóeòcÿ ïpepûâaíèe, òo ïpoãpaììa íe
äoëæía oæèäaòü cèãíaëa ãoòoâíocòè oò ïpèíòepa, íeïpepûâío oïpaøèâaÿ
peãècòp còaòóca ïpèíòepa. Bìecòo ýòoão, ïpoãpaììa ìoæeò ïocëaòü cèìâoë
è çaíèìaòücÿ äpóãèìè äeëaìè; êoãäa ïpèíòep áóäeò ãoòoâ äëÿ ïpèeìa
cëeäóþùeão cèìâoëa, òo oí ïoøëeò cèãíaë ïoäòâepæäeíèÿ (áèò 6 peãècòpa
còaòóca ía êopoòêoe âpeìÿ áóäeò ócòaíoâëeí â 1) è aâòoìaòè÷ecêè áóäeò
âûçâaío ïpepûâaíèe ïpèíòepa. Ïpoöeäópa oápaáoòêè ïpepûâaíèÿ ïoøëeò ía
ïpèíòep cëe- äóþùèé cèìâoë è âepíeò óïpaâëeíèe â ïpoãpaììó, ÷òoáû oía
ìoãëa ïpoäoëæaòü câoþ paáoòó, äo òex ïop ïoêa íe ïpoèçoéäeò cëeäóþùeão
ïpepûâaíèÿ. Koãäa âce äaííûe áóäóò âûâeäeíû, òo ïpepûâaíèe äoëæío
oòêëþ÷èòü ceáÿ.
10. Koïèpoâaíèe ýêpaía ía ïpèíòep (äaìï ýêpaía).
Äaìï òeêcòoâoão ýêpaía cäeëaòü äocòaòo÷ío ïpocòo, ecëè âce ècïoëü-
çóeìûe cèìâoëû coäepæaòcÿ â ÏÇÓ ïpèíòepa è íè oäèí èç íèx íe âûâoäèòcÿ
co cïeöèaëüíûìè aòpèáóòaìè, òaêèìè êaê ïoä÷epêèâaíèe èëè íeãaòèâíoe
èçoápaæeíèe. B ýòoì ïpocòeéøeì cëó÷ae ïpoãpaììe íóæío ëèøü ócòaíoâèòü
øèpèíó ïpèíòepa paâíoé 80 cèìâoëaì, a çaòeì c÷èòûâaòü cèìâoëû
ïoo÷epeäío èç âèäeoáóôepa, ïocûëaÿ èx êaê íeïpepûâíûé ïoòoê äaííûx ía
ïpèíòep. Ecëè â ÏÇÓ ïpèíòepa oòcóòcòâóþò cïeöèaëüíûe cèìâoëû, òaêèe êaê
cèìâoëû ïceâäoãpaôèêè, òo ïpoãpaììa äoëæía ïoäãoòoâèòü câoþ òaáëèöó
äaííûx äëÿ ýòèx cèìâoëoâ è âûâoäèòü èx ía ïpèíòep â ãpaôè÷ecêoì peæèìe.
Ïocêoëüêó ýòè cèìâo- ëû ìoãóò çaxoäèòü â ìeæcòpo÷íûe èíòepâaëû, òo
ìoæeò ïoòpeáoâaòücÿ cïeöèaëüíoe ïpoãpaììèpoâaíèe.
Kaæäûé èç cïeöèaëüíûx aòpèáóòoâ cèìâoëoâ coçäaeò câoè ïpoáëe- ìû.
Ïpoâepÿéòe aòpèáóò êaæäoão cèìâoëa ïpè c÷èòûâaíèè eão èç âèäeoáóôepa.
Koãäa cèìâoë âûäeëeí c ïoìoùüþ ïoä÷ep- êèâaíèÿ èëè ïoâûøeííoé
èíòeícèâíocòè, òo íaäo âêëþ÷aòü ïoä÷epêèâaíèe èëè ïe÷aòü æèpíûì øpèôòoì
ía ïpèíòepe. Oäíaêo ecëè cèìâoë âûâoäèòcÿ â íeãaòèâíoì èçoápaæeíèè, òo
âoçíèêaþò òe
←ïðåäûäóùàÿ ñëåäóþùàÿ→
... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
|
|