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

Coçäaíèe çâóêa

 Ecëè Bû  xoòèòe ïoëó÷èòü êaêèe-ëèáo cëoæíûe çâóêè,  òo Bû äoëæíû ïpÿìo
ïpoãpaììèpoâaòü ìèêpocxeìó òaéìepa 8253.  Kaíaë 2 ýòoé ìèêpocxeìû ïpÿìo
câÿçaí  c  äèíaìèêoì  êoìïüþòepa.  Koãäa  ýòoò  êaíaë ïpoãpaììèpóeòcÿ â
peæèìe 3,  òo oí ïocûëaeò ïpÿìoóãoëüíûe  âoëíû  äaííoé  ÷acòoòû.  Èç-ça
ïpocòoòû  äèíaìèêa  oí  cãëa- æèâaeò êpaÿ ïpÿìoóãoëüíoé âoëíû,  ïoëó÷aÿ
áoëee ïpèÿòíóþ äëÿ cëóxa cèíócoèäaëüíóþ âoëíó.  K coæaëeíèþ, ìèêpocxeìa
8253  íe  ìoæeò  ìe-  íÿòü aìïëèòóäó âoëíû,  ïoýòoìó ìû íe ìoæeì ìeíÿòü
ãpoìêocòü çâóêa, èçäaâaeìoão äèíaìèêoì.
   Äèíaìèê èìeeò íe oäèí,  a äâa âxoäa äëÿ ãeíepaöèè çâóêa. ×acòoòa èì-
ïóëücoâ êaæäoé  ìèêpocxeìû  ìoæeò  áûòü  èçìeíeía,  ïoýòoìó  êoìáèíèpóÿ
âoçäeécòâèÿ ýòèx äâóx ècòo÷íèêoâ ìû ìoæeì ïoëó÷aòü cïeöèaëüíûe çâóêoâûe
ýôôeêòû.

                          1. Ãeíepaöèÿ òoía.

  Äëÿ ýòoão äocòaòo÷ío çaïpoãpaììèpo-  âaòü  ìèêpocxeìó  òaéìepa  8253,
êoòopaÿ  paáoòaeò íeçaâècèìo oò ïpoöeccopa.  B ïpèâeäeííoì çäecü ìeòoäe
ïpoöeccop  íeïocpeäcòâeíío  óïpaâëÿeò  äèíaìèêoì,   ïoýòoìó   ïpoãpaììe
ïpèxoäèòcÿ  âûïoëíÿòü  paáo-  òó,  êoòopóþ  ìoæeò  âûïoëíÿòü ìèêpocxeìa
òaéìepa.  Xoòÿ ýòoò cïocoá áoëee òpóäeí,  ío oí  äoïócêaeò  cóùecòâeíío
áoëüøèé  êoíòpoëü  íaä  äèíaìèêoì  è  coçäaíèe  áoëüøèícòâa cïeöèaëüíûx
çâóêoâûx ýôôeêòoâ ocíoâûâaeòcÿ ía íeì.

                 C(äo)              523.3
                 D(pe)              587.3
                 E(ìè)              659.3
                 F(ôa)              698.5
                 G(coëü)            784.0
                 A(ëÿ)              880.0
                 B(cè)              987.7

×acòoòû ía oêòaâó âûøe ìoæío ïoëó÷èòü,  óäâaèâaÿ ýòè çía÷eíèÿ,  ía  äâe
oêòaâû âûøe - eùe paç óäâaèâaÿ ÷acòoòû.  È íaoáopoò,  ÷acòoòû ía oêòaâó
íèæe paâíû ïpèáëèçèòeëüío ïoëoâèíe ýòèx çía÷eíèé (xopo- øo  íacòpoeííoe
ïèaíèío òo÷ío íe cëeäóeò apèôìeòè÷ecêèì èíòepâa- ëaì).

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

   Ãeíepaöèÿ çâóêa  c  ïoìoùüþ  aäaïòepa  èíòepôeéca  c ïepèôepèeé 8255
cocòoèò âo âêëþ÷eíèè è âûêëþ÷eíèè c æeëaeìoé  ÷acòoòoé  áèòa  ïopòa  B,
êoòopûé câÿçaí c äèíaìèêoì (áèò 1).  Ïopò B èìeeò aäpec 61H (xoòÿ AT íe
èìeeò ìèêpocxeìû èíòepôeéca c ïepèôepèeé 8255 êaê òaêoâoé,  oí  ècïoëü-
çóeò  äëÿ  ýòoé  öeëè òoò æe aäpec ïopòa è òoò æe áèò).  Ecëè ïpoãpaììa
ïepeêëþ÷aeò çía÷eíèe áèòa c ìaêcèìaëüío âoçìoæíoé ÷acòoòoé,  òo ÷acòoòa
cëèøêoì âûcoêaÿ, ÷òoáû áûòü ïoëeçíoé. Ïoýòoìó ìeæäó äâóìÿ ïepeêëþ÷eíèÿ-
ìè íaäo âcòaâëÿòü ïócòoé öèêë.  Ïoìíèòe,  ÷òo áèò 0 ïopòa  B  óïpaâëÿeò
âopoòaìè  êaíaëa 2 ìèêpocxeìû òaéìepa,  êoòopûé â câoþ o÷epeäü câÿçaí c
äèíaìèêoì. Ïoýòoìó ýòoò áèò äoëæeí áûòü cápoøeí, oòcoeäèíÿÿcü oò êaíaëa
òaéìepa.
   B cëeäóþùeì  ïpèìepe  ââeäeíû  äâe  ïepeìeííûe.  Oäía,  oáoçía÷eííaÿ
"FREQUENCY",  ècïoëüçóeòcÿ  â  êa÷ecòâe  c÷eò÷èêa  â ïócòoì öèêëe ìeæäó
äeécòâèÿìè âêëþ÷eíèÿ è âûêëþ÷eíèÿ.  ×eì ìeíüøe ee çía÷eíèe, òeì áûcòpee
ïpoècxoäèò  èçìeíeíèe  áèòa  è  òeì  áoëüøe  ÷acòoòa.  Ïepe-  ìeííaÿ æe
"NUMBER_CYCLES"  ócòaíaâëèâaeò  ïpoäoëæèòeëüíocòü  òoía.  Oía   ãoâopèò
cêoëüêo  paç  äoëæeí áûòü ïoâòopeí ïpoöecc âêëþ÷eíèÿ è âûêëþ÷eíèÿ.  ×eì
áoëüøe ýòo ÷ècëo, òeì äoëüøe çâó÷èò äaííûé çâóê.

                                     - 2 -
   Oòìeòèì, ÷òo  äëÿ  ýòoé  ïpoöeäópû aïïapaòíûe ïpepûâaíèÿ äoëæíû áûòü
çaïpeùeíû.  Ïpè÷èía ýòoão â òoì,  ÷òo ïpepûâaíèe òaéìepa  ïpoècxoäèò  c
òaêoé  ÷acòoòoé  è  peãóëÿpíocòüþ (18.2 paça â ceêóíäó),  ÷òo oío áóäeò
cóùecòâeíío âëèÿòü  ía  ÷acòoòó.  Èìeéòe  ââèäó,  ÷òo  ïoêa  ïpepûâaíèÿ
çaïpeùeíû,  c÷eò÷èê  âpeìeíè  cóòoê BIOS íe áóäeò paáoòaòü.  Ecëè çaòeì
ïpo÷èòaòü eão çía÷eíèe,  òo oío áóäeò oòëè÷aòücÿ ía íeêoòopóþ  âeëè÷èíó
oò  peaëüíoão,  äo  òex  ïop,  ïoêa  íe  áóäeò  cäeëaío cooòâeòcòâóþùee
èçìeíeíèe.

NUMBER_CYCLES  EQU   1000
FREQUENCY      EQU   300
PORT_B         EQU   61H
               CLI                 ;çaïpeò ïpepûâaíèé
               MOV   DX,NUMBER_CYCLES  ;äëèòeëüíocòü òoía â DX
               IN    AL,PORT_B     ;ïoëó÷aeì çía÷eíèe èç ïopòa B
               AND   AL,11111110B  ;oòêëþ÷aeì äèíaìèê oò òaéìepa
NEXT_CYCLE:    OR    AL,00000010B  ;âêëþ÷aeì äèíaìèê
               OUT   PORT_B,AL     ;ïocûëaeì êoìaíäó â ïopò B
               MOV   CX,FREQUENCY  ;çaäepæêa ía ïoë-öèêëa â CX
FIRST_HALF:    LOOP  FIRST_HALF    ;äeëaeì çaäepæêó
               AND   AL,11111101B  ;âûêëþ÷aeì äèíaìèê
               OUT   PORT_B,AL     ;ïocûëaeì êoìaíäó â ïopò B
               MOV   CX,FREQUENCY  ;çaäepæêa ía ïoë-öèêëa â CX
SECOND_HALF:   LOOP  SECOND_HALF   ;äeëaeì çaäepæêó
               DEC   DX            ;âû÷èòaeì eäèíèöó èç c÷eò÷èêa
               JNZ   NEXT_CYCLE    ;ecëè 0, òo íaäo êoí÷aòü
               STI                 ;paçpeøaeì ïpepûâaíèÿ

         2. Ãeíepaöèÿ çâóêa oäíoâpeìeíío c äpóãèìè äeécòâèÿìè.

    Ïocêoëüêó ìèêpocxeìa    òaéìepa   8253   paáoòaeò   íeçaâècèìo   oò
ïpoöeccopa,  òo  o÷eíü  ïpocòo  ãeíepèpoâaòü  çâóê,  êoòopûé   èçäaeòcÿ
oäíoâpeìeíío   c   âûïoëíeíèeì   äpóãèx   oïepaöèé.  Bû  äoëæíû  ïpocòo
çaïpoãpaììèpoâaòü êaíaë 2 ýòoé ìèêpocxeìû  äëÿ  ãeíepaöèè  oïpeäeëeííoé
÷acòoòû, a çaòeì ïepeïpoãpaììèpoâaòü ìèêpocxeìó äëÿ âûêëþ÷eíèÿ çâóêa.

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

Mèêpocxeìa äoëæía áûòü ïpeäâapèòeëüío paçpeøeía ÷epeç ïopò B ìèêpocxeìû
èíòepôeéca c ïepèôepèeé 8255 (aäpec 61H).  Bû÷ècëèòe òpeáóeìoe çía÷eíèe
c÷eò÷èêa  äëÿ çaäâèæêè,  paçäeëèâ 1.19 ìèëëèoíoâ ía òpeáóeìóþ ÷acòoòó â
ãepöax.  Çâóê áóäeò ïpoäoëæaòücÿ äo òex  ïop,  ïoêa  íe  áóäóò  çaêpûòû
âopoòa  êaíaëa 2.  Ïoýòoìó Bû äoëæíû cápocèòü áèò 1 ïopòa B â 0,  èía÷e
çâóê áóäeò ïpoäoëæaòücÿ áecêo- íe÷ío  è  ìoæeò  áûòü  ïpeêpaùeí  òoëüêo
ïepeçaãpóçêoé êoìïüþòepa.  Äëÿ òo÷íoão peãóëèpoâaíèÿ äëèòeëüíocòè çâóêa
ìoæío ècïoëüçoâaòü c÷eò÷èê âpeìeíè cóòoê BIOS, êaê óêaçaío â [2.1.6]. B
äaííoì  ïpèìepe ãeíepèpóeòcÿ ÷acòoòa 440 ãepö.  Çâóê ïpeêpaùaeòcÿ ïocëe
íaæaòèÿ ëþáoé êëaâèøè ía êëaâèaòópe.

;---papeøeíèe êaíaëa 2 ócòaíoâêoé ïopòa B ìèêpocxeìû 8255
PORT_B     EQU  61H           ;ócòaíoâêa aäpeca ïopòa B
           IN   AL,PORT_B     ;÷òeíèe eão çía÷eíèÿ
           OR   AL,3          ;ócòaíoâêa äâóx ìëaäøèx áèòoâ
           OUT  PORT_B,AL     ;ïocûëaeì áaéò â ïopò B
;---ó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_2    EQU  42H         ;aäpec êaíaëa 2
             MOV  AL,10110110B    ;öeïo÷êa áèòoâ äëÿ êaíaëa 2
             OUT  COMMAND_REG,AL  ;çacûëêa â êoìaíäíûé peãècòp

                                     - 3 -
;---çacûëêa c÷eò÷èêa â çaäâèæêó
           MOV  AX,2705       ;c÷eò÷èê = 1190000/440
           OUT  CHANNEL_2,AL  ;ïocûëaeì ìëaäøèé áaéò
           MOV  AL,AH         ;cäâèãaeì ìëaäøèé áaéò â AL
           OUT  CHANNEL_2,AL  ;ïocûëaeì còapøèé áaéò
;---æäeì íaæaòèÿ êëaâèøè
           MOV  AH,1          ;íoìep ôóíêöèè ïpepûâaíèÿ 21H
           INT  21H           ;âûçûâaeì ïpepûâaíèe
;---âûêëþ÷eíèe çâóêa
           IN   AL,PORT_B     ;ïoëó÷aeì áaéò èç ïopòa B
           AND  AL,11111100B  ;cápacûâaeì äâa ìëaäøèx áèòa
           OUT  PORT_B,AL     ;ïocûëaeì áaéò oápaòío

                      3. Ãeíepaöèÿ íaáopa òoíoâ.

   B ýòoì  ïoäpaçäeëe  ïoêaçaío êaê ãeíepèpoâaòü öeïo÷êó çâóêoâ,  êoãäa
êoìïüþòep íè÷eì  äpóãèì  íe  çaíÿò;  â  cëeäóþùeì  áóäeò  ïoêaçaío  êaê
âûïoëíèòü  òó  æe çaäa÷ó,  êoãäa êoìïüþòep çaíÿò äpóãoé paáoòoé.  Koãäa
êoìïüþòep  íè÷eì  äpóãèì  íe  çaíÿò,  òo  ìoæío  âûâoäèòü  ìeëoäèþ  èëè
ïpoèçâoäèòü  cïeöèaëüíûe  çâóêoâûe  ýôôeêòû;  êoãäa  æe êoìïüþòep çaíÿò
äpóãoé paáoòoé, òo íeëüçÿ ïpoèçâoäèòü çâóêoâûe ýôôeêòû.
   Coçäaíèe çâóêoâûx  còpoê ÿâëÿeòcÿ oäíoé èç ìoùíeéøèx âoçìoæíoc- òeé,
ïpeäocòaâëÿeìûx Áeécèêoì.  Ïocòpoeíèe æe còpoê çâóêoâ  â  ac-  ceìáëepe
òpeáóeò  áoëüøoé  paáoòû.  Moæeò áûòü ècïoëüçoâaí ëþáoé èç äâóx ìeòoäoâ
ãeíepaöèè çâóêa.  Äëÿ oáoèx ìeòoäoâ íaäo ïpocòo ãeíepèpoâaòü oäèí òoí â
òe÷eíèè  çaäaííoão  âpeìeíè,  çaòeì  cëeäóþùèé  è ò.ä.  Kaæäaÿ çâóêoâaÿ
còpoêa ôopìèpóeòcÿ èç äâóx  còpoê  äaííûx,  oäía  èç  êoòopûx  coäepæèò
÷acòo- òû ïocëeäoâaòeëüíûx òoíoâ,  a äpóãaÿ xpaíèò èx äëèòeëüíocòè (ïpè
ócëoâèè, ÷òo òpeáóþòcÿ paçíûe äëèòeëüíocòè). Ïpoäoëæèòeëüíocòü çâó÷aíèÿ
oïpeäeëÿeòcÿ c ècïoëüçoâaíèeì c÷eò÷èêa âpeìeíè cóòoê BIOS [2.1.6].

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

   B ïpèìepe  äëÿ ãeíepaöèè çâóêa ècïoëüçóeòcÿ ìèêpocxeìa òaéìepa 8253.
Çäecü ïpocòo ècïoëíÿþòcÿ 8 íoò,  ío íeáoëüøaÿ ìoäèôèêaöèÿ ìoæeò  cèëüío
pacøèpèòü âoçìoæíocòè ýòoé ïpoöeäópû. Èìeeòcÿ òpè còpoêè äaííûx. Ïepâaÿ
ócòaíaâëèâaeò  äëèòeëüíocòü  êaæäoé  íoòû,  êaê  êpaòíoe  ïpoèçâoëüíoão
ïepèoäa çaäepæêè (èçìeíÿÿ ýòoò ïepèoä ça- äepæêè, ìoæío èçìeíÿòü òeìï).
Bòopaÿ còpoêa coäepæèò ÷acòoòû êaæäoé èç 8  íoò;  ýòè  çía÷eíèÿ  äoëæíû
áûòü   ïoìeùeíû  â   cäâèãaòücÿ  âïpaâo  ïoäa÷eé  oäíoão èëè
íecêoëüêèx cèìâoëâo ïpoáeëa èëè òaáóëÿöèè è âëeâo  ïoäa÷eé  oäíoão  èëè
íecêoëüêèx  cèìâoëoâ  "âoçâpaò  ía  øaã"  èëè cèìâoëa âoçâpaòa êapeòêè.
Äâèæeíèÿ  ocóùecòâëÿþòcÿ  íeïpepûâío  -   íe   âocïpèíèìaéòe   èx   êaê
cooòâeòcòâóþùèe  ïocëeäoâaòeëüíocòè ía oáû÷íoé ïèøóùeé ìaøèíêe.  Äo òex
ïop, ïoêa Baøa ïpoãpaììa çíaeò ía- ÷aëüíoe ïoëoæeíèe ïe÷aòaþùeé ãoëoâêè
oía  ìoæeò  êoìáèíaöèeé  ïepe-  âoäoâ  còpoêè,  ïpoáeëoâ,  òaáóëÿöèé  è
âoçâpaòoâ ía øaã ôopìaòèpo- âaòü Baø  âûâoä  â  cooòâeòcòâèè  c  Baøèìè
ïoæeëaíèÿìè.  Ïpèíòepû, êoòopûe óìeþò âûïoëíÿòü oápaòíûé ïeepâoä còpoêè
ìoãóò ècïoëüço- âaòücÿ è êaê ãpaôoïocòpoèòeëè.
   B ãpaôè÷ecêèx  peæèìax  âoçìoæío  ïepeìeùeíèe  ãoëoâêè ía ìaëûe äoëè
äþéìa.  Ïpè ïe÷aòè òeêcòa Bû ìoæeòe âoéòè â ãpaôè÷ecêèé pe- æèì,  ÷òoáû
äoáèòücÿ paçíûx ïpoìeæóòêoâ ìeæäó cëoâaìè.
   Èìeeòcÿ cïeöèaëüíûé   êoä,   êoòopûé   çacòaâëÿeò   ãoëoâêó   âceãäa

                                     - 5 -
âoçâpaùaòücÿ  â  êpaéíþþ  ëeâóþ ïoçèöèþ ïepeä ïe÷aòüþ o÷epeäíoé còpoêè,
oòìeíÿÿ äâóíaïpaâëeííóþ ïe÷aòü.  Xoòÿ ýòo çía÷èòeëüío çaìeäëÿeò ïe÷aòü,
oäíaêo ïpè ýòoì äocòèãaeòcÿ áoëee òo÷íoe ïoçèöèoíèpoâaíèe ãoëoâêè.  Ýòo
ocoáeíío ïoëeçío ïpè paáoòe â  ãpaôè÷ec-  êoì  peæèìe.  ×òoáû  âêëþ÷èòü
oäíoíaïpaâëeííóþ  ïe÷aòü íaäo ïocëaòü êoä 27,85,1,  a ÷òoáû âepíóòücÿ ê
äâóíaïpaâëeííoé ïe÷aòè - êoä 27,85,0.

                      7. Èçìeíeíèe øpèôòa ïe÷aòè.

   Øèpèía còpaíèöû 8 1/2 äþéìa ïoçâoëÿeò íaïe÷aòaòü â còpoêe  äo  80-òè
oáû÷íûx    cèìâoëoâ,    ecëè   âce   oíè   èìeþò   oäèíaêoâóþ   øèpèíó.
Ïpoïopöèoíaëüíaÿ ïe÷aòü ïoçâoëÿeò  ïoìecòèòü  â  còpoêe  eùe  íecêoëüêo
cèìâoëoâ.  C äpóãoé còopoíû,  ïëoòíaÿ ïe÷aòü ïoçâoëÿeò âûâecòè â còpoêe
132 cèìâoëa, ïe÷aòü c äâoéíoé øèpèíoé - 40 cèìâoëoâ, a ïëoòíaÿ ïe÷aòü c
äâoéíoé øèpèíoé - 64 cèìâoëa.  Èìeéòe ââèäó, ÷òo ècïoëüçoâaíèe ïe÷aòè c
paçíoé øèpèíoé â oäíoé còpoêe ïpèâeäeò ê òpóäíocòÿì c ôopìaòèpoâaíèeì.
   Áoëüøèícòâo ìaòpè÷íûx  ïpèíòepoâ  ïpeäocòaâëÿþò íaáop peæèìoâ ïe÷aòè
cïeöèaëüíûìè  øpèôòaìè.  Boò  ïepe÷eíü   còaíäapòíûx   âoçìoæíoc-   òeé
ïpeäocòaâëÿeìûx ãpaôè÷ecêèì ïpèíòepoì IBM:

Ïëoòíaÿ ïe÷aòü:
   Äëÿ âêëþ÷eíèÿ  peæèìa  ïëoòíoé  ïe÷aòè  íaäo   ïocëaòü   oäíoáaéòíûé
óïpaâëÿþùèé êoä 15.  Äëÿ âûêëþ÷eíèÿ ýòoão peæèìa - êoä 18.  Còaíäapòíaÿ
còpaíèöa øèpèíoé 8 1/2 äþéìa ïoçâoëÿeò íaïe÷aòaòü 132 cèìâoëa â  còpoêe
â ýòoì peæèìe.

Ïe÷aòü c äâoéíoé øèpèíoé:
   Äëÿ òoão,  ÷òoáû ïpèíòep  ía÷aë  ïe÷aòaòü  c  äâoéíoé  øèpèíoé  íaäo
ïocëaòü  ía  íeão  óïpaâëÿþùèé  êoä 14.  Peæèì ïe÷aòè c äâoéíoé øèpèíoé
íeoáû÷eí òeì,  ÷òo ïpèíòep aâòoìaòè÷ecêè âûêëþ÷aeò  ýòoò  peæèì,  êoãäa
âcòpe÷aeò cèìâoë âoçâpaòa êapeòêè èëè ïepeâoäa còpoêè.  Ïocêoëüêó òaêoé
âèä ïe÷aòè oáû÷ío ècïoëüçóeòcÿ  äëÿ  oäíocòpo÷íûx  çaãoëoâêoâ,  òo  ýòo
câoécòâo  óäoáío.  ×òoáû âûêëþ÷èòü ýòoò peæèì â cepeäèíe còpoêè ïoøëèòe
êoä 20.

Bûäeëeííaÿ ïe÷aòü:
   Ïpè âûäeëeííoé  ïe÷aòè  êaæäûé  cèìâoë ïe÷aòaeòcÿ äâa paça â oäíoé è
òoé æe ïoçèöèè.  Ýòo äeëaeò òo÷êè òeìíee, ÷òo coçäaeò ýôôeêò âûäeëeíèÿ.
Cêopocòü ïe÷aòè ïpè ýòoì óìeíüøaeòcÿ âäâoe.  Äëÿ âêëþ÷eíèÿ ýòoão peæèìa
ïoøëèòe êoä 27,69. Äëÿ âûêëþ÷eíèÿ - 27,70.

Ïe÷aòü ça äâa ïpoxoäa:
   B peæèìe  ïe÷aòè  ça  äâa  ïpoxoäa  áóìaãa cäâèãaeòcÿ ía 1/216 äþéìa
ïepeä âòopûì ïpoxoäoì ïe÷aòaþùeé ãoëoâêè.  Ïpè  ýòoì  ïoëó÷aþòcÿ  áoëee
çaïoëíeííûe  áóêâû,  êoòopûe  ê òoìó æe âûãëÿäÿò ÿp÷e.  Cêopocòü ïe÷aòè
óìeíüøaeòcÿ âäâoe.  Ýòoò peæèì âêëþ÷aeòcÿ óïpaâëÿþùèì  êoäoì  27,71,  a
âûêëþ÷aeòcÿ êoäoì 27,72.

Ïe÷aòü c ïoä÷epêèâaíèeì:
   Ïe÷aòü c   ïoä÷epêèâaíèeì   ìoæeò   âûïoëíÿòücÿ   äâóìÿ   cïocoáaìè.
Ãpaôè÷ecêèé  ïpèíòep  èìeeò  peæèì  ïoä÷epêèâaíèÿ,  â  êoòopoì  ïoä÷epê
ïe÷aòaeòcÿ ïoä  êaæäûì  cèìâoëoì,  âêëþ÷aÿ  ïpoáeëû.  Äëÿ  ãpaôè÷ecêoão
ïpèíòepa  IBM ýòoò peæèì âêëþ÷aeòcÿ êoäoì 27,45,1,  a âûêëþ÷aeòcÿ êoäoì
27,45,0.  Ïpèíòepû,  íe  èìeþùèe  peæèìa  ïoä÷epêèâaíèÿ  ìoãóò  cäeëaòü
ïoä÷epêè   ïpè  âòopoì  ïpoxoäe  ïo  òoé  æe  còpoêe,  ïe÷aòaÿ  cèìâoëû
ïoä÷epêèâaíèÿ (ASCII 95) â òex ìecòax,  ãäe oío íóæío è ïpoáeëû  (ASCII
32)  âo  âcex ocòaëüíûx ïoçöèöèÿx.  Bòopoé ïpoxoä äocòèãaeòcÿ òeì,  ÷òo
ïocëe ïepâoão ïpoxoäa ïoäaeòcÿ êoä âoçâpaòa êapeòêè áeç  êoäa  ïepeâoäa
còpoêè.  Bòopoé  ïpoxoä  íe  ìeøaeò  ïpèíòe-  pó ïpaâèëüío ïoäc÷èòûâaòü

                                     - 6 -
còpoêè ïpè âû÷ècëeíèè paçìepa còpaíèöû.

Ïe÷aòü c âepxíèìè è íèæíèìè èíäeêcaìè:
   Ha ãpaôè÷ecêèx  ïpèíòepax  òeêcò  c  âepxíèìè  è  íèæíèìè  èíäeêcaìè
cæèìaeòcÿ âepòèêaëüío.  Äëÿ ïe÷aòè âepxíeão èíäeêca ïoøëèòe óïpaâëÿþùèé
êoä 27,83,0,  a äëÿ ïe÷aòè íèæíeão - 27,83,1. Moæío ïpÿìo ïepexoäèòü oò
oäíèx èíäeêcoâ ê äpóãèì.  Äëÿ âûêëþ÷eíèÿ ïe÷aòè èíäeêcoâ,  c òeì, ÷òoáû
ïpèíòep oêaçaëcÿ ía òeêóùeé còpoêe ïoøëèòe óïpaâëÿþùèé êoä 27,84.

   Heêoòopûe peæèìû  íe  ìoãóò  ècïoëüçoâaòücÿ  â êoìáèíaöèè c äpóãèìè.
Ecëè Bû xoòèòe  ècïoëüçoâaòü  4  peæèìa  oäíoâpeìeíío,  òo  ïpoêoícóëü-
òèpóéòecü  co cëeäóþùeé òaáëèöeé.  B êaæäoì èç øecòè còoëáöoâ ïpèâeäeía
äoïócòèìaÿ êoìáèíaöèÿ.

   Koìáèíaöèÿ           1  2  3  4  5  6

   íopìaëüíûé           X  X
   cæaòûé                     X  X
   âûäeëeííûé                       X  X
   ça äâa ïpoxoäa       X     X     X
   c èíäeêcaìè             X     X     X
   äâoéíoé øèpèíû       X  X  X  X  X  X
   c ïoä÷epêèâaíèeì     X  X  X  X  X  X


                     8. Ïocûëêa äaííûx ía ïpèíòep.

   Ïocûëêa äaííûx ía ïpèíòep òpèâèaëüía â ÿçûêax âûcoêoão ópoâíÿ, a äëÿ
ïpoãpaììècòa ía ÿçûêe acceìáëepa èìeeòcÿ  pÿä  ôóíêöèé  oïepa-  öèoííoé
cècòeìû,    êoòopûe    äeëaþò    çaäa÷ó   òaêæe   äocòaòo÷ío   ïpocòoé.
Ïpoãpaììèpoâaíèe ía  íèçêoì  ópoâíe  òpeáóeò  áoëüøe  paáoòû,  ío  çaòo
ïpeäocòaâëÿeò   áoëüøe  âoçìoæíocòeé.  Kaê  ïpaâèëo,  ïpoöeäópû  ïe÷aòè
íèçêoão ópoâíÿ ïocûëaþò cèìâoë ía ïpèíòep,  a çaòeì ïocòoÿíío ïpoâepÿeò
peãècòp còaòóca ââoäa ïopòa,  ê êoòopoìó ïpècoeäèíeí ïpèíòep. Cëeäóþùèé
cèìâoë ïocûëaeòcÿ òoëüêo òoãäa,  êoãäa ïpèíòep  cèãíaëèçèpóeò,  ÷òo  oí
ãoòoâ  (ïpèíòep ìoæeò íe ïe÷aòaòü cèìâoë cpaçó,  a çaïacaòü eão â câoeì
áóôepe,  äo òex ïop ïoêa íe áóäeò ïoëó÷eía öeëaÿ  còpoêa  cèìâoëoâ  äëÿ
ïe÷aòè).
   Kpoìe òoão,  ïpoöeäópû íèçêoão ópoâíÿ ìoãóò ècïoëüçoâaòü  ïpepûâaíèe
ïpèíòepa  èëè  ìoãóò  èìèòèpoâaòü äeécòâèe ýòoão ïpepûâaíèÿ.  C ïoìoùüþ
cïeöèaëüíoão ïpoãpaììèpoâaíèÿ ìoæío  cäeëaòü  òaê,  ÷òo  ïpèíòep  áóäeò
äeëaòü  ïpepûâaíèe  ïpoöeíccopa,  êoãäa  oí  ãoòoâ  ê ïpèeìó cëeäóþùeão
cèìâoëa.  Ïpoöeäópa oápaáoòêè  ïpepûâaíèÿ  ïocûëaeò  cëeäóþùèé  cèìâoë,
ïocëe  ÷eão  ïpoöeccop ìoæeò ïpoäoëæaòü çaíèìaòücÿ câoèìè äeëaìè.  Ýòoò
ìeòoä ècïoëüçóeòcÿ äëÿ ôoíoâoé  ïe÷aòè  (êoòopóþ  íaçûâaþò  òaêæe  cïó-
ëèíãoì).  Ïocêoëüêó  ôèçè÷ecêèe  ï äëèía   còpaíèöû
çaïècûâaeòcÿ  â  ôopìe  0,n,  ãäe  n ìoæeò áûòü oò 1 äo 22 äþéìoâ.  Äëÿ
còaíäapòíoé còpaíèöû íaäo ïocëaòü êoìaíäó 27,67,0,11.

             6. Óïpaâëeíèe ïoëoæeíèeì ïe÷aòaþùeé ãoëoâêè.

   Ïe÷aòaeìûé òeêcò  pacïpeäeëÿeòcÿ  ïo  còpaíèöe  ÷acòè÷ío   ça   c÷eò
äâèæeíèÿ  áóìaãè,  a  ÷acòè÷ío  ça  c÷eò  äâèæeíèÿ  ïe÷aòaþùeé ãoëoâêè.
Ãoëoâêa ìoæeò áûòü ïoçèöèoíèpoâaía â ëþáoe ìecòo,  ío íe ïóòeì  çaäaíèÿ
ee êoopäèíaò.  Bìecòo ýòoão óêaçûâaeòcÿ ee cìeùeíèe, oòíocèòeëüío caìoé
ëeâoé ïoçèöèè,  êoòopóþ oía ìoæeò äocòèãaòü.  Ó ïpèíòepa íeò  äaò÷èêoâ,
cooáùaþùèx òeêóùee ïoëoæeíèe ãoëoâêè. Baøa ïpoãpaììa äoëæía oòcëeæèâaòü
ïoëoæeíèe ãoëoâêè,  ecëè oío äoëæío áûòü èçâecòíûì.  Ïpè  ýòoì  xopoøeé
ïpaêòèêoêé  ÿâëÿeòcÿ  ía÷èíaòü ïe÷aòü c ïoäa÷è óïpaâëÿþùeão êoäa 27,60,
êoòopûé cäâèãaeò ãoëoâêó â  caìóþ  ëeâóþ  ïoçèöèþ,  íe  äeëaÿ  ïepeâoäa
còpoêè (òo æe caìoe äeëaeò è êoä âoçâpaòa êapeòêè).
   Ïpè ïe÷aòè òeêcòa èìeeòcÿ íecêoëüêo cïocoáoâ ïepeäâèíóòü ão- ëoâêó â
íóæíoe  ïoëoæeíèe.  Oía  ìoæeò B     ;áepeì còaòóc ïopòa B
              OR   AL,00000011B  ;paçpeøaeì äèíaìèê è òaéìep
              OUT  PORT_B,AL     ;ïocûëaeì áaéò oápaòío
              MOV  SI,0          ;óêaçaòeëü ía còpoêè
              MOV  AL,0B6H       ;èíèöèaëèçaöèÿ êaíaëa 2 òaéìepa
              OUT  COMMAND_REG,AL   ;ïocûëaeì â êoìaíäíûé peãècòp
              MOV  FIRST_NOTE?,0    ;cápacûâaeì ôëaã ïepâoé íoòû
;---èùeì íoòó, ïoëó÷aeì ee ÷acòoòó, ïocûëaeì â êaíaë 2
NEXT_NOTE:    LEA  BX,MELODY     ;áepeì cìeùeíèe còpoêè ìeëoäèè
              MOV  SI,WHICH_NOTE ;óêaçaòeëü ía òeêóùóþ íoòó
              MOV  AL,[BX][SI]   ;êoä òeêóùeé íoòû còpoêè
              CMP  AL,0FFH       ;ïpoâepÿeì ïpèçíaê êoíöa
              JE   NO_MORE       ;ecëè äa, òo ía êoíeö
              CBW                ;èía÷e â cëoâíûé ôopìaò
   ;ïoëó÷aeì ÷acòoòó
              MOV  BX,OFFSET FREQUENCY  ;cìeùeíèe òaáëèöû ÷acòoò
              DEC  AX            ;ía÷èíaeì oòc÷eò c íóëÿ
              SHL  AX,1          ;óìíoæaeì ía 2, ò.ê. cëoâíaÿ
              MOV  DI,AX         ;aäpecóeìcÿ ÷epeç DI
              MOV  DX,[BX][DI]   ;ïoëó÷aeì ÷acòoòó èç òaáëèöû
   ;ía÷èíaeì ècïoëíeíèe íoòû
              MOV  AL,DL         ;ãoòoâèì ìëaäøèé áaéò ÷acòoòû
              OUT  LATCH2,AL     ;ïocûëaeì â peãècòp çaäâèæêè
              MOV  AL,DH         ;ãoòoâèì còapøèé áaéò
              OUT  LATCH2,AL     ;ïocûëaeì eão
;---ïócòoé öèêë, oïpeäeëÿþùèé äëèòeëüíocòü íoò
TIME_IT:      MOV  AH,0          ;ôíóêöèÿ ÷òeíèÿ c÷eò÷èêa
              INT  1AH           ;ïoëó÷aeì çía÷eíèe c÷eò÷èêa
              MOV  BX,OFFSET BEAT  ;cìeùeíèe còpoêè äëèí íoò
              MOV  CL,[BX][SI]   ;äëèòeëüíocòü òeêóùeé íoòû
              MOV  CH,0          ;
              MOV  BX,DX         ;ìëaäøee cëoâo çía÷eíèÿ c÷eò÷èêa
              ADD  BX,CX         ;äoáaâëÿeì äëèíó â èìïóëücax
              MOV  END_NOTE,BX   ;çaïoìèíaeì âpeìÿ oêoí÷aíèÿ
TIME_CHECK:   MOV  AH,0          ;ôóíêöèÿ ÷òeíèÿ c÷eò÷èêa
              INT  1AH           ;÷èòaeì c÷eò÷èê
              CMP  DX,END_NOTE   ;cpaâíèâaeì c íóæíûì
              JNE  NOT_NOW       ;ecëè íepaâío, òo âûxoäèì
              MOV  SI,WHICH_NOTE ;èía÷e, áepeì cëeäóþùóþ íoòó
              INC  SI            ;óâeëè÷èâaeì íoìep íoòû
              MOV  WHICH_NOTE,SI ;çaïoìèíaeì eão
              JMP  NEXT_NOTE     ;ía÷èíaeì cëeäóþùóþ íoòó
;---çaâepøeíèe ïpoöeäópû
NO_MORE:      IN   AL,PORT_B     ;áepeì còaòóc ïopòa B
              AND  AL,0FCH       ;âûêëþ÷aeì äèíaìèê
              OUT  61H,AL        ;âoçâpaùaeì áaéò
              MOV  SOUND_NOW?,0  ;âoccòaíaâëèâaeì ïepeìeííûe
              MOV  FIRST_NOTE?,1 ;
NOT_NOW:      POP  DS            ;âoccòaíaâëèâaeì peãècòpû
              POP  SI            ;

                                     - 7 -
              POP  DI            ;
              POP  DX            ;
              POP  CX            ;
              POP  BX            ;
              POP  AX            ;
              IRET               ;âoçâpaò èç ïpepûâaíèÿ
MELODY2       ENDP

                 5. Coçäaíèe ïëaâíoão ïepexoäa òoíoâ.

   Ïëaâíûe ïepexoäû òoíoâ ïpoèçâoäÿòcÿ ça c÷eò íeïpepûâíoão èçìe- íeíèÿ
÷acòoòû.  Ýòoò çâóêoâoé ýôôeêò ìoæío cäeëaòü áoëee âûpaçèòeëüíûì,  ecëè
íeìíoão óìeíüøaòü äëèòeëüíocòü  êaæäoão  ceãìeíòa  òoía  ïpè  ïoâûøeíèè
çâóêa èëè cëeãêa óâeëè÷èâaòü äëèòeëüíocòü ïpè ïoíèæeíèè.

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

   Ïpoùe âceão   ècïoëüçoâaòü   ìeòoä   ãeíepaöèè   çâóêa,  óïpaâëÿeìûé
ìèêpocxeìoé èíòepôeéca c ïepèôepèeé 8255.  Ïpocòo ìeíÿéòe çía÷eíèe áèòa
1 ïopòa B ìeæäó 0 è 1,  ècïoëüçóÿ äëÿ oòc÷eòa âpeìeíè ïócòoé öèêë.  Ïpè
ía÷aëe êaæäoão íoâoão ïócòoão öèêëa,  çac÷eò  çacûëêè  çía÷eíèÿ  â  CX,
cëeãêa èçìeíÿéòe ýòo çía÷e- íèe. Çäecü òoí ïoâûøaeòcÿ:

;---çaïpeò ìèêpocxeìû òaéìepa
PB       EQU  61H        ;aäpec ïopòa B ìèêpocxeìû 8255
         IN   AL,PB      ;ïoëó÷aeì èç íeão áaéò
         OR   AL,1       ;cápacûâaeì áèò 0
         OUT  PB,AL      ;âoçâpaùaeì áaéò â ïopò
;---ócòaíoâêa ÷acòoòû è äëèòeëüíocòè çâóêa
         MOV  BX,9000    ;ía÷aëüíoe çía÷eíèe c÷eò÷èêa
         MOV  DX,3000    ;äëèòeëüíocòü çâóêa 3000 öèêëoâ
REPEAT:                  ;cþäa âoçâpaùaeìcÿ ïocëe öèêëa
;---ócòaíoâêa áèòa äèíaìèêa
         OR   AL,00000010B   ;ócòaíaâëèâaeì áèò 1
         OUT  PB,AL          ;ïocûëaeì áaéò â ïopò B
         MOV  CX,BX          ;ócòaíoâêa c÷eò÷èêa äëÿ 1/2 öèêëa
CYCLE1:  LOOP CYCLE1         ;ïócòoé öèêë ía 1000 ïoâòopoâ
;---cápoc áèòa äèíaìèêa
         AND  AL,11111101B   ;cápacûâaeì áèò 1
         OUT  PB,AL          ;ïocûëaeì áaéò â ïopò
         MOV  CX,BX          ;ócòaíoâêa c÷eò÷èêa
CYCLE2:  LOOP CYCLE2         ;ïócòoé öèêë
;---ïepexoä ê cëeäóþùeìó öèêëó
         DEC  BX             ;óâeëè÷èâaeì ÷acòoòó, óìeíüøaÿ
         DEC  BX             ;c÷eò÷èê
         DEC  DX             ;óìeíüøaeì ocòaâøóþcÿ äëèòeëüíocòü
         JNZ  REPEAT         ;ecëè DX íe 0, òo íoâûé öèêë
Ýòoò ïpocòoé   ìeòoä   ïpèâoäèò  ê  òoìó,  ÷òo  âûcoêèe  òoía  ïpoxoäÿò
çía÷èòeëüío áûcòpee,  ÷eì íèçêèe.  Äëÿ êopoòêèx èíòepâaëoâ òaêoé ýôôeêò
ìoæeò áûòü æeëaòeëüíûì, a êoãäa oí íe íóæeí, íaäo äoáaâèòü êoä, êoòopûé
ïpè ïoâûøeíèè òoía ïepecûëaeò â DX áoëüøèe çía÷eíèÿ ía cëeäóþùeì öèêëe.

                    6. Coçäaíèe çâóêoâûx ýôôeêòoâ.

   Çâóêoâûe ýôôeêòû oáû÷ío äocòèãaþòcÿ íeïpepûâíûì  èçìeíeíèeì  ÷acòoòû
òoía.

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


                                     - 8 -
   Àcceìáëep ïoçâoëÿeò  ãeíepèpoâaòü íe÷ècòûe òoía,  êoãäa èíòepâaë,  â
òe÷eíèe  êoòopoão  äèíaìèê  âêëþ÷eí,  íe  paâeí  èíòepâaëó,  â  òe÷eíèe
êoòopoão  oí  âûêëþ÷eí.  Taêoe  íapóøeíèe  cèììeòpèè  ìoæeò ïpèâoäèòü ê
æóææaùèì  è  ápÿêaþùèì  çâóêaì.   Koãäa   oòíoøeíèe   ýòèx   èíòepâaëoâ
cocòaâëÿeò,  cêaæeì  50  ê  1,  òo  ïoëó÷aeì  æóææaíèe.  Ecëè óâeëè÷èòü
oòíoøeíèe eùe â  10  -  20  paç,  òo  æóææaíèe  ïepexoäèò  â  oòäeëüíûe
ápÿêaþùèe   çâóêè.   B   ëþáoì  cëó÷ae  çâóê  ãeíepèpóeòcÿ  ìèêpocxeìoé
èíòepôeéca c ïepèôe- pèeé 8255.
Boò ïpèìep æóææaíèÿ:

NUMBER_CYCLES  EQU  300     ;÷ècëo ïepeêëþ÷eíèé äèíaìèêa
FREQUENCY1     EQU  50      ;âpeìÿ, êoãäa äèíaìèê âêëþ÷eí
FREQUENCY2     EQU  3200    ;âpeìÿ, êoãäa äèíaìèê âûêëþ÷eí
PORT_B         EQU  61H     ;aäpec ïopòa B ìèêpocxeìû 8255
            CLI                  ;çaïpeò ïpepûâaíèé
            MOV  DX,NUMBER_CYCLES;DX c÷èòaeò äëèíó òoía
            IN   AL,PORT_B       ;ïoëó÷aeì còaòóc ïopòa
            AND  AL,11111110B    ;oòêëþ÷aeì äèíaìèê oò òaéìepa
NEXT_CYCLE: OR   AL,00000010B    ;âêëþ÷aeì äèíaìèê
            OUT  PORT_B,AL       ;ïocûëaeì êoìaíäó
            MOV  CX,FREQUENCY1   ;çaäepæêa äëÿ ïepâoé ÷acòè
FIRST_HALF: LOOP FIRST_HALF      ;
            AND  AL,11111101B    ;âûêëþ÷aeì äèíaìèê
            OUT  PORT_B,AL       ;ïocûëaeì êoìaíäó
            MOV  CX,FREQUENCY2   ;çaäepæêa äëÿ âòopoé ÷acòè
SECND_HALF: LOOP SECND_HALF      ;
            DEC  DX              ;óìeíüøaeì ÷ècëo öèêëoâ
            JNZ  NEXT_CYCLE      ;ecëè 0, òo ïopa êoí÷aòü
            STI                  ;paçpeøaeì ïpepûâaíèÿ

Äëÿ  coçäaíèÿ ápÿêaþùèx çâóêoâ ìoæío ècïoëüçoâaòü ýòoò æe êoä, ío
íaäo çaìeíèòü çía÷eíèe FREQUENCY2 ía âeëè÷èíó oêoëo 40000.

               7. Oäíoâpeìeííaÿ ãeíepaöèÿ paçíûx çâóêoâ.

   Toëüêo ìèêpocxeìa ãeíepaòopa çâóêa,  èìeþùaÿcÿ â PCjr,  ïoçâo-  ëÿeò
oäíoâpeìeíío  ãeíepèpoâaòü  paçíûe  çâóêè.  Oäíaêo  acceìáëep ïoçâoëÿeò
oáúeäèíèòü  äâa  cïocoáa  ãeíe-  paöèè  çâóêa,  ÷òo  coçäaeò   èìèòaöèþ
oäíoâpeìeííoé  ãeíepaöèè  äâóx  paçíûx çâóêoâ.  Èíòepôepeíöèÿ ýòèx äâóx
cèãíaëoâ ïpèâoäèò ê cëoæíoé ôopìe çâóêoâoé âoëíû. Kaæäûé èç äâóx çâóêoâ
èìeeò   ìeíüøóþ  ãpoìêocòü,  ïoýòoìó  â  peçóëüòaòe  ïoëó÷aeòcÿ  cêopee
æóææaíèe,  ÷eì äâa paçíûx ãoëoca. Ýòoò ïpèeì peaëüío ïoëeçeí òoëüêo äëÿ
coçäaíèÿ çâóêoâûx ýôôeêòoâ.

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

   Haäo ïpocòo  oáúeäèíèòü  äâa  ìeòoäa  ãeíepaöèè çâóêa.  Ha÷íèòe çâóê
÷epeç êaíaë 2 ìèêpocxeìû òaéìe- pa.  Çaòeì ìoäóëèpóéòe âûxoä  äèíaìèêa,
ça  c÷eò  áèòa  1  ïopòa  B ìèêpocxeìû èíòepôeéca c ïepèôepèeé.  Bòopoe
äeécòâèe oïpeäeëÿeò  ïpoäoëæèòeëüíocòü  çâóêa.  He  çaáóäüòe  âûêëþ÷èòü
ìèêpocxeìó òaéìepa ïpè çaâepøeíèè.

;---ía÷èíaeì ãeíepaöèþ çâóêa ÷epeç êaíaë 2 òaéìepa
      IN   AL,61H          ;ïoëó÷aeì áaéò èç ïopòa B
      OR   AL,3            ;ócòaíaâëèâaeì ìëaäøèe äâa áaéòa
      OUT  61H,AL          ;ïocûëaeì áaéò oápaòío
      MOV  AL,10110110B    ;öeïo÷êa äëÿ êoìaíäíoão peãècòpa 8253
      OUT  43H,AL          ;ïocûëaeì â peãècòp
      MOV  AX,600H         ;c÷eò÷èê äëÿ êaíaëa 2

                                     - 9 -
      OUT  42H,AL          ;ïocûëaeì ìëaäøèé áaéò
      MOV  AL,AH           ;ãoòoâèì còapøèé áaéò
      OUT  42H,AL          ;ïocûëaeì còapøèé áaéò
;---ãeíepèpóeì âòopóþ ÷acòoòó ìèêpocxeìoé 8255
NUMBER_CYCLES  EQU  9000           ;÷ècëo ïepeêëþ÷eíèé
FREQUENCY      EQU  150            ;çaäepæêa äëÿ ïoëoâèíû öèêëa
               CLI                 ;çaïpeò ïpepûâaíèé
               MOV  DX,NUMBER_CYCLES  ;DX c÷èòaeò äëèíó òoía
               IN   AL,61H         ;ïoëó÷aeì còaòóc ïopòa
               AND  AL,11111111B   ;oòêëþ÷aeì äèíaìèê oò òaéìepa
NEXT_CYCLE:    OR   AL,00000010B   ;âêëþ÷aeì äèíaìèê
               OUT  61H,AL         ;ïocûëaeì íaçaä â ïopò
               MOV  CX,FREQUENCY   ;çaäepæêa ía 1/2 öèêëa
FIRST_HALF:    LOOP FIRST_HALF     ;
               AND  AL,11111101B   ;âûêëþ÷aeì äèíaìèê
               OUT  61H,AL         ;ïocûëaeì êoìaíäó â ïopò
               MOV  CX,FREQUENCY   ;çaäepæêa ía 1/2 öèêëa
SECOND_HALF:   LOOP SECOND_HALF    ;
               DEC  DX             ;ìeíÿeì c÷eò÷èê öèêëoâ
               JNZ  NEXT_CYCLE     ;ecëè 0, òo ïopa êoí÷aòü
               STI                 ;paçpeøaeì ïpepûâaíèÿ
;---âûêëþ÷eíèe êaíaëa 2 ìèêpocxeìû òaéìepa
               IN   AL,61H         ;ïoëó÷aeì còaòóc ïopòa
               AND  AL,11111100B   ;cápacûâaeì 2 ìëaäøèx áèòa
               OUT  61H,AL         ;ïocûëaeì áaéò oápaòío
[ Íàçàä | Îãëàâëåíèå | Äàëåå ]










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