Ïðèìåð: Ãëîáàëüíàÿ ñåòü INTERNET
ß èùó:
Íà ãëàâíóþ  |  Äîáàâèòü â èçáðàííîå  

Ãëàâíàÿ/

Ïðîãðàììèðîâàíèå, áàçû äàííûõ. /

Ñèñòåìíîå ïðîãðàììèðîâàíèå

←ïðåäûäóùàÿ ñëåäóþùàÿ→
... 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 ... 


Copyright © 2005—2007 «RefStore.Ru»