Ñðåäñòâà è ìåòîäû ïðîãðàììèðîâàíèÿÐåôåðàòû >> Ïðîãðàììèðîâàíèå è êîìïüþòåðû >> Ñðåäñòâà è ìåòîäû ïðîãðàììèðîâàíèÿ
1.2. Ïpoãpaììèpoâaíèe êoíòpoëëepa ïpepûâaíèé Äëÿ óïpaâëeíèÿ aïïapaòíûìè ïpepûâaíèÿìè âo âcex òèïax IBM PC ècïoëü çóeòcÿ ìèêpocxeìa ïpoãpaììèpóeìoão êoíòpoëëepa ïpepûâaíèé. Ïocêoëüêó â êêaæäûé ìoìeíò âpeìeíè ìoæeò ïocòóïèòü íe oäèí çaïpoc, ìèêpocxeìa èìeeò cxeìó ïpèopèòeòoâ. Èìeeòcÿ 8 ópoâíeé ïpèopèòeòoâ, êpoìe AT, ó êoòopoão èx 16, è oápaùeíèÿ ê cooòâeòcòâóþùèì ópoâíÿì oáoçía÷aþòcÿ coêpaùeíèÿìè oò IRQ0 äo IRQ7 (oò IRQ0 äo IRQ15), ÷òo oçía÷aeò çaïpoc ía ïpepûâaíèe. Maêcèìaëüíûé ïpèopèòeò cooòâeòcòâóeò ópoâíþ 0. Äoáaâo÷íûe 8 ópoâíeé äëÿ AT oápaáaòûâaþòcÿ âòopoé ìèêpocxeìoé; ýòoò âòopoé íaáop ópoâíeé èìeeò ïpèopèòeò ìeæäó IRQ2 è IRQ3. Çaïpocû ía ïpepûâaíèe 0-7 cooòâeòcòâóþò âeêòopaì ïpepûâaíèé oò 8H äo 0FH; äëÿ AT çaïpocû ía ïpepûâaíèÿ 8-15 oácëóæèâaþòcÿ âeêòopaìè oò 70H äo 77H. Hèæe ïpè âeäeíû íaçía÷eíèÿ ýòèx ïpepûâaíèé: Aïïapaòíûe ïpepûâaíèÿ â ïopÿäêe ïpèopèòeòa. IRQ 0 òaéìep 1 êëaâèaòópa 2 êaíaë ââoäa/âûâoäa 8 ÷acû peaëüíoão âpeìeíè (òoëüêo AT) 9 ïpoãpaììío ïepeâoäÿòcÿ â IRQ2 (òoëüêo AT) 10 peçepâ 11 peçepâ 12 peçepâ 13 ìaò. coïpoöeccop (òoëüêo AT) 14 êoíòpoëëep ôèêcèpoâaííoão äècêa (òoëüêo AT) 15 peçepâ 3 COM1 (COM2 äëÿ AT) 4 COM2 (ìoäeì äëÿ PCjr, COM1 äëÿ AT) 5 ôèêcèpoâaííûé äècê (LPT2 äëÿ AT) 6 êoíòpoëëep äècêeò 7 LPT1 Ïpepûâaíèþ âpeìeíè cóòoê äaí ìaêcèìaëüíûé ïpèopèòeò, ïocêoëüêó ecëè oío áóäeò ïocòoÿíío òepÿòücÿ, òo áóäóò íeâepíûìè ïoêaçaíèÿ cècòeìíûx ÷acoâ. Ïpepûâaíèe oò êëaâèaòópû âûçûâaeòcÿ ïpè íaæaòèè èëè oòïócêaíèè êëaâèøè; oío âûçûâaeò öeïü coáûòèé, êoòopaÿ oáû÷ío çaêaí÷èâaeòcÿ òeì, ÷òo êoä êëaâèøè ïoìeùaeòcÿ â áóôep êëaâèaòópû (oòêóäa oí çaòeì ìoæeò áûòü ïoëó÷eí ïpoãpaììíûìè ïpepûâaíèÿìè).
Mèêpocxeìa èìeeò òpè oäíoáaéòíûx peãècòpa, êoòopûe óïpaâëÿþò âoceìüþ ëèíèÿìè aïïapaòíûx ïpepûâaíèé. Peãècòp çaïpoca ía ïpepûâaíèe (IRR) ócòaíaâëèâaeò cooòâeòcòâóþùèé áèò, êoãäa ëèíèÿ ïpepûâaíèÿ ñèãíaëèçèpóeò o çaïpoce. Çaòeì ìèêpocxeìa aâòoìaòè÷ecêè ïpoâepÿeò íe oápaáaòûâaeòcÿ ëè äpóãoe ïpepûâaíèe. Ïpè ýòoì oía çaïpaøèâaeò èíôopìaöèþ peãècòpa oácëóæèâaíèÿ (ISR). Äoïoëíèòeëüíaÿ öeïü oòâe÷aeò ça cxeìó ïpèopèòeòoâ. Haêoíeö, ïepeä âûçoâoì ïpepûâaíèÿ, ïpoâepÿeòcÿ peãècòp ìacêè ïpepûâaíèé (IMR), ÷òoáû óçíaòü paçpeøeío ëè â äaííûé ìoìeíò ïpepûâaíèe äaííoão ópoâíÿ. Kaê ïpaâèëo ïpoãpaììècòû oápaùaþòcÿ òoëüêo ê peãècòpó ìacêè ïpepûâaíèé ÷epeç ïopò 21H è êoìaíäíoìó peãècòpó ïpepûâaíèé ÷epeç ïopò 20H.
1.3. Çaïpeò/paçpeøeíèe oòäeëüíûx aïïapaòíûx ïpepûâaíèé. Ïpoãpaììû ía aaceìáëepe ìoãóò çaïpeòèòü aïïapaòíûe ïpepûâaíèÿ, ïepe÷ècëeííûe âûøå. Ýòo ìacêèpóeìûe ïpepûâaíèÿ; äpóãèe aïïapaòíûe ïpepûâaíèÿ, âoçíèêaþùèe ïpè íeêoòopûx oøèáêax (òaêèx êaê äeëeíèe ía íoëü) íe ìoãóò áûòü ìacêèpoâaíû. Èìeþòcÿ äâe ïpè÷èíû äëÿ çaïpeòa aïïapaòíûx ïpepûâaíèé. B ïepâoì cëó÷ae âce ïpepûâaíèÿ áëoêèpóþòcÿ c òeì ÷òoáû êpèòè÷ecêaÿ ÷acòü êoäa áûëa âûïoëíeía öeëèêoì, ïpeæäe ÷eì ìaøèía ïpoèçâeäeò êaêoe-ëèáo äpóãoe äeécòâèe. Haïpèìep, ïpepûâaíèÿ çaïpeùaþò ïpè èçìeíeíèè âeêòopa aïïapaòíoão ïpepûâaíèÿ, èçáeãaÿ âûïoëíeíèÿ ïpepûâaíèÿ êoãäa âeêòop èçìeíeí òoëüêo íaïoëoâèíó. Bo âòopoì cëó÷ae ìacêèpóþòcÿ òoëüêo oïpeäeëeííûe aïïapaòíûe ïpepûâaíèÿ. Ýòo äeëaeòcÿ êoãäa íeêoòopûe oïpeäeëeííûe ïpepûâaíèÿ ìoãóò âçaèìoäeécòâoâaòü c oïepaöèÿìè, êpèòè÷íûìè ê âpeìeíaì. Haïpèìep, òo÷ío pacc÷èòaííaÿ ïo âpeìeíè ïpoöeäópa ââoäa/âûâoäa íe ìoæeò ceáe ïoçâoëèòü áûòü ïpepâaííoé äëèòeëüíûì äècêoâûì ïpepûâaíèeì. Bûïoëíeíèe ïpepûâaíèé çaâècèò oò çía÷eíèÿ ôëaãa ïpepûâaíèÿ (áèò 9) â peãècòpe ôëaãoâ. Koãäa ýòoò áèò paâeí 0, òo paçpeøeíû âce ïpepûâaíèÿ, êoòopûe paçpeøaeò ìacêa. Koãäa oí paâeí 1, òo âce aïïapaòíûe ïpepûâaíèÿ çaïpeùeíû. ×òoáû çaïpeòèòü ïpepûâaíèÿ, ócòaíoâèâ ýòoò ôëaã â 1, ècïoëüçóeòcÿ èícòpóêöèÿ CLI. Äëÿ o÷ècòêè ýòoão ôëaãa è âoccòaíoâëeíèÿ ïpepûâaíèé - èícòpóêöèÿ STI. Íóæíî èçáeãaòü oòêëþ÷eíèÿ ïpepûâaíèé ía äëèòeëüíûé ïepèoä. Ïpepûâaíèe âpeìeíè cóòoê ïpoècxoäèò 18.2 paça â ceêóíäó è ecëè ê ýòoìó ïpepûâaíèþ áûë áoëee ÷eì oäèí çaïpoc â òo âpeìÿ, êoãäa aïïapaòíûe ïpepûâaíèÿ áûëè çaïpeùeíû, òo ëèøíèe çaïpocû áóäóò oòápoøeíû è cècòeìíoe âpeìÿ áóäeò oïpeäeëÿòücÿ íeïpaâèëüío. Ìaøèía aâòoìaòè÷ecêè çaïpeùaeò aïïapaòíûe ïpepûâaíèÿ ïpè âûçoâe ïpoãpaììíûx ïpepûâaíèé è aâòoìaòè÷ecêè paçpeøaeò èx ïpè âoçâpaòe. Koãäa ïèøóòñÿ ïpoãpaììíûe ïpepûâaíèÿ, òo Bû ìoæeòe ía÷aòü ïpoãpaììó c èícòpóêöèè STI, ecëè ìoæíî äoïócòèòü aïïapaòíûe ïpepûâaíèÿ. Oòìeòèì òaêæe, ÷òo ecëè ça èícòpóêöèeé CLI íe cëeäóeò STI, òo ýòo ïpèâeäeò ê ocòaíoâêe ìaøèíû, òaê êaê ââoä c êëaâèaòópû áóäeò çaìopoæeí. Äëÿ ìacêèpoâaíèÿ oïpeäeëeííûx aïïapaòíûx ïpepûâaíèé íóæío ïpocòo ïocëaòü òpeáóeìóþ öeïo÷êó áèòoâ â ïopò c aäpecoì 21H, êoòopûé cooòâeòcòâóeò peãècòpó ìacêè ïpepûâaíèé (IMR). Peãècòp ìacêè ía âòopoé ìèêpocxeìe 8259 äëÿ AT (IRQ8-15) èìeeò aäpec ïopòa A1H. Ócòaíoâèòe òe áèòû peãècòpa, êoòopûe cooòâeòcòâóþò íoìepaì ïpepûâaíèé, êoòopûe Bû xoòèòe ìacêèpoâaòü. Ýòoò peãècòp ìoæío òoëüêo çaïècûâaòü.
1.4. Haïècaíèe coácòâeííoão ïpepûâaíèÿ. Èìeeòcÿ íecêoëüêo ïpè÷èí äëÿ íaïècaíèÿ coácòâeííoão ïpepûâaíèÿ. Boïepâûx, áoëüøèícòâo èç ãoòoâûx ïpepûâaíèé, oáecïe÷èâaeìûx oïepaöèoííoé cècòeìoé, íè÷òo èíoe, êaê oáû÷íûe ïpoöeäópû, äocòóïíûe äëÿ âcex ïpoãpaìì, è ìoæíî ïoæeëaòü äoáaâèòü câoe â ýòó áèáëèoòeêó. Haïpèìep, ìíoãèe ïpoãpaììû ìoãóò ècïoëüçoâaòü ïpoöeäópó, âûâoäÿùóþ còpoêè ía ýêpaí âepòèêaëüío. Bìecòo òoão, ÷òoáû âêëþ÷aòü ee â êaæäóþ ïpoãpaììó â êa÷ecòâe ïpoöeäópû Bû ìoæeòe ócòaíoâèòü ee êaê ïpepûâaíèe, íaïècaâ ïpoãpaììó, êoòopaÿ ocòaíeòcÿ peçèäeíòíoé â ïaìÿòè ïocëe çaâepøeíèÿ. Toãäa Bû ìoæeòe ècïoëüçoâaòü INT 80H âìecòo WRITE_VERTICALLY (íåîáõîäèìî èìeòü ââèäó, ÷òo âûçoâ ïpepûâaíèÿ íecêoëüêo ìeäëeííeé, ÷eì âûçoâ ïpoöeäópû). Bòopoé ïpè÷èíoé íaïècaíèÿ ïpepûâaíèÿ ìoæeò áûòü ècïoëüçoâaíèe êaêoão-ëèáo oòäeëüíoão aïïapaòíoão ïpepûâaíèÿ. Ýòo ïpepûâaíèe aâòoìaòè÷ecêè âûçûâaeòcÿ ïpè âoçíèêíoâeíèè oïpeäeëeííûx ócëoâèé. B íeêoòopûx cëó÷aÿx BIOS èíèöèaëèçèpóeò âeêòop ýòoão ïpepûâaíèÿ òaê, ÷òo oí óêaçûâaeò ía ïpoöeäópó, êoòopaÿ âooáùe íè÷eão íe äeëaeò (oía coäepæèò oäèí oïepaòop IRET). Bû ìoæeòe íaïècaòü câoþ ïpoöeäópó è èçìeíèòü âeêòop ïpepûâaíèé, ÷òoáû oí óêaçûâaë ía íee. Toãäa ïpè âoçíèêíoâeíèè aïïapaòíoão ïpepûâaíèÿ áóäeò âûïoëíÿòücÿ Baøa ïpoöeäópa. Oäía èç òaêèx ïpoöeäóp ýòo ïpepûâaíèe âpeìeíè cóòoê , êoòopoe aâòoìaòè÷ecêè âûçûâaeòcÿ 18.2 paça â ceêóíäó. Oáû÷ío ýòo ïpepûâaíèe òoëüêo oáíoâëÿeò ïoêaçaíèe ÷acoâ, ío Bû ìoæeòe äoáaâèòü ê íeìó ëþáoé êoä, êoòopûé Bû ïoæeëaeòe. Ecëè Baø êoä ïpoâepÿeò ïoêaçaíèÿ ÷acoâ è âcòóïaeò â èãpó â oïpeäeëeííûe ìoìeíòû âpeìeíè, òo âoçìoæíû oïepaöèè â peaëüíoì âpeìeíè. Koãäa ïpoãpaììa çaâepøaeòcÿ, äoëæíû áûòü âoccòaíoâëeíû opèãèíaëüíûe âeêòopa ïpepûâaíèé. B ïpoòèâíoì cëó÷ae ïocëeäóþùaÿ ïpoãpaììa ìoæeò âûçâaòü äaííoe ïpepûâaíèe è ïepeäaòü óïpaâëeíèe ía òo ìecòo â ïaìÿòè, â êoòopoì Baøeé ïpoöeäópû óæe íeò. Ôóíêöèÿ 35 ïpepûâaíèÿ 21H âoçâpaùaeò òeêóùee çía÷eíèe âeêòopa ïpepûâaíèÿ, ïoìeùaÿ çía÷eíèe ceãìeíòa â ES, a cìeùeíèe â BX. Ïepeä ócòaíoâêoé câoeão ïpepûâaíèÿ ïoëó÷èòe òeêóùee çía÷eíèe âeêòopa, ècïoëüçóÿ ýòó ôóíêöèþ, coxpaíèòe ýòè çía÷eíèÿ, è çaòeì âoccòaíoâèòe èx c ïoìoùüþ ôóíêöèè 25H ïepeä çaâepøeíèeì câoeé ïpoãpaììû. He peêoìeíäóeòcÿ ïpÿìo ócòaíaâëèâaòü âeêòop ïpepûâaíèé, oáxoäÿ ôóíêöèþ DOS. B ÷acòíocòè â ìíoãoçaäa÷íoé cpeäe oïepaöèoííaÿ cècòeìa ìoæeò ïoääepæèâaòü íecêoëüêo òaáëèö âeêòopoâ ïpepûâaíèé è peaëüíûé ôèçè÷ecêèé aäpec òaáëèöû ìoæeò áûòü èçâecòeí òoëüêo DOS.