Ïåðåéòè íà ãëàâíóþ   
  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

Taéìepû è çâóê

                    1. Ócòaíoâêa è ÷òeíèe òaéìepa.

   Bce IBM  PC  ècïoëüçóþò  ìèêpocxeìó  òaéìepa  8253  (èëè  8254)  äëÿ
coãëacoâaíèÿ èìïóëücoâ oò  ìèêpocxeìû  cècòeìíûx  ÷acoâ.  ×ècëo  öèêëoâ
cècòeìíûx  ÷acoâ  ïpeoápaçóeòcÿ â oäèí èìïóëüc,  a ïocëeäoâa- òeëüíocòü
ýòèx èìïóëücoâ ïoäc÷èòûâaeòcÿ äëÿ oïpeäeëeíèÿ âpeìeíè,  èëè  oíè  ìoãóò
áûòü   ïocëaíû  ía  ãpoìêoãoâopèòeëü  êoìïüþòepa  äëÿ  ãeíepaöèè  çâóêa
oïpeäeëeííoé ÷acòoòû.  Mèêpocxeìa 8253 èìeeò òpè èäeíòè÷íûx íeçaâècèìûx
êaíaëa, êaæäûé èç êoòopûx ìoæeò ïpoãpaììèpoâaòücÿ.
   Mèêpocxeìa 8253  paáoòaeò  íeçaâècèìo   oò   ïpoöeccopa.   Ïpoöeccop
ïpoãpaììèpóeò  ìèêpocxeìó  è  çaòeì  oápaùaeòcÿ  ê äpóãèì äeëaì.  Taêèì
oápaçoì 8253 äeécòâóeò êaê ÷acû peaëüíoão âpeìeíè -  oía  c÷èòaeò  câoè
èìïóëücû  íeçaâècèìo  oò  òoão,  ÷òo  ïpoècxoäèò â êoìïüþòepe.  Oäíaêo,
ìaêcèìaëüíûé ïpoãpaììèpóeìûé èíòepâaë  cocòaâëÿeò  ïpèáëèçèòeëüío  1/12
ceêóíäû. Äëÿ ïoäc÷eòa èíòepâaëoâ âpeìeíè â ÷acû è ìèíóòû íóæíû êaêèe-òo
äpóãèe cpeäcòâa.  Èìeíío ïo ýòoé ïpè÷èíe èìïóëücû  oò  íóëeâoão  êaíaëa
ìèêpocxeìû  òaéìepa  íaêaïëèâaþòcÿ â ïepeìeííoé,  íaxoäÿùeécÿ â oáëacòè
äaííûx BIOS.  Ýòoò ïpoöecc ïoêa- çaí ía pèc. 2-1. Ýòo íaêoïëeíèe oáû÷ío
íaçûâaeòcÿ ïoäc÷eòoì âpe- ìeíè cóòoê.  18.2 paça â ceêóíäó âûxoä êaíaëa
0 oápaáaòûâaeòcÿ aïïapaòíûì ïpepûâaíèeì (ïpepûâaíèeì òaéìepa),  êoòopoe
íeíaäoëão  ocòaíaâëèâaeò ïpoöeccop è óâeëè÷èâaeò c÷eò÷èê âpeìeíè cóòoê.
×ècëo 0 cooòâeòcòâóeò ïoëío÷è 12:00;  êoãäa c÷eò÷èê äocòèãaeò  çía÷eíèÿ
ýêâèâaëeíòíoão  24  ÷acaì,  oí  cápacûâaeòcÿ  ía  íoëü.  Äpóãoe âpeìÿ â
òe÷eíèe cóòoê ëeãêo oïpeäeëÿeòcÿ äeëeíèeì ïoêaçaòeëÿ c÷eò÷èêa  ía  18.2
äëÿ êaæäoé ceêóíäû.  C÷eò÷èê âpeìeíè cóòoê èc- ïoëüçóeòcÿ â áoëüøèícòâe
oïepaöèé, câÿçaííûx co âpeìeíeì.

           2. Ïpoãpaììèpoâaíèe ìèêpocxeìû òaéìepa 8253/8254.

   Kaæäûé èç òpex êaíaëoâ ìèêpocxeìû òaéìepa 8253 (8254 äëÿ AT) cocòoèò
èç   òpex   peãècòpoâ.   Äocòóï  ê  êaæäoé  ãpóïïe  èç  òpex  peãècòpoâ
ocóùecòâëÿeòcÿ  ÷epeç  oäèí  ïopò;  íoìepa  ïopòoâ  oò   40H   äo   42H
cooòâeòcòâóþò   êaíaëaì  0  -  2.  Ïopò  câÿçaí  c  8-áèòíûì  peãècòpoì
ââoäa/âûâoäa,  êoòopûé ïocûëaeò è ïpèíèìaeò äaííûe äëÿ ýòoão êaía-  ëa.
Koãäa êaíaë çaïpoãpaììèpoâaí, òo ÷epeç ýòoò ïopò ïocûëaeòcÿ äâóxáaéòíoe
çía÷eíèe,  ìëaäøèé áaéò  cía÷aëa.  Ýòo  ÷ècëo  ïepeäaeòcÿ  â  16-áèòíûé
peãècòp  çaäâèæêè  (latch  register),  êoòopûé  xpaíèò  ýòo  ÷ècëo è èç
êoòopoão êoïèÿ ïoìeùaeòcÿ â  16-áèòíûé  peãècòp  c÷eò÷èêa.  B  peãècòpe
c÷eò÷èêa  ÷ècëo  óìeíüøaeòcÿ  ía  eäèíèöó êaæäûé paç,  êoãäa èìïóëüc oò
cècòeìíûx ÷acoâ ïpoïócêaeòcÿ ÷epeç êaíaë.  Koãäa çía÷eíèe  ýòoão  ÷ècëa
äocòèãaeò  íóëÿ,  òo  êaíaë  âûäaeò âûxoäíoé cèãíaë è çaòeì íoâaÿ êoïèÿ
coäepæèìoão peãècòpa çaäâèæêè ïepeäâèãaeòcÿ â peãècòp  c÷eò÷èêa,  ïocëe
÷eão  ïpoöecc  ïoâòopÿeòcÿ.  ×eì ìeíüøe ÷ècëo â peãècòpe c÷eò÷èêa,  òeì
áûcòpee pèòì.  Bce òpè êaía- ëa âceãäa aêòèâíû: ïpoöeccop íe âêëþ÷aeò è
íe  âûêëþ÷aeò  èx.  Teêóùee çía÷eíèe ëþáoão èç peãècòpoâ c÷eò÷èêa ìoæeò
áûòü ïpo÷èòaío â ëþáoé ìoìeíò âpeìeíè, íe âëèÿÿ ía c÷eò.
   Kaæäûé êaíaë èìeeò äâe âxoäíûe è oäíó âûxoäíóþ ëèíèè. Bûxoäíaÿ ëèíèÿ
âûâoäèò èìïóëücû,  âoçíèêaþùèe â peçóëüòaòe ïoäc÷eòa. Haçía- ÷eíèe ýòèx
cèãíaëoâ âapüèpóeòcÿ â çaâècèìocòè oò òèïa IBM PC:
   Kaíaë 0 ècïoëüçóeòcÿ  cècòeìíûìè  ÷acaìè  âpeìeíè  cóòoê.  Oí  ócòa-
íaâëèâaeòcÿ BIOS ïpè còapòe òaêèì oápaçoì,  ÷òo âûäaeò èìïóëücû ïpèáëè-
çèòeëüío 18.2 paça â ceêóíäó. 4-áaéòíûé c÷eò÷èê ýòèx èìïóëücoâ xpaíèòcÿ
â  ïaìÿòè ïo aäpecó 0040:006C (ìëaäøèé áaéò xpa- íèòcÿ ïepâûì).  Kaæäûé
èìïóëüc  èíèöèèpóeò  ïpepûâaíèe  òaéìepa  (ío-  ìep  8)  è  èìeíío  ýòo
ïpepûâaíèe  óâeëè÷èâaeò ïoêaçaíèe c÷eò÷èêa.  Ýòo aïïapaòíoe ïpepûâaíèe,
ïoýòoìó oío  oápaáaòûâaeòcÿ  âceãäa,  íeçaâècèìo  oò  òoão,  ÷eì  çaíÿò

                                     - 2 -
ïpoöeccop,  ecëè òoëüêo paçpeøeíû aïïapaòíûe ïpepûâaíèÿ (cì. oácóæäeíèe
â  [1.2.2]).  Bûxoäíaÿ  ëèíèÿ  ècïoëüçóeòcÿ  òaêæe  äëÿ   cèíxpoíèçaöèè
íeêoòopûx äècêoâûx oïepaöèé,  ïoýòoìó ecëè Bû èçìeíèëè ee çía÷eíèe,  òo
Baì íeoáxoäèìo âoccòaío- âèòü ïepâoía÷aëüíoe çía÷eíèe ïepeä  oápaùeíèeì
ê äècêó.
   Kaíaë 1  óïpaâëÿeò  oáíoâëeíèeì ïaìÿòè ïoýòoìó eão ëó÷øe íe òpoãaòü.
Bûxoäíaÿ ëèíèÿ ýòoão êaíaëacâÿçaía  c  ìèêpocxeìoé  ïpÿìoão  äocòóïa  ê
ïaìÿòè  è  ee  èìïóëüc  çacòaâëÿeò  ìèêpocxeìó DMA oáíoâèòü âcþ ïaìÿòü.
Kaíaë 1  ècïoëüçóeòcÿ  äëÿ  ïoäc÷eòa  çaáëoêèpoâaííûx  èìïóëücoâ  ÷acoâ
âpeìeíè cóòoê,  c òeì ÷òoáû ìoæío áûëo oáíoâèòü çía÷eíèe c÷eò÷èêa ïocëe
çaâepøeíèÿ äècêoâûx oïepaöèé.
   Kaíaë 2  câÿçaí  c  ãpoìêoãoâopèòeëeì  êoìïüþòepa  è  oí  ïpoèçâoäèò
ïpocòûe ïpÿìoóãoëüíûe èìïóëücû äëÿ ãeíepaöèè çâóêa.  Ïpoãpaììècòû èìeþò
áoëüøèé êoíòpoëü íaä âòopûì êaíaëoì,  ÷eì íaä ocòaëüíûìè. Ïpocòûe çâóêè
ìoãóò ãeíepèpoâaòücÿ oäíoâpeìeíío c äpóãèìè ïpoãpaììíûìè oïepaöèÿìè,  a
áoëee  cëoæíûe  çâóêoâûe  ýôôeêòû  ìoãóò  áûòü   äocòèãíóòû   ça   c÷eò
ècïoëüçoâaíèÿ   ïpoöeccopa.   Kaíaë   2   ìoæeò   áûòü   oòcoeäèíeí  oò
ãpoìêoãoâopèòeëÿ  è  ècïoëüçoâaòücÿ  äëÿ  cèíxpoíèça-   öèè.   Haêoíeö,
âûxoäíaÿ ëèíèÿ êaíaëa 2 câÿçaía c äèíaìèêoì êoìïüþòepa.  Oäíaêo äèíaìèê
íe áóäeò ãeíepèpoâaòü çâóê äo òex  ïop  ïoêa  íe  cäeëaíû  oïpeäeëeííûe
ócòaíoâêè ìèêpocxeìû èíòepôeéca c ïepèôe- pèeé 8255.
   Äâe âxoäíûe ëèíèè äëÿ êaæäoão êaíaëa cocòoÿò èç ëèíèè ÷acoâ, êoòopaÿ
ïepeäaeò  cèãíaë  oò  ìèêpocxeìû  cècòeìíûx  ÷acoâ è ëèíèè,  íaçûâaeìoé
âopoòaìè (gate),  êoòopaÿ âêëþ÷aeò è âûêëþ÷aeò cèãíaë oò ÷acoâ.  Bopoòa
âceãäa  oòêpûòû äëÿ cèãíaëoâ ÷acoâ ïo êaíaëaì 0 è 1.  Ho oíè ìoãóò áûòü
çaêpûòûìè äëÿ êaíaëa 2, ÷òo ïoçâoëÿeò íeêo- òopûe cïeöèaëüíûe ìaíèïóëÿ-
öèè  co  çâóêoì.  Bopoòa çaêpûâaþòcÿ ócòa- íoâêoé ìëaäøeão áèòa ïopòa c
aäpecoì 61H,  êoòopûé ÿâëÿeòcÿ pe- ãècòpoì ìèêpocxeìû 8255; cápoc ýòoão
áèòa  cíoâa  oòêpûâaeò  âopoòa.  Ýòa  ìèêpocxeìa oácóæäaeòcÿ â [1.1.1].
Oòìeòèì ÷òo - êaê è âûxoä êaíaëa 2 - áèò 1 ïopòa 61H câÿçaí c äèíaìèêoì
è  òaêæe  ìoæeò  èc-  ïoüçoâaòücÿ  äëÿ  ãeíepaöèè  çâóêa.  Ha pèc.  2-2
ïpèâeäeía äèaãpaììa ìèêpocxeìû òaéìepa 8253.
   Mèêpocxeìa òaéìepa    ìoæeò   ècïoëüçoâaòücÿ   íeïocpeäcòâeíío   äëÿ
âpeìeííûx  oïepaöèé,  ío  ýòo  peäêo  áûâaeò  óäoáíûì.  Bâoä  c   ÷acoâ
ïpoèçâoäèòcÿ 1.19318 ìèëëèoíoâ paç â ceêóíäó (äaæe ía AT, ãäe cècòeìíûe
÷acû èäóò áûcòpee,  ìèêpocxeìa òaéìepa ïoëó÷aeò cèãíaë c ÷acòoòoé  1.19
Mãö). Ïocêoëüêó ìaêcèìaëüíoe ÷ècëo, êoòopoe ìoæeò xpaíèòücÿ â 16 áèòax,
paâío 65535 è ïocêoëüêó ýòo  ÷ècëo  äeëèòcÿ  ía  ÷acòoòó  èìïóëücoâ  oò
÷acoâ, paâíóþ 18.2, òo ìaêcèìaëüíûé âoçìoæíûé èíòepâaë ìeæäó èìïóëücaìè
paâeí  ïpèáëèçèòeëüío  1/12  ceêóíäû.  Ïoýòoìó  áoëüøèícòâo   âpeìeííûx
oïepaöèé  ècïoëüçóþò  c÷eò÷èê âpeìeíè cóòoê BIOS.  Äëÿ ïoäc÷eòa âpeìeíè
÷èòaeòcÿ çía÷eíèe âpeìe- íè cóòoê  è  cpaâíèâaeòcÿ  c  íeêoòopûì  paíee
çaïoìíeííûì çía÷eíèeì äëÿ oïpeäeëeíèÿ ÷ècëa èìïóëücoâ, ïpoøeäøèx c òoão
ìoìeíòa.  Cïe- öèaëüíûé cïocoá ïoçâoëÿeò  ècïoüçoâaòü  c÷eò÷èê  âpeìeíè
cóòoê äëÿ oïepaöèé â peaëüíoì âpeìeíè.
   8253 ïpeäocòaâëÿeò paçpaáoò÷èêaì oáopóäoâaíèÿ 6 peæèìoâ  paáoòû  äëÿ
êaæäoão êaíaëa. Ïpoãpaììècòû oáû÷ío oãpaíè÷èâaþòcÿ òpeòüèì peæèìoì, êaê
äëÿ êaíaëa 0 ïpè cèíxpoíèçaöèè,  òaê è äëÿ êaíaëa 2  äëÿ  cèíxpoíèçaöèè
èëè  ãeíepaöèè  çâóêa.  B  ýòoì  peæèìe,  êaê  òoëüêo  peãècòp çaäâèæêè
ïoëó÷aeò ÷ècëo, oí íeìeäëeíío çaãpóæaeò êoïèþ â peãècòp c÷eò÷èêa. Koãäa
çía÷eíèe  â  c÷eò÷èêe  äocòèãaeò  íóëÿ  pe-  ãècòp  çaäâèæêè  ìãíoâeíío
ïepeçaãpóæaeò c÷eò÷èê è ò.ä.  B òe÷eíèe ïoëoâèíû oòc÷eòa âûxoäíaÿ ëèíèÿ
âêëþ÷eía,  a  â  òe÷eíèe ïoëoâèíû - âûêëþ÷eía.  B peçóëüòaòe ïoëó÷aþòcÿ
ïpÿìoóãoëüíûe âoëíû,  êoòopûe  oäèíaêoâo  ïpèãoäíû  êaê  äëÿ  ãeíepaöèè
çâóêa, òaê è äëÿ ïoäc÷eòa.
   8-áèòíûé êoìaíäíûé  peãècòp  óïpaâëÿeò  cïocoáoì  çaãpóçêè  ÷èceë  â
êaíaë.  Aäpec ïopòa äëÿ ýòoão peãècòpa paâeí 43H. Koìaíäíoìó pe- ãècòpó
ïepeäaeòcÿ áaéò, êoòopûé ãoâopèò êaêoé êaíaë ïpoãpaììèpo- âaòü, â êaêoì
peæèìe,  a  òaêæe  oäèí  èëè  oáa  áaéòa  peãècòpa çaäâèæêè äoëæíû áûòü

                                     - 3 -
ïepeäaíû.  Oí ïoêaçûâaeò òaêæe  áóäeò  ëè  ÷ècëo  â  äâoè÷íoé  èëè  BCD
(äâoè÷íoêoäèpoâaííoé  äecÿòè÷íoé) ôopìe.  Çía÷eíèe áèòoâ ýòoão peãècòpa
òaêoâo:
   áèò   0    ecëè 0, äâoè÷íûe äaííûe, èía÷e BCD
       3-1    íoìep peæèìa, 1 - 5 (000 - 101)
       5-4    òèï oïepaöèè:
                00 = ïepeäaòü çía÷eíèe c÷eò÷èêa â çaäâèæêó
                01 = ÷èòaòü/ïècaòü òoëüêo còapøèé áaéò
                10 = ÷èòaòü/ïècaòü òoëüêo ìëaäøèé áaéò
                11 = ÷èòaòü/ïècaòü còapøèé áaéò, ïoòoì ìëaäøèé
       7-6    íoìep ïpoãpaììèpóeìoão êaíaëa, 0 - 2 (00 -10)

   Äëÿ ïpoãpaììèpoâaíèÿ ìèêpocxeìû 8253  íaäo  âûïoëíèòü  òpè  ocíoâíûx
øaãa.  Ïocëe  òoão  êaê òpeòèé øaã çaâepøeí,  çaïpoãpaììèpoâaííûé êaíaë
íeìeäëeíío ía÷èíaeò ôóíêöèoíèpoâaòü ïo íoâoé ïpoãpaììe.
   1. Ïocëaòü  â  êoìaíäíûé peãècòp (43H) áaéò,  ïpeäcòaâëÿþùèé öeïo÷êó
áèòoâ,  êoòopûe âûáèpaþò êaíaë,  còaòóc ÷òeíèÿ/çaïècè, peæèì oïepaöèè è
ôopìó ïpeäcòaâëeíèÿ ÷èceë.
   2. Äëÿ êaíaëa 2 íaäo paçpeøèòü cèãíaë oò ÷acoâ,  ócòaíoâèâ â 1 áèò 0
ïopòa  c  aäpecoì 61H.  (Koãäa áèò 1 ýòoão peãècòpa ócòaíoâëeí â 1,  òo
êaíaë  2  óïpaâëÿeò  äèíaìèêoì.  Cápocüòe  eão  â  0  äëÿ  oïepa-   öèé
cèíxpoíèçaöèè.)
   3. Bû÷ècëèòe çía÷eíèe c÷eò÷èêa oò 0 äo 65535,  ïoìecòèòe eão â AX, è
ïoøëèòe  cía÷aëa  ìëaäøèé,  a çaòeì còapøèé áaéò â peãècòp ââoäa/âûâoäa
êaíaëa (40H - 42H).
   Kaíaëû ìèêpocxeìû  8253  paáoòaþò âceãäa.  Ïo ýòoé ïpè÷èíe ïpoãpaììû
âceãäa äoëæíû âoccòaíaâëèâaòü ía÷aëüíûe ócòaíoâêè peãècòpoâ 8253  ïepeä
çaâepøeíèeì.  B  ÷acòíocòè,  ecëè ïpè çaâepøeíèè ïpoãpaììû ãeíepèpóeòcÿ
çâóê,  òo oí áóäeò ïpoäoëæaòücÿ äaæe ïocëe òoão,  êaê  MS  DOS  ïoëó÷èò
óïpaâëeíèe è çaãpóçèò äpóãóþ ïpoãpaììó.  Èìeéòe ýòo ââèäó ïpè íaïècaíèè
ïpoöeäópû âûxoäa ïo Ctrl-Break [3.2.8].

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

   B äaííoì ïpèìepe êaíaë 0 ïpoãpaììèpóeòcÿ  ía  äpóãoe  çía÷eíèe,  ÷eì
ócòaíoâëeío BIOS ïpè còapòe. Ïpè÷èía èçìeíeíèÿ ócòaíoâêè cocòoèò â òoì,
÷òoáû èçìeíèòü èíòepâaë èçìeíeíèÿ c÷eò÷èêa  âpeìeíè  cóòoê  ía  áoëüøóþ
âeëè÷èíó,   ÷eì  18.2  paça  â  ceêóíäó.  ×acòoòa  oáíoâëeíèÿ  c÷eò÷èêa
èçìeíÿeòcÿ,  cêaæeì,  ía 1000 paç â ceêóíäó,  c öeëüþ ïpoâeäeíèÿ òo÷íûx
ëaáopaòopíûx  èçìepeíèé.  Çía÷eíèe  çaäâèæêè  äoëæío áûòü 1193 (1193180
òaêòoâ â  ceêóíäó  /  10000).  Kaê  ÷èòaòü  òeêóùee  çía÷eíèe  peãècòpa
c÷eò÷èêa cì. â ïpèìepe [2.1.8]. Ïepeä äècêoâûìè oïepaöèÿìè opèãèíaëüíoe
çía÷eíèe çaäâèæêè äoëæío áûòü âoccòaíoâëeío,  ïocêoëüêó êaíaë 0 ècïoëü-
çóeòcÿ  äëÿ  cèíxpoíèçaöèè  äècêoâûx  oïepaöèé.  Maêcèìaëüío  âoçìoæíoe
çía÷eíèe - 65535 òaêòoâ ÷acoâ ìeæäó èìïóëücaìè oò êaíaëa -  ìoæeò  áûòü
äocòèãíóòo  çacûëêoé  0 â peãècòp çaäâèæêè (0 íeìeäëeíío ïpeâpaùaeòcÿ â
65535 ïpè óìeíüøeíèè ía eäèíèöó.
;---ócòaíoâêa peãècòpoâ  ââoäa/âûâoäa
             COMMAND_REG EQU 43H   ;aäpec êoìaíäíoão peãècòpa
             CHANNEL_0 EQU 40H     ;aäpec êaíaëa 0
             MOV   AL,00110110B   ;ócòaíoâêa áèòoâ äëÿ êaíaëa 2
             OUT   COMMAND_REG,AL ;çacûëêa â êoìaíäíûé peãècòp
;---ïocûëêa c÷eò÷èêa â çaäâèæêó
             MOV   AX,1193     ;c÷eò÷èê äëÿ 100 èìïóëücoâ/ceê.
             OUT   CHANNEL_2,AL   ;ïocûëêa ìëaäøeão áaéòa
             MOV   AL,AH       ;ãoòoâèì äëÿ ïocûëêè còapøèé áaéò
             OUT   CHANNEL_2,AL   ;ïocûëêa còapøeão áaéòa

                     3. Ócòaíoâêa/÷òeíèe âpeìeíè.

                                     - 4 -

   Ïpè còapòe  MS  DOS  çaïpaøèâaeò  ó  ïoëüçoâaòeëÿ   òeêóùee   âpeìÿ.
Bâeäeííoe çía÷eíèe ïoìeùaeòcÿ â 4 áaéòa, xpaíÿùèe c÷eò÷èê âpeìeíè cóòoê
(ía÷èíaÿ c 0040:006C,  ìëaäøèé áaéò xpaíèòcÿ ïepâûì).  Ho  cía÷aëa  oío
ïpeoápaçóeòcÿ â ôopìó, â êoòopoé ïoäc÷èòûâaeòcÿ âpeìÿ cóòoê, ò.e. âpeìÿ
ïpeoápaçóeòcÿ â  ÷ècëo  âoceìíaäöaòûx  äoëeé  ce-  êóíäû,  ïpoøeäøèx  c
ïoëío÷è. Ýòo ÷ècëo ïocòoÿíío oáíoâëÿeòcÿ 18.2 paç â ceêóíäó ïpepûâaíèeì
òaéìepa.  Koãäa  ïoÿâëÿeòcÿ  o÷epeäíoé  çaïpoc  ía  âpeìÿ,  òo  òeêóùee
çía÷eíèe  c÷eò÷èêa  âpeìeíè  cóòoê  ïpeoápaçóeòcÿ  oápaòío  â ïpèâû÷íûé
ôopìaò ÷acû-ìèíóòû-ceêóíäû.  Ecëè ïpè còapòe íe áûëo ââeäeío  çía÷eíèÿ,
òo c÷eò÷èê ócòaíaâëèâaeòcÿ â íoëü, êaê áóäòo ceé÷ac ïoëío÷ü. Koìïüþòepû
cíaáæeííûe    ìèêpocxeìoé    êaëeíäapÿ-÷acoâ    ìoãóò     aâòoìaòè÷ecêè
ócòaíaâëèâaòü c÷eò÷èê âpeìeíè cóòoê.

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

   MS DOS  ïpeäocòaâëÿeò  ïpepûâaíèÿ  äëÿ ÷òeíèÿ è ócòaíoâêè âpeìe- íè,
ïpoèçâoäÿ íeoáxoäèìûe ïpeoápaçoâaíèÿ ìeæäó çía÷eíèeì  c÷eò÷èêa  âpeìeíè
cóòoê è ÷acaìè-ìèíóòaìè-ceêóíäaìè.  Bpeìÿ âûäaeòcÿ c òo÷íocòüþ äo 1/100
ceêóíäû,  ío ïocêoëüêó c÷eò÷èê âpeìeíè cóòoê oáíoâëÿeòcÿ c  ÷acòoòoé  â
ïÿòü paç ìeíüøeé, òo ïoêaçaíèÿ coòûx ce- êóíä o÷eíü ïpèáëèæeííûe. Ôóíê-
öèÿ 2CH ïpepûâaíèÿ 21H âûäaeò âpeìÿ, a ôóíêöèÿ 2DH - ócòaíaâëèâaeò eão.
B  oáoèx  cëó÷aÿx  CH  coäepæèò  ÷acû (oò 0 äo 23,  ãäe 0 cooòâeòcòâóeò
ïoëío÷è),  CL - ìèíóòû (oò 0 äo 59),  DH - ceêóíäû (oò 0 äo 59) è DL  -
coòûe äoëè ceêóíä (oò 0 äo 99).
   Kpoìe òoão ïpè ïoëó÷eíèè âpeìeíè ôóíêöèeé 2CH, AL coäepæèò íoìep äíÿ
íeäeëè  (0  = âocêpeceíüe).  Çía÷eíèe äíÿ áóäeò âepíûì òoëüêo ecëè áûëa
ócòaíoâëeía äaòa.  DOS âû÷ècëÿeò íoìep  äíÿ  íeäeëè  ïo  äaòe.  Oòìeòèì
òaêæe, ÷òo ïpè ócòaíoâêe âpeìeíè ôóíêöèeé 2DH, AL oòìe÷aeò ïpaâèëüíocòü
ââeäeííoão çía÷eíèÿ âpeìeíè (0 = ïpa- âèëüío, FF = íeïpaâèëüío).

;---ócòaíoâêa âpeìeíè
   MOV   CH,HOURS       ;ââoäèì çía÷eíèÿ âpeìeíè
   MOV   CL,MINUTES     ;
   MOV   DH,SECONDS     ;
   MOV   DL,HUNDREDTHS  ;
   MOV   AH,2DH         ;íoìep ôóíêöèè ócòaíoâêè âpeìeíè
   INT   21H            ;ócòaíaâëèâaeì âpeìÿ
   CMP   AH,0FFH        ;ïpoâepÿeì ïpaâèëüíocòü çía÷eíèÿ
   JE    ERROR          ;ïepexoä ía oápaáoòêó oøèáêè

;---ïoëó÷eíèe âpeìeíè
   MOV   AH,2CH         ;íoìep ôóíêöèè ïoëó÷eíèÿ âpeìeíè
   INT   21H            ;ïoëó÷aeì âpeìÿ
   MOV   DAY_OF_WEEK,AH ;ïoëó÷aeì äeíü íeäeëè èç AH

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

   Ecëè Bû  èçìeíèëè  cêopocòü  èìïóëücoâ  êaíaëa 1 ìèêpocxeìû 8253 äëÿ
cïeöèaëüíûx ïpèëoæeíèé,  òo Baì íeoáxoäèìo íaïècaòü  câoþ  ïpo-  öeäópó
äeêoäèpoâaíèÿ ïoêaçaíèé c÷eò÷èêa âpeìeíè cóòoê. BIOS ïoçâoëÿeò äèaïaçoí
çía÷eíèé c÷eò÷èêa oò 0 äo 1.573 ìèëëèoía  è  ýòo  ìoæeò  áûòü  èçìeíeío
òoëüêo  ïóòeì  èçìeíeíèÿ  ïpepûâaíèÿ  òaéìepa.  Ïoýòoìó  ÷acû,  peaëüío
ïoêaçûâaþùèe  coòûe  äoëè  ceêóíäû,  íe  ìoãóò  paáoòaòü  24  ÷aca  áeç
cïeöèaëüío  íaïècaííoé  ïpoãpaììû.  Oòìeòèì  òaêæe,  ÷òo áaéò 0040:0070
ócòaíaâëèâaeòcÿ â íoëü ïpè còapòe,  a  çaòeì  óâeëè÷èâaeòcÿ  ía  1  (íe
áoëüøe) ïo xoäó ÷acoâ.

                       4. Ócòaíoâêa/÷òeíèe äaòû.

                                     - 5 -

   Ïpè âêëþ÷eíèè  êoìïüþòepa  MS DOS çaïpaøèâaeò ó ïoëüçoâaòeëÿ òeêóùèe
äaòó è âpeìÿ.  Bpeìÿ  çaïècûâaeòcÿ  â  oáëacòè  äaííûx  BIOS.  Äaòa  æe
coäepæèòcÿ  â  ïepeìeííoé  â  COMMAND.COM.  Oía xpaíèòcÿ â ôopìaòe òpex
ïocëeäoâaòeëüíûx áaéòoâ,  êoòopûe coäepæaò cooòâeòcòâeíío äeíü  ìecÿöa,
íoìep ìecÿöa è íoìep ãoäa,  ía÷èíaÿ c 0, ãäe 0 cooòâeòcòâóeò 1980 ãoäó.
B oòëè÷èè oò c÷eò÷èêa âpeìeíè cóòoê,  aäpec äaòû â  ïaìÿòè  ìeíÿeòcÿ  c
èçìeíeíèeì  âepcèè  DOS  è  ïoëoæeíèeì  â  ïaìÿòè COMMAND.COM.  Ïo ýòoé
ïpè÷èíe äëÿ ïoëó÷eíèÿ äaòû âceãäa  íaäo  ècïoëüçoâaòü  ãoòoâûe  óòèëèòû
Áeécèêa èëè MS DOS, a íe oápa- ùaòücÿ ê ýòoé ïepeìeííoé íaïpÿìóþ.
   Maøèíû,  oáopóäoâaííûe ìèêpocxeìoé êaëeíäapÿ-÷acoâ,  aâòoìaòè-
÷ecêè ócòaíaâëèâaþò âpeìÿ è äaòó  c ïoìoùüþ cïeöèaëüíoé ïpoãpaììû
(oáû÷ío  çaïócêaeìoé  ïpè còapòe ÷epeç ôaéë  AUTOEXEC.BAT).   Kaê
ïoëó÷èòü äocòóï ê ìèêpocxeìe êaëeíäapÿ-÷acoâ,  cì. [2.1.4]. Oòìe-
òèì  òaêæe, ÷òo êoãäa c÷eò÷èê âpeìeíè cóòoê BIOS ïepexoäèò  ÷epeç
oòìeòêó 24 ÷acoâ, MS DOS ìeíÿeò äaòó.

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

   Ôóíêöèè 2AH è 2BH ïpepûâaíèÿ 21H ïoëó÷aþò è ócòaíaâëèâaþò äaòó.  Äëÿ
ïoëó÷eíèÿ äaòû ïoìecòèòe  â  AH  2AH  è  âûïoëíèòe  ïpepûâa-  íèe.  Ïpè
âoçâpaòe  CX  áóäeò  coäepæaòü  ãoä  â  âèäe  ÷ècëa  oò  0 äo 119,  ÷òo
cooòâeòcòâóeò äèaïaçoíó ëeò 1980 - 2099  (ìoæío  cêaçaòü  ÷òo  âûäaeòcÿ
cìeùeíèe oòíocèòeëüío 1980 ã.). DH coäepæèò íoìep ìecÿöa, a DL - äeíü.

   MOV   AH,2AH       ;íoìep ôóíêöèè ïoëó÷eíèÿ äaòû
   INT   21H          ;ïoëó÷eíèe äaòû
   MOV   DAY,DL       ;äeíü èç DL
   MOV   MONTH,DH     ;ìecÿö èç DH
   ADD   CX,1980      ;äoáaâëÿeì áaçó ê ãoäó
   MOV   YEAR,CX      ;ïoëó÷aeì íoìep ãoäa

   Äëÿ ócòaíoâêè äaòû ïoìecòèòe äeíü, ìecÿö è ãoä â òe æe peãècò-
pû  è âûïoëíèòe ôóíêöèþ 2BH.  Ecëè çía÷eíèÿ, óêaçaííûe  äëÿ  äaòû
íeâepíû, òo â AL áóäeò âoçâpaùeío FF, â ïpoòèâíoì cëó÷ae - 0.
   MOV   DL,DAY       ;ïoìeùaeì äeíü â DL
   MOV   DH,MONTH     ;ïoìeùaeì ìecÿö â DH
   MOV   CX,YEAR      ;ïoìeùaeì ãoä â CX
   SUB   CX,1980      ;áepeì cìeùeíèe oòíocèòeëüío 1980
   MOV   AH,2BH       ;íoìep ôóíêöèè ócòaíoâêè äaòû
   INT   21H          ;ócòaíoâêa äaòû
   CMP   AH,0FFH      ;ïpoâepÿeì ócïeøíocòü oïepaöèè
   JE    ERROR        ;íeâepíaÿ äaòa, èäeì ía oápaáoòêó oøèáêè

             5. Ócòaíoâêa/÷òeíèe ÷acoâ peaëüíoão âpeìeíè.

   ×acû peaëüíoão âpeìeíè èìeþò câoé coácòâeííûé ïpoöeccop,  êoòo-  pûé
ìoæeò  ïoäc÷èòûâaòü  âpeìÿ  íe âëèÿÿ ía äpóãèe êoìïüþòepíûe oïe- paöèè.
Oíè èìeþò òaêæe íeçaâècèìûé ècòo÷íèê ïèòaíèÿ, ècïoëüçóeìûé êoãäa êoìïü-
þòep  âûêëþ÷eí.  Ïpoãpaììío ìoæío êaê ÷èòaòü,  òaê è ócòaíaâëèâaòü ÷acû
peëüíoão   âpeìeíè.   Oáû÷ío   èìeeòcÿ    äoïoëíèòeëüíoe    ïpoãpaììíoe
oáecïe÷eíèe,  êoòopoe  ócòaíaâëèâaeò  c÷eò÷èê  âpeìe-  íè  cóòoê BIOS è
ïepeìeííóþ äaòû DOS òaêèì oápaçoì,  ÷òoáû oíè  cooòâeòcòâoâaëè  òeêóùèì
ïoêaçaíèÿì  ÷acoâ  peaëüíoão  âpeìeíè.  Ho  ìoæío  ïpoãpaììío ïpoâepèòü
cooòâeòcòâèe ìeæäó íèìè è ïpè oáíapóæeíèè paçíoãëacèé ïpèíÿòü íeoáxoäè-
ìûe ìepû.
   Paçëè÷íûe ócòaíoâêè  âpeìeíè  è  äaòû  ocóùecòâëÿþòcÿ  ÷epeç   íaáop
aäpecoâ ïopòoâ.  Míoãèe ìíoãoôóíêöèoíaëüíûe ïëaòû pacøèpeíèÿ äëÿ IBM PC
èìeþò  ÷acû  peaëüíoão  âpeìeíè,  ío,  ê  coæaëeíèþ,  íeò   còaíäapòíoé

                                     - 6 -
ìèêpocxeìû è äèaïaçoía aäpecoâ ïopòoâ.  AT oáopóäóeòcÿ ÷acaìè peaëüíoão
âpeìeíè,  ocíoâaííûìè ía ìèêpocxeìe MC146818  ôèpìû  Motorola,  êoòopûe
ècïoëüçóþò  òe  æe  peãècòpû,  ÷òo è ìèêpoc- xeìa,  coäepæaùaÿ äaííûe o
êoíôèãópaöèè cècòeìû.  Äocòóï ê ýòèì peãècòpaì ìoæío  ïoëó÷èòü,  ïocëaâ
cía÷aëa íoìep òpeáóeìoão peãècòpa â ïopò 70H, a çaòeì ïpo÷èòaâ çía÷eíèe
peãècòpa ÷epeç ïopò 71H. Peãècòpû, câÿçaííûe c ÷acaìè, cëeäóþùèe:

           Hoìep peãècòpa              Ôóíêöèÿ

                00H                  Ceêóíäû
                01H                  Ceêóíäíaÿ òpeâoãa
                02H                  Mèíóòû
                03H                  Mèíóòíaÿ òpeâoãa
                04H                  ×acû
                05H                  ×acoâaÿ òpeâoãa
                06H                  Äeíü íeäeëè
                07H                  Äeíü ìecÿöa
                08H                  Mecÿö
                09H                  Ãoä
                0AH                  peãècòp còaòóca A
                0BH                  peãècòp còaòóca B
                0CH                  peãècòp còaòóca C
                0DH                  peãècòp còaòóca D

   Áèòû ÷eòûpex  còaòócíûx  peãècòpoâ  âûïoëíÿþò paçëè÷íûe ôóíêöèè,  èç
êoòopûx èíòepec äëÿ ïpoãpaììècòoâ ìoãóò ïpeäcòaâëÿòü cëeäóþùèe:
   Peãècòp A: áèò 7   1 = èäeò ìoäèôèêaöèÿ âpeìeíè (íaäo æäaòü
                          çía÷eíèÿ 0, ÷òoáû ÷èòaòü)
   Peãècòp B: áèò 6   1 = paçpeøeío ïepèoäè÷ecêoe ïpepûâaíèe
              áèò 5   1 = paçpeøeío ïpepûâaíèe òpeâoãè
              áèò 4   1 = paçpeøeío ïpepûâaíèe êoíöa ìoäèôèêaöèè
              áèò 1   1 = ÷acû c÷èòaþòcÿ äo 24, 0 = äo 12
              áèò 0   1 = paçpeøeío çaïoìèíaíèe âpeìeíè cóòoê
   ×acû peaëüíoão âpeìeíè ía AT ìoãóò  âûçûâaòü  aïïapaòíoe  ïpepûâaíèe
IRQ8.  Ïpoãpaììa  ìoæeò  ócòaíoâèòü  âeêòop  ýòoão  ïpepûâaíèÿ ía ëþáóþ
ïpoöeäópó,  êoòopóþ òpeáóeòcÿ âûïoëíèòü â oïpeäeëeííoe âpeìÿ Ïpepûâaíèe
ìoæeò âûçûâaòücÿ oäíèì èç òpex cïocoáoâ, êaæäûé èç êoòopûx çaïpeùeí ïpè
còapòe.  Ïepèoäè÷ecêoe   ïpepûâaíèe   ïpoècxoäèò   ÷epeç   oïpeäeëeííûe
èíòepâaëû âpeìeíè.  Ïepèoäè÷íocòü ïpèáëèæeíío paâía oäíoé ìèëëèceêóíäe.
Ïpepûâaíèe òpeâoãè ïpoècxoäèò êoãäa çía÷eíèe òpex pe-  ãècòpoâ  òpeâoãè
coâïaäaeò co çía÷eíèÿìè cooòâeòcòâóþùèx âpeìeííûx peãècòpoâ. Ïpepûâaíèe
êoíöa  ìoäèôèêaöèè  ïpoècxoäèò  ïocëe   êaæäoão   oáíoâëeíèÿ   çía÷eíèé
peãècòpoâ ìèêpocxeìû.
   Ïpepûâaíèe 1AH pacøèpeío â BIOS AT,  ÷òoáû oío  ïoçâoëÿëo  ÷èòaòü  è
ócòaíaâëèâaòü  ÷acû  peaëüíoão âpeìeíè.  Ïocêoëüêó ïoêaçaíèÿ íèêoãäa íe
cocòoÿò áoëee ÷eì èx äâóx äecÿòè÷íûx öèôp, òo çía÷eíèÿ âpeìeíè âûäaþòcÿ
â  äâoè÷ío-êoäèpoâaííoé  äecÿòè÷íoé ôopìe (BCD),  êoãäa áaéò äeëèòcÿ ía
äâe ïoëoâèíû è êaæäaÿ äecÿòè÷íaÿ öèôpa ïpeäcòaâëÿeòcÿ ÷eòûpüìÿ  áèòaìè.
Taêoé ôopìaò ïoçâoëÿeò ëeãêo ïepeâoäèòü ÷ècëa â ôopìó ASCII.  Ïpoãpaììe
íóæío òoëüêo  cäâèíóòü  ïoëoâèíó  áaéòa  â  ìëaäøèé  êoíeö  peãècòpa  è
äoáaâèòü 48 äëÿ ïoëó÷e- íèÿ êoäa ASCII, cooòâeòcòâóþùeão äaííoìó ÷ècëó.
Äëÿ âcex IBM PC ôóíêöèè 0 è 1 ïpepûâaíèÿ  1AH  ÷èòaþò  è  ócòaíaâëèâaþò
c÷eò÷èê  âpe-  ìeíè cóòoê BIOS.  Äëÿ ÷acoâ peaëüíoão âpeìeíè AT èìeeòcÿ
øecòü íoâûx ôóíêöèé:

   Ôóíêöèÿ 2:  ×òeíèe âpeìeíè èç ÷acoâ peaëüíoão âpeìeíè
               Ïpè âoçâpaòe: CH = ÷acû â BCD
                             CL = ìèíóòû â BCD
                             DH = ceêóíäû â BCD

                                     - 7 -
   Ôóíêöèÿ 3:  Ócòaíoâêa âpeìeíè ÷acoâ peaëüíoão âpeìeíè
               Ïpè âxoäe: CH = ÷acû â BCD
                          CL = ìèíóòû â BCD
                          DH = ceêóíäû â BCD
                          DL = if daylight savings, else 1
   Ôóíêöèÿ 4:  ×òeíèe äaòû èç ÷acoâ peaëüíoão âpeìeíè
               Ïpè âoçâpaòe: CH = âeê â BCD (19 èëè 20)
                             CL = ãoä â BCD (c 1980)
                             DH = ìecÿö â BCD
                             DL = äeíü ìecÿöa â BCD
   Ôóíêöèÿ 5:  Ócòaíoâêa äaòû ÷acoâ peaëüíoão âpeìeíè
               Ïpè âxoäe:    CH = âeê â BCD (19 èëè 20)
                             CL = ãoä â BCD (c 1980)
                             DH = ìecÿö â BCD
                             DL = äeíü ìecÿöa â BCD
   Ôóíêöèÿ 6:  Ócòaíoâêa òpeâoãè äëÿ ÷acoâ peaëüíoão âpeìeíè
               Ïpè âxoäe: CH = ÷acû â BCD
                          CL = ìèíóòû â BCD
                          DH = ceêóíäû â BCD
   Ôóíêöèÿ 7:  Cápoc òpeâoãè (íeò âxoäíûx peãècòpoâ)

Tpeâoãa ócòaíaâëèâaeòcÿ  êaê cìeùeíèe,  oòíocèòeëüío òeêóùeão ìo- ìeíòa
âpeìeíè. Maêcèìaëüíûé ïepèoä paâeí 23:59:59. Kaê óæe ãoâo- pèëocü âûøe,
âeêòop  ïpepûâaíèÿ 4AH äoëæeí óêaçûâaòü ía ïpoöeäópó oápaáoòêè òpeâoãè.
Oòìeòèì, ÷òo ecëè ÷acû íe paáoòaþò (íaèáoëee âepoÿòío, èç-ça oòcóòcòâèÿ
ïèòaíèÿ), òo âûïoëíeíèe ôóíêöèé 2, 4 è 6 ócòaíaâëèâaeò ôëaã ïepeíoca.

                   6. Çaäepæêa ïpoãpaììíûx oïepaöèé.

   Ecëè Bû  ocóùecòâëÿeòe  çaäepæêó  â  ïpoãpaììe  ïocpeäcòâoì  ïócòoão
öèêëa,  òo Baì  ìoæeò  ïoòpeáoâaòücÿ  ìíoão  âpeìeíè  äëÿ  òoão,  ÷òoáû
äoáèòücÿ íóæíoão âpeìeíè çaäepæêè.  Äaæe ecëè Bû oïpeäeëèòe òpe- áóeìóþ
äëèòeëüíocòü, òo íeëüçÿ áûòü óâepeííûì, ÷òo Baøa ïpoãpaììa áóäeò äaâaòü
íóæíoe  âpeìÿ  çaäepæêè  ïpè  âcex  ócëoâèÿx.  Äëèòeëüíocòü öèêëa ìoæeò
ìeíÿòücÿ â çaâècèìocòè oò ècïoëüçóeìoão êoìïèëÿòopa (èëè,  äëÿ Áeécèêa,
oò  òoão,  êoìïèëèpóeòcÿ  ïpoãpaììa  èëè  íeò).  A â íaøe âpeìÿ,  êoãäa
èìeeòcÿ áoëüøoé íaáop ìaøèí coâìecòèìûx c  IBM  PC  -  èìeþùèx  øèpoêèé
äèaïaçoí  cêopocòè  ïpoöeccopa  -  äaæe  öèêë ía ÿçûêe acceìáëepa ìoæeò
ïpèâoäèòü ê paçëè÷íûì âpeìe- íaì çaäepæêè.  Ïoýòoìó paçóìío  oïpeäeëÿòü
âpeìÿ ïpoãpaììíoé ça- äepæêè íeïocpeäcòâeíío ïo ÷acaì.  ×acòoòa oòc÷eòa
18.2 paça â ceêóíäó,  ècïoëüçóeìaÿ  äëÿ  ìoäèôèêaöèè  c÷eò÷èêa  âpeìeíè
cóòoê, äoëæía âïoëíe óäoâëeòâopÿòü áoëüøèícòâo ïoòpeáíocòeé (êaê óâeëè-
÷èòü ÷acòoòó oòc÷eòoâ.
   ×òoáû oáecïe÷èòü çaäepæêó äaííoé ïpoäoëæèòeëüíocòè, ïpoãpaììa äoëæía
ïoäc÷èòaòü  òpeáóeìoe  ÷ècëo  èìïóëücoâ  c÷eò÷èêa  âpeìeíè  cóòoê.  Ýòo
çía÷eíèe  äoáaâëÿeòcÿ  ê  c÷èòaííoìó òeêóùeìó çía÷eíèþ c÷eò÷èêa.  Çaòeì
ïpoãpaììa ïocòoÿíío c÷èòûâaeò çía÷eíèe  c÷eò÷èêa  è  cpaâíèâaeò  eão  c
çaïoìíeííûì.  Koãäa äocòèãaeòcÿ paâeícòâo, òo òpeáóeìaÿ çaäepæêa ïpoøëa
è ìoæío  ïpoäoëæaòü  âûïoëíeíèe  ïpoãpaììû.  ×eòûpe  áaéòa,  â  êoòopûx
xpaíèòcÿ  çía÷eíèe  c÷eò÷èêa  âpeìeíè cóòoê xpaíÿòcÿ,  ía÷èíaÿ c aäpeca
0040:006C (êaê oáû÷ío,  ía÷èíaÿ c ìëaäøeão áaéòa). Äëÿ çaäepæeê ìeíüøèx
14  ceêóíä ìoæío ïoëüçoâaòücÿ òoëüêo ìëaäøèì áaéòoì.  Äâa ìëaäøèx áaéòa
ïoçâoëÿþò çaäepæêè äo oäíoão ÷aca (òo÷íee,  ía ïoë-ceêóíäû ìeíüøe,  ÷eì
÷ac).

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

   Ïpo÷èòaéòe çía÷eíèe c÷eò÷èêa âpeìeíè cóòoê BIOS, ècïoëüçóÿ ôóíêöèþ 0
ïpepûâaíèÿ 1AH è äoáaâüòe ê íeìó íeoáxoäèìoe ÷ècëo  èìïóëücoâ  ïo  1/18

                                     - 8 -
ceêóíäû.  Ïocëe  ýòoão  c÷èòûâaéòe  òeêóùèe çía÷e- íèÿ c÷eò÷èêa âpeìeíè
cóòoê,  ïocòoÿíío  cpaâíèâaÿ  c  òpeáóeìoé  âeëè÷èíoé.  Ïpè  äocòèæeíèè
paâeícòâa íaäo êoí÷aòü çaäepæêó.  Ïpepûâaíèe 1AH âoçâpaùaeò äâa ìëaäøèx
áaéòa â DX (áoëüøèícòâo  çaäepæeê  óêëa-  äûâaþòcÿ  â  ýòèx  ïpeäeëax),
ïoýòoìó äâa còapøèx áaéòa,  âoçâpaùae- ìûe â CX,  ìoãóò èãíopèpoâaòücÿ,
÷òo  ïoçâoëèò  Baì  èçáeæaòü  32-áaéòíûx  oïepaöèé.  B  äaííoì  ïpèìepe
ócòaíoâëeía çaäepæêa ía 5 ceêóíä, ÷òo cooòâeòcòâóeò 91 oòc÷eòó.

;---ïoëó÷eíèe çía÷eíèÿ c÷eò÷èêa è ócòaíoâêa çaäepæêè
            MOV   AH,0   ;íoìep ôóíêöèè äëÿ "÷òeíèÿ"
            INT   1AH    ;ïoëó÷aeì çía÷eíèe c÷eò÷èêa
            ADD   DX,91  ;äoáaâëÿeì 5 ceê. ê ìëaäøeìó cëoâó
            MOV   BX,DX  ;çaïoìèíaeì òpeáóeìoe çía÷eíèe â BX
;---ïocòoÿííaÿ ïpoâepêa çía÷eíèÿ c÷eò÷èêa âpeìeíè cóòoê BIOS
REPEAT:     INT   1AH    ;ïoëó÷aeì çía÷eíèe c÷eò÷èêa
            CMP   DX,BX  ;cpaâíèâaeì c ècêoìûì
            JNE   REPEAT ;ecëè íepaâeí, òo ïoâòopÿeì cíoâa
                         ;èía÷e, çaäepæêa oêoí÷eía

AT èìeeò  äoáaâo÷íóþ  ôóíêöèþ   ïpepûâaíèÿ   15H,   êoòopaÿ   ïoçâoëÿeò
ocóùecòâèòü  çaäepæêó ía óêaçaííoe âpeìÿ.  Ïoìecòèòe 86H â AH,  a ÷ècëo
ìèêpoceêóíä çaäepæêè â CX:DX. Ïocëe ýòoão âûïoëíèòe ïpepûâaíèe.

              7. Oïepaöèè çaïpoãpaììèpoâaííûe âo âpeìeíè.

   Ïpoãpaììa oïpeäeëÿeò âpeìÿ äëÿ âûïoëíeíèÿ oïpeäeëeííoé oïepa- öèè  â
òo÷íocòè  òaê æe,  êaê è ÷eëoâeê:  áepeòcÿ ía÷aëüíoe ïoêaçaíèe c÷eò÷èêa
âpeìeíè cóòoê è çaòeì cpaâíèâaeòcÿ c ïocëeäóþùèìè ïoêa- çaíèÿìè.  Moæío
ïoëó÷aòü  çía÷eíèÿ  â ôopìaòe ÷acû-ìèíóòû-ceêóíäû,  ío cëèøêoì xëoïoòío
âû÷ècëÿòü paçíèöó ìeæäó òaêèìè ïoêaçaíèÿìè,  ïocêoëüêó cècòeìa c÷eòa íe
äecÿòè÷íaÿ.  Ëó÷øe  ïpÿìo  ÷èòaòü c÷eò÷èê âpeìeíè cóòoê BIOS,  èçìepÿòü
ïpoäoëæèòeëüíocòü â 1/18 ceêóíäû,  a çaòeì óæe ïepeâoäèòü ee â  oáû÷íûé
ôopìaò ÷÷:ìì:cc.

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

   Ïpepûâaíèe 1AH  èìeeò äâe ôóíêöèè äëÿ ócòaíoâêè (AH = 1) è ïoëó÷eíèÿ
(AH = 0) c÷eò÷èêa  âpeìeíè  cóòoê.  Äëÿ  ÷òeíèÿ  c÷eò÷èêa  íaäo  ïpocòo
âûïoëíèòü   ïpepûâaíèe  c  AH  =  0.  Ïpè  âoçâpaòe  çía÷eíèe  c÷eò÷èêa
coäepæèòcÿ â CX:DX,  ïpè÷eì ìëaäøee cëoâo â CX.  AL coäep- æèò 0,  ecëè
c÷eò÷èê  íe  ïepexoäèë  ÷epeç  ãpaíèöó  24  ÷acoâ  c  ìoìeíòa ïocëeäíeé
ócòaíoâêè. Äëÿ ócòaíoâêè c÷eò÷èêa ïoìecòèòe äâa cëoâa â òe æe peãècòpû,
a  â  AH  -  1.  B  ïpèâeäeííoì ïpèìepe èçìepÿþòcÿ ïpoìeæóòêè âpeìeíè â
ïpeäeëax ÷aca.  Ïpè ýòoì íóæíû òoëüêo äâa ìëaäøèx áaéòa c÷eò÷èêa.  Ho â
ýòoì  cëó÷ae íeoáxoäèìo ïpoâepÿòü,  ÷òo íe áûëo ïepexoäa ÷epeç ãpaíèöó,
êoãäa ía÷aëüíoe çía÷eíèe áûëo áoëüøe,  ÷eì  cëeäóþùee.  ;---â  ceãìeíòe
äaííûx  OLDCOUNT  DW 0 ;xpaíèì ía÷aëüíoe çía÷eíèe c÷eò÷èêa ;---ïoëó÷aeì
ía÷aëüíoe çía÷eíèe c÷eò÷èêa
          MOV  AH,0        ;íoìep ôóíêöèè
          INT  1AH         ;ïoëó÷aeì çía÷eíèe c÷eò÷èêa
          MOV  OLDCOUNT,DX ;coxpaíÿeì ía÷aëüíoe çía÷eíèe
           .
   (çäecü èäeò ïpoöecc, äëèòeëüíocòü êoòopoão èçìepÿeòcÿ)
           .
;---ïoçäíee âû÷ècëÿeì äëèòeëüíocòü ïpoöecca
          MOV  AH,0        ;íoìep ôóíêöèè
          INT  1AH         ;ïoëó÷aeì çía÷eíèe c÷eò÷èêa
          MOV  BX,OLDCOUNT ;c÷èòûâaeì còapoe çía÷eíèe
          CMP  BX,DX       ;ïpoâepÿeì ía ïepeïoëíeíèe

                                     - 9 -
          JG   ADJUST      ;oápaáoòêa ïepeïoëíeíèÿ
          SUB  DX,BX       ;èía÷e áepeì paçíocòü
          JMP  SHORT FIGURE_TIME  ;è ïepeâoäèì ee â oáû÷íûé âèä
;---oápaáoòêa ïepeïoëíeíèÿ
ADJUST:   MOV  CX,0FFFFH   ;ïoìeùaeì â CX ìaêcèìaëüíoe ÷ècëo
          SUB  CX,BX       ;âû÷èòaeì ïepâoe çía÷eíèe
          ADD  CX,DX       ;äoáaâëÿeì âòopoe çía÷eíèe
          MOV  DX,CX       ;peçóëüòaò xpaíèì â DX
;---ïpoöeäópa ïepeâoäa âpeìeíè â oáû÷íûé ôopìaò
FIGURE_TIME:               ;äeëèì ía 18.2 ceêóíäû è ò.ä.

               8. Óïpaâëeíèe paáoòoé â peaëüíoì âpeìeíè.

   Ïpè oïepaöèÿx  â  peaëüíoì  âpeìeíè ïpoãpaììa âûïoëíÿeò èícòpóêöèè â
óêaçaííûé ìoìeíò âpeìeíè,  a íe ïpè  ïepâoé  âoçìoæíocòè.  Taêoão  poäa
oïepaöèè  oáû÷ío  accoöèèpóþòcÿ  c  poáoòexíèêoé,  ío èìeeòcÿ ìíoæecòâo
äpóãèx  ïpèëoæeíèé.  Èìeeòcÿ  âûáop  ïoäxoäa  ê  oïepaöèÿì  â  peaëüíoì
âpeìeíè.  Äëÿ  ïpoãpaìì,  êoòopûe  íe äoëæíû íè÷eão äeëaòü â ïpoìeæóòêe
ìeæäó  èícòpóêöèÿìè,  òpeáóþùèìè  âpeìeííoé  ïpèâÿçêè,   ìoæío   ïpocòo
ïepèoäè÷ecêè   ïpoâepÿòü  c÷eò÷èê  âpeìeíè  cóòoê,  oæèäaÿ  íacòóïëeíèÿ
íóæíoão ìoìeíòa.  Taêoé ïoäxoä ïpaêòè÷ecêè  câoäèòcÿ  ê  íaáopó  ïócòûx
öèêëoâ, oïècaííûx â [2.1.5].
   Bòopoé ïoäxoä  áoëee  cëoæeí.  Oí  ècïoëüçóeòcÿ,   êoãäa   ïpoãpaììa
ïocòoÿíío  çaíÿòa  êaêoé-ëèáo  paáoòoé,  ío  oía  äoëæía â oïpeäeëeííûe
ìoìeíòû âpeìeíè ïpepûâaòü câoè  oïepaöèè  äëÿ  âûïoëíeíèÿ  oïpeäeëeííoé
çaäa÷è. B ýòoì cëó÷ae pacøèpÿþò ïpepûâaíèe òaéìepa, êoòopoe âûïoëíÿeòcÿ
18.2 paça â ceêóíäó.  Koãäa ýòo ïpepûâaíèe  ïpoècxoäèò,  äoïoëíèòeëüíûé
êoä  ïpoâepÿeò  íoâoe  çía÷eíèe  c÷eò÷èêa âpeìeíè cóòoê è ecëè íacòóïèë
oïpeäeëeííûé ìoìeíò âpeìeíè,  çaïócêaeò íóæíóþ ïpoöeäópó.  Ýòoò ïpoöecc
ïoêaçaí ía pèc.  2-3. Ïpèâeäeííûe çäecü ïpocòûe ïpèìepû ïoêaçûâaþò, êaê
coçäaòü  â   câoeé   ïpoãpaììe   áóäèëüíèê,   êoòopûé   ócòaíaâëèâaeòcÿ
ïoëüçoâaòeëeì è ïoäaeò çâóêo- âoé cèãíaë,  êoãäa ïoäoøëo âpeìÿ.  (Áoëee
cëoæíûé ïpèìep íèçêoão ópoâíÿ â [2.2.6] ècïoëíÿeò ìóçûêó,  â  òo  âpeìÿ
êoãäa ïpoöeccop çaíÿò äpóãèìè äeëaìè.)

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

   BIOS coäepæèò cïeöèaëüíoe ïócòoe ïpepûâaíèe (1CH), êoòopoe íè÷eão íe
äeëaeò, ïoêa Bû íe íaïèøèòe äëÿ íeão ïpoöeäópó. Ïpè còapòe âeêòop ýòoão
ïpepûâaíèÿ  óêaçûâaeò  ía èícòpóêöèþ IRET (âoçâpaò èç ïpepûâaíèÿ);  ïpè
eão âûçoâe ïpoècxoäèò ìoìeíòaëüíûé âoçâpaò. Ho ïpepûâaíèe 1CH èíòepecío
òeì,  ÷òo  oío âûçûâaeòcÿ ïpepûâaíèeì òaéìepa BIOS ïocëe òoão,  êaê ýòo
ïpepûâaíèe oáíoâèëo çía÷eíèe c÷eò÷èêa âpeìeíè cóòoê. Moæío cêaçaòü, ÷òo
ýòo  aïïapaòíoe  ïpepûâaíèe,  ïpoècxoäÿùee  aâòoìaòè÷ecêè  18.2  paça â
ceêóíäó.  Bû ìoæeòe èçìeíèòü âeêòop  ýòoão  ïpepûâaíèÿ  òaê,  ÷òoáû  oí
óêaçûâaë  ía  ïpoöeäópó  â Baøeé ïpoãpaììe.  Ïocëe ýòoão Baøa ïpoöeäópa
áóäeò âûçûâaòücÿ 18.2 paça â ceêóíäó.
   Haïècaííaÿ Baìè   ïpoöeäópa  äoëæía  ïpo÷èòaòü  òoëüêo  ÷òo  ìoäèôè-
öèpoâaííoe çía÷eíèe c÷eò÷èêa âpeìeíè cóòoê,  cpaâíèòü eão  c  oæèäaeìûì
âpeìeíeì,  è âûïoëíèòü òo ÷òo òpeáóeòcÿ,  êoãäa oæèäaeìoe âpeìÿ íaêoíeö
íacòóïèò.  Ecòecòâeíío,  ÷òo êoãäa âpeìÿ eùe íe ïo- äoøëo, òo ïpoöeäópa
ïpocòo  âoçâpaùaeò  óïpaâëeíèe,  íè÷eão  íe  äe-  ëaÿ.  Taêèì  oápaçoì,
ïpoöeccop íe âûïoëíÿeò ëèøíeé paáoòû.
   B ïpèâeäeííoì  ïpèìepe ïpoöeäópa (íe ïoêaçaííaÿ çäecü) çaïpaøèâaeò ó
ïoëüçoâaòeëÿ ÷ècëo ìèíóò (äo 60),  êoòopoe äoëæío ïpoéòè äo  òoão,  êaê
paçäacòcÿ   çâoíoê   áóäèëüíèêa.   Ýòo  ÷ècëo,  çaïaceííoe  â  MINUTES,
óìíoæaeòcÿ  ía  1092  äëÿ  ïepeâoäa  â  ýêâèâaëeíòíoe  ÷ècëo  èìïóëücoâ
c÷eò÷èêa  âpeìeíè cóòoê.  Äëÿ ïepèoäa â ïpeäeëax oäíoão ÷aca äocòaòo÷ío
16 áèò  -  áoëee  äëèííûe  ïepèoäû  òpeáóþò  áoëee  cëoæíûx  32-áèòoâûx

                                     - 10 -
oïepaöèé.  Ýòo  ÷ècëo  èìïóëücoâ  äoáaâëÿeòcÿ ê ìëaäøeìó cëoâó òeêóùeão
çía÷eíèÿ c÷eò÷èêa âpeìeíè cóòoê è çaïoìèíaeòcÿ â ALARMCOUNT.
   Çaòeì âeêòop  ïpepûâaíèÿ  1CH  èçìeíÿeòcÿ  òaêèì  oápaçoì,  ÷òoáû oí
óêaçûâaë ía ïpoöeäópó ALARM.  Ïoìíèòe,  ÷òo  êaê  òoëüêo  âeêòop  áóäeò
èçìeíeí,  ALARM áóäeò aâòoìaòè÷ecêè âûçûâaòücÿ 18.2 paça â ceêóíäó. Ïpè
âûçoâe ýòa ïpoöeäópa ÷èòaeò òeêóùee  çía÷eíèe  c÷eò÷èêa  âpeìeíè  cóòoê
÷epeç  ïpepûâaíèe  1AH  è cpaâíèâaeò c ALARMCOUNT.  Ïpè coâïaäeíèè ýòèx
âeëè÷èí âûçûâaeòcÿ ïpoöeäópa BEEP (òaêæe íe ïoêa- çaííaÿ çäecü, êoòopaÿ
âûäaeò çâóêoâoé cèãíaë.  B ïpoòèâíoì cëó÷ae ïpoècxoäèò âoçâpaò. Oáû÷íûé
êoä âoçâpaòa  èç  aïïapaòíûx  ïpepûâaíèé  (MOV  AH,20H  /  OUT  20H,AL)
âêëþ÷aòü â ïpoöe- äópó íe íóæío, òaê êaê oí áóäeò â ïpepûâaíèè òaéìepa.
Áóäüòe âíèìaòeëüíû è íe çaáóäüòe coxpaíèòü èçìeíÿeìûe peãècòpû.

;---â ceãìeíòe äaííûx
   MINUTES     DW    0     ;xpaíèò ÷ècëo ìèíóò äo çâoíêa
   ALARMCOUNT  DW    0     ;xpaíèò c÷eò÷èê âpeìeíè äëÿ çâoíêa

;---ócòaíoâêa oæèäaeìoão çía÷eíèÿ c÷eò÷èêa âpeìeíè cóòoê
   CALL  REQUEST_MINUTES   ;çaïpoc ÷ècëa ìèíóò äo çâoíêa
   MOV   AX,MINUTES        ;ïepecûëêa â AX
   MOV   BX,1092           ;÷ècëo èìïóëücoâ c÷eò÷èêa â ìèíóòe
   MUL   BX                ;óìíoæaeì - peçóëüòaò â AX
   ;ïoëó÷aeì òeêóùee çía÷eíèe c÷eò÷èêa
   MOV   AH,0              ;íoìep ôóíêöèè ÷òeíèÿ c÷eò÷èêa
   INT   1AH               ;÷èòaeì çía÷eíèe, ìëaäøèé áaéò â DX
   ;cêëaäûâaeì oáa çía÷eíèÿ
   ADD   AX,DX             ;
   MOV   ALARMCOUNT,AX     ;ïoëó÷aeì íóæíoe çía÷eíèe c÷eò÷èêa
;---çaìeíÿeì âeêòop ïócòoão ïpepûâaíèÿ
   PUSH  DS                ;coxpaíÿeì ceãìeíò äaííûx
   MOV   AX,SEG ALARM      ;áepeì ceãìeíò ïpoöeäópû ALARM
   MOV   DS,AX             ;ïoìeùaeì eão â DS
   MOV   DX,OFFSET ALARM   ;áepeì cìeùeíèe ïpoöeäópû
   MOV   AL,1CH            ;íoìep èçìeíÿeìoão âeêòopa
   MOV   AH,25H            ;ôóíêöèÿ èçìeíeíèÿ âeêòopa
   INT   21H               ;ìeíÿeì âeêòop
   POP   DS                ;âoccòaíaâëèâaeì ceãìeíò äaííûx
;
;---äaëüøe ïpoäoëæaeòcÿ ïpoãpaììa
;
;---â êoíöe ïpoãpaììû âoçâpaùaeì âeêòop ïpepûâaíèÿ
   MOV   DX,0FF53H         ;opèãèíaëüíûe çía÷eíèÿ äëÿ
   MOV   AX,0F000H         ;ïpepûâaíèÿ 1CH
   MOV   DS,AX             ;ïoìeùaeì ceãìeíò â DS
   MOV   AL,1CH            ;íoìep èçìeíÿeìoão âeêòopa
   MOV   AH,25H            ;íoìep ôóíêöèè
   INT   21H               ;âoccòaíaâëèâaeì âeêòop

;---ïpoöeäópa âûäa÷è çâóêoâoão cèãíaëa
ALARM    PROC FAR          ;coçäaeì äëèííóþ ïpoöeäópó
         PUSH AX           ;coxpaíÿeì èçìeíÿeìûe peãècòpû
         PUSH CX           ;
         PUSH DX           ;
;---÷èòaeì c÷eò÷èê âpeìeíè cóòoê
         MOV  AH,0         ;íoìep ôóíêöèè ÷òeíèÿ c÷eò÷èêa
         INT  1AH          ;÷èòaeì çía÷eíèe c÷eò÷èêa
;---cpaâíèâaeì c òpeáóeìûì çía÷eíèeì
         MOV  CX,ALARMCOUNT   ;áepeì òpeáóeìoe çía÷eíèe
         CMP  DX,CX        ;cpaâíèâaeì c òeêóùèì

                                     - 11 -
         JNE  NOT_YET      ;ecëè íepaâíû, òo ía âûxoä
;---âûäaeì çâóêoâoé cèãíaë, ecëè çía÷eíèÿ coâïaëè
         CALL BEEP         ;ýòa ïpoöeäópa íe ïoêaçaía
;---èía÷e âoçâpaùaeìcÿ èç ïpepûâaíèÿ
NOT_YET: POP  DX           ;âoccòaíaâëèâaeì peãècòpû
         POP  CX           ;
         POP  AX           ;
         IRET              ;âoçâpaò èç ïpepûâaíèÿ
ALARM    ENDP              ;êoíeö ïpoöeäópû
[ Íàçàä | Îãëàâëåíèå | Äàëåå ]










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