Organizarea întreruperilor imbricate. AVR. Curs de pregatire. Vector de întrerupere controlat Întreruperile vectorizate

Pentru gestionarea evenimentelor care apar asincron în ceea ce privește execuția programului, este cel mai potrivit mecanism de întrerupere.

Întrerupe poate fi considerat ca un eveniment special din sistem care necesită un răspuns imediat. De exemplu, sistemele bine concepute de înaltă fiabilitate utilizează o întrerupere a căderii de curent pentru a efectua proceduri de scriere a conținutului registrelor și RAM pe medii magnetice, astfel încât, atunci când alimentarea este restabilită, lucrul poate continua din același loc.

Pare clar că o mare varietate de întreruperi sunt posibile din mai multe motive. Prin urmare, o întrerupere nu este considerată doar ca atare, ci are asociat un număr, numit număr de tip de întrerupere sau pur și simplu număr de întrerupere. Fiecare număr de întrerupere este asociat cu unul sau altul. Sistemul este capabil să recunoască ce întrerupere a avut loc cu ce număr și începe procedura corespunzătoare acestui număr.

Programele pot provoca ele însele întreruperi cu un anumit număr. Pentru a face acest lucru, ei folosesc comanda INT. Acestea sunt așa-numitele întreruperi software. Întreruperile software nu sunt asincrone, deoarece sunt apelate din program (și știe când apelează o întrerupere!).

Întreruperile software sunt convenabile de utilizat pentru a organiza accesul la module individuale comune tuturor programelor. De exemplu, modulele de program ale sistemului de operare sunt accesibile programelor de aplicație prin întreruperi și nu este nevoie să cunoască adresa lor curentă în memorie atunci când apelați aceste module. Programele de aplicație își pot instala propriile manevre de întrerupere pentru a fi utilizate ulterioare de către alte programe. Pentru a face acest lucru, gestionatorii de întreruperi încorporați trebuie să fie rezidenți în memorie.

Întreruperile hardware sunt cauzate de dispozitive fizice și ajung în mod asincron. Aceste întreruperi informează sistemul despre evenimente legate de funcționarea dispozitivelor, de exemplu, că imprimanta a terminat în sfârșit de imprimat un caracter și ar fi bine să emită următorul caracter sau că sectorul de disc necesar a fost deja citit și conținutul acestuia. sunt disponibile programului. Utilizarea întreruperilor atunci când lucrați cu dispozitive externe lente vă permite să combinați I/O cu procesarea datelor în procesorul central și, ca rezultat, îmbunătățește performanța generală a sistemului. Unele întreruperi (primele cinci în ordine numerică) sunt rezervate pentru utilizare de către CPU însuși în cazul oricăror evenimente speciale, cum ar fi o încercare de împărțire la zero, depășire etc.

Uneori este de dorit ca sistemul să fie insensibil la toate sau la întreruperile individuale. Pentru aceasta folosesc așa-numitele întrerupe mascarea. Dar unele întreruperi nu pot fi mascate; acestea sunt întreruperi nemascabile.

De asemenea, rețineți că gestionatorii de întreruperi pot apela ei înșiși întreruperi software, de exemplu, pentru a obține acces la serviciul BIOS sau DOS (serviciul BIOS este disponibil și prin mecanismul de întrerupere software).

Crearea propriilor programe de gestionare a întreruperilor și înlocuirea handlerelor standard DOS și BIOS este o muncă responsabilă și complexă. Este necesar să se țină cont de toate subtilitățile funcționării echipamentului și de interacțiunea dintre software și hardware. La depanare, este posibil să distrugi sistemul de operare cu consecințe imprevizibile, așa că trebuie să monitorizezi cu mare atenție ceea ce face programul tău.

Pentru a asocia adresa operatorului de întrerupere cu numărul de întrerupere, utilizați tabel de vectori de întrerupere, ocupând primul kilobyte de RAM - adrese de la 0000:0000 la 0000:03FF. Tabelul este format din 256 de elemente - adrese FAR ale manipulatorilor de întreruperi. Aceste elemente sunt numite vectori de întrerupere. Primul cuvânt al elementului de tabel conține offset-ul, iar al doilea cuvânt conține adresa segmentului de gestionare a întreruperilor.

Întreruperea numărul 0 corespunde adresei 0000:0000, întreruperea numărul 1 corespunde adresei 0000:0004 etc.

Tabelul este inițializat parțial de BIOS după testarea hardware-ului și înainte ca sistemul de operare să înceapă să se încarce și parțial la încărcarea DOS. DOS poate prelua unele întreruperi ale BIOS-ului.

Să ne uităm la conținutul tabelului vector de întrerupere. Iată scopul unora dintre cei mai importanți vectori:

Descriere

Eroare de divizare. Apelat automat după executarea unei comenzi DIV sau IDIV dacă diviziunea are ca rezultat o depășire (de exemplu, împărțirea cu 0). DOS tipărește de obicei un mesaj de eroare atunci când gestionează această întrerupere și oprește executarea programului. Pentru procesorul 8086, adresa de retur indică către următoarea instrucțiune după instrucțiunea de divizare, iar în procesorul 80286 - către primul octet al instrucțiunii care a provocat întreruperea.

Întrerupeți modul pas. Produs după execuția fiecărei instrucțiuni de mașină, dacă bitul de urmărire pas cu pas TF este setat în cuvântul flag. Folosit pentru programe de depanare. Această întrerupere nu este generată după executarea unei instrucțiuni MOV în registrele de segment sau după încărcarea registrelor de segment cu o instrucțiune POP.

Întreruperea hardware nemascabilă. Această întrerupere poate fi utilizată diferit pe diferite mașini. De obicei, este generată atunci când există o eroare de paritate în RAM și când este solicitată o întrerupere de la coprocesor.

Întreruperea pentru urmărire. Această întrerupere este generată de execuția unei instrucțiuni de mașină de un octet cu codul CCh și este folosită în mod obișnuit de depanatori pentru a seta un punct de întrerupere.

Revărsare. Generat de instrucțiunea mașină INTO dacă steag-ul OF este setat. Dacă flag-ul nu este setat, atunci instrucțiunea INTO este executată ca NOP. Această întrerupere este utilizată pentru a gestiona erorile la efectuarea operațiilor aritmetice.

Imprimați o copie a ecranului. Generat prin apăsarea tastei PrtScr de pe tastatură. Utilizat de obicei pentru a imprima o imagine pe ecran. Pentru procesorul 80286, generat la executarea instrucțiunii de mașină BOUND dacă valoarea testată este în afara intervalului specificat.

Opcode nedefinit sau lungime a instrucțiunii mai mare de 10 octeți (pentru procesorul 80286).

Un caz special al absenței unui coprocesor matematic (procesor 80286).

IRQ0 - întreruperea temporizatorului de interval, are loc de 18,2 ori pe secundă.

IRQ1 - întrerupere de la tastatură. Generat atunci când o tastă este apăsată sau eliberată. Folosit pentru a citi date de la tastatură.

IRQ2 - folosit pentru întreruperi hardware în cascadă în mașinile din clasa AT.

IRQ3 - întreruperea portului asincron COM2.

IRQ4 - întreruperea portului asincron COM1.

IRQ5 - întrerupere de la controlerul de hard disk pentru XT.

IRQ6 - întreruperea este generată de controlerul dischetei după finalizarea operației.

IRQ7 - întrerupere a imprimantei. Generat de imprimantă atunci când este gata să efectueze o altă operație. Multe adaptoare de imprimantă nu folosesc această întrerupere.

Întreținere adaptor video.

Determinarea configurației dispozitivelor din sistem.

Determinarea dimensiunii RAM din sistem.

Întreținerea sistemului de discuri.

I/O serial.

Serviciu avansat pentru calculatoare AT.

Întreținerea tastaturii.

Întreținere imprimante.

Rulați BASIC în ROM, dacă este disponibil.

Serviciu de ceasuri.

Managerul de întreruperi Ctrl-Break.

Întreruperea are loc de 18,2 ori pe secundă și este apelată programatic de către gestionarea întreruperii temporizatorului.

Adresa tabelului video pentru controlerul adaptorului video 6845.

Indicator către tabelul cu parametrii dischetei.

Indicator către un tabel grafic pentru caractere cu coduri ASCII 128-255.

Folosit de DOS sau rezervat pentru DOS.

Întreruperi rezervate utilizatorului.

Nefolosit.

IRQ8 - întrerupere a ceasului în timp real.

IRQ9 - întrerupere de la controlerul EGA.

IRQ10 - rezervat.

IRQ11 - rezervat.

IRQ12 - rezervat.

IRQ13 - întrerupere de la coprocesorul matematic.

IRQ14 - întrerupere de la controlerul hard diskului.

IRQ15 - rezervat.

Nefolosit.

Rezervat pentru BASIC.

Folosit de interpretul BASIC.

Sistemul de operare este controlat în mare măsură de sistemul de întrerupere. În modul real, există 2 tipuri de întreruperi: hardware și software. Întreruperile software sunt inițializate cu comanda int. Hardware - evenimente externe care sunt asincrone cu programul care rulează. De obicei, întreruperile hardware sunt inițiate de hardware-ul I/O după finalizarea operațiunii curente.

Pentru a gestiona întreruperile în modul real, procesorul folosește un tabel vectorial de întreruperi. Adresele de segment utilizate pentru a localiza rutinele de întrerupere se numesc vectori de întrerupere.

Tabelul vector de întrerupere este situat chiar la începutul OP-ului, adică. adresa sa fizică = 0. Tabelul vector de întrerupere este format din 256 de elemente a câte 4 octeți. Vectorii constau dintr-o adresă de segment de 16 biți și un offset de 16 biți (offset-ul vine mai întâi și apoi segmentul). Fiecare vector de întrerupere are propriul său număr, numit număr de întrerupere, care indică locul său în tabel. Acest număr, înmulțit cu 4, dă adresa absolută a vectorului de memorie.

Vectorii de întrerupere își primesc valorile atunci când sistemul pornește. În primul rând, BIOS-ul, atunci când efectuează proceduri de inițializare, stabilește valorile anumitor vectori de întrerupere. Când DOS pornește, valorile sunt atribuite vectorilor de întrerupere DOS.

DOS poate realoca unii dintre vectorii BIOS rutinelor sale. De asemenea, utilizatorul poate modifica valorile vectorului de întrerupere. Când are loc o întrerupere software sau hardware, starea curentă a registrelor CS:IP, precum și valorile registrului de steaguri, sunt scrise în stiva de programe. Apoi, noile valori CS:IP sunt selectate din tabelul de vectori de întrerupere. În acest caz, controlul este transferat către procedura de gestionare a întreruperilor.

Înainte de a intra în procedura de gestionare a întreruperilor, indicatorul de urmărire TF și indicatorul de activare a întreruperii IF sunt șterse forțat. După finalizarea procesării întreruperii, procedura trebuie să emită comanda IRET, care va scoate din stivă valorile registrelor CS:IP și ale registrului de steaguri. Apoi, execuția programului întrerupt continuă.

Procedura de gestionare a întreruperilor trebuie să se încheie cu procedura IRET, după care se citesc valorile steagurilor, CS, IP.

  • 5.Organizarea unui sistem cu microprocesor (MPS): principiul principal-modular de organizare a MPS, principalele clase de mijloace de microprocesor. Sistem cu microprocesor (MPS)
  • 6. Structuri tipice ale căii ferate metropolitane: linie principală, principal-cascada, principal-radial.
  • 7. Organizarea magistralei sistemelor cu microprocesoare: cu o magistrala, cu doua tipuri de autobuze, cu trei tipuri de autobuze.
  • 8. Caracteristicile microprocesoarelor.
  • 9. Organizarea coloanei vertebrale a sistemului cu microprocesor. Autobuz cu trei magistrale cu adrese separate și magistrale de transmisie de date.
  • 10. Cicluri de acces la autostradă.
  • 11. Organizarea accesului la autostrada cu acces sincron.
  • 12. Organizarea accesului la autostrada cu acces asincron.
  • 13. Combinație de magistrală de adrese și magistrală de date. Autobuz cu două magistrale cu magistrale combinate de adrese/date.
  • 14. Mecanism de transmisie de pachete de date prin magistrala de sistem.
  • 15. Arhitectura subsistemului de memorie al unui sistem cu microprocesor. Caracteristicile subsistemului de memorie al unui sistem cu microprocesor
  • 16. Memorie de adrese (dispozitive de stocare cu acces aleatoriu).
  • 17. Memoria asociativă.
  • 18. Stiva de memorie.
  • 19. Memoria principală: scheme bloc, ciclice și bloc-ciclice pentru organizarea memoriei principale.
  • 20. Memoria cache. Principiile memoriei cache.
  • 21. Metode de mapare a memoriei principale cu memoria cache. Arhitecturi cache.
  • 22.Algoritmi pentru înlocuirea informațiilor într-o memorie cache completă.
  • 23. Algoritmi de reconciliere a conținutului memoriei cache cu memoria principală.
  • 24.Conceptul de memorie virtuală.
  • 25.Organizarea de paginare a memoriei virtuale.
  • 26.Organizarea pe segmente a memoriei virtuale. Organizarea combinată segment-pagină a memoriei virtuale.
  • 27.Arhitectura subsistemului de intrare/ieșire al sistemului cu microprocesor.
  • 28.Organizarea întreruperilor într-un sistem cu microprocesor.
  • 29.Sistem de întrerupere radială.
  • 30. Sistem de întrerupere vectorială.
  • 31.Organizarea accesului direct la memorie într-un sistem cu microprocesor.
  • 32.Arhitectura bateriei microprocesoarelor.
  • 33.Arhitectura de registru a microprocesoarelor.
  • 34. Arhitectura microprocesoarelor cu acces la memorie dedicată.
  • 35.Arhitectura stivei de microprocesoare.
  • 36. Clasificarea comenzilor microprocesorului.
  • 37.Structura (formatele) comenzilor microprocesorului.
  • 38. Structuri de înregistrare ale microprocesoarelor
  • 39. Adresarea datelor în microprocesoare: prezentarea informațiilor de adresă, metode de adresare.
  • 40.Gestionarea memoriei în microprocesoare: adresare liniară și segmentară, conversia adreselor logice în cele fizice, gestionarea memoriei virtuale.
  • 41.Protecția memoriei în microprocesoare: mecanisme de protecție, concept de privilegii.
  • 42. Suport sistem de operare în microprocesoare.
  • 43.Intreruperi speciale (cazuri speciale, exceptii) la microprocesoare.
  • 44.Modul de funcționare cu mai multe programe al microprocesoarelor.
  • 45. Organizarea structurală a microcontrolerelor cu un singur cip (folosind exemplul microcontrolerelor pe 8 biți): principiu de proiectare modulară, tipuri de nuclee de procesor.
  • 46.Memoria rezidentă (internă) a microcontrolerelor.
  • 47. Periferice microcontroller: porturi paralele de intrare/ieșire, temporizatoare și procesoare de evenimente, interfețe seriale de intrare/ieșire.
  • 48. Bazele organizării interfețelor sistemelor cu microprocesoare.
  • 49.Clasificarea interfețelor.
  • 50.Organizarea transmisiei paralele de date.
  • 51.Organizarea transmiterii datelor în serie.
  • 52. Fundamentele proiectării sistemelor cu microprocesoare: ciclul de proiectare MPS, instrumente de dezvoltare și depanare MPS.
  • 30. Sistem de întrerupere vectorială.

    Creșterea eficienței sistemului de întrerupere este asociată cu transferul funcției de identificare a unității de control care a solicitat service către mijloace externe procesorului. ÎN vector sistem întrerupe Entitatea utilizator care a solicitat serviciul se identifică folosind vector întrerupe, care este acceptat de MP. În general, este necesară o magistrală specială pentru a transmite vectorul de întrerupere. Cu toate acestea, de regulă, este combinat fizic cu magistrala de date magistrală de sistem, iar vectorul de întrerupere este introdus într-un ciclu de magistrală special, care se numește ciclu confirmare întrerupe. Această combinație necesită includerea liniei de confirmare a întreruperii INTA în magistrala de control, prin care se transmite un semnal de la procesor, permițând emiterea unui vector de întrerupere ca răspuns la o solicitare de întrerupere din partea unității de control. MP, după ce a primit vectorul de întrerupere, trece imediat la executarea rutinei de procesare a întreruperilor necesare. La fel ca sistemul radial, sistemul de întrerupere vectorială presupune că fiecare unitate de control are propria sa rutină de procesare a întreruperilor. În acest caz, vectorul de întrerupere determină la ce rutină de întrerupere ar trebui să transfere procesorul controlul.

    Vectorul de întrerupere poate fi:

    comanda completă a apelului subrutinei împreună cu adresa subrutinei serviciului de întrerupere;

    adresa rutinei serviciului de întrerupere;

    indică adresa rutinei serviciului de întrerupere. Pointerul poate fi folosit fie adresa la care este stocată în memorie adresa rutinei serviciului de întrerupere (uneori un astfel de pointer este numit adresa vectorului de întrerupere), fie tipul de întrerupere.

    Există două abordări pentru construirea unui sistem vector de întrerupere, care diferă în metoda utilizată pentru a genera vectorul de întrerupere. Prima abordare folosește o metodă de control descentralizată - determinarea cererii cu cea mai mare prioritate și generarea unui vector de întrerupere este efectuată direct de unitatea de control. A doua abordare folosește metoda de control centralizat și constă în transferul funcției de generare a vectorului de întrerupere la un dispozitiv special - controlerul de întrerupere.

    La formare vector întrerupe mijloacePU Logica sondajului software este transferată la hardware - determinarea cererii cu cea mai mare prioritate se realizează utilizând un sondaj hardware al pregătirii unității de control. Această abordare se numește hardware sondaj. Liniile de solicitare de la toate unitățile de control sunt combinate conform schemei „SAU montat” și conectate la linia comună de cerere de întrerupere IRQ a procesorului (Fig. 40).

    Figura 40 – Formarea vectorului de întrerupere prin intermediul panoului de control

    Când un procesor primește o solicitare de întrerupere prin linia IRQ, generează un semnal de control de confirmare a întreruperii INTA, care este mai întâi trimis controlerului unității de control cea mai apropiată de procesor. Dacă acest PU nu a necesitat întreținere, atunci controlerul său transmite semnalul de confirmare a întreruperii următorului controler, altfel propagarea ulterioară a semnalului se oprește și controlerul emite un vector de întrerupere pe magistrala de date. Această schemă are un caracter de buclă pronunțat. O linie de confirmare a întreruperii trece secvenţial prin controlerele PU şi formează o structură de prioritate secvenţială numită lanț de margarete. Prioritatea este determinată de poziția fizică a fiecărui UP. Unitatea de control cea mai apropiată de procesor are cea mai mare prioritate.

    Daisy lanț are două avantaje. În primul rând, este necesară o singură linie de cerere de întrerupere în magistrala de sistem (o linie de solicitare este utilizată și într-un sistem cu interogare software a pregătirii unității de control, dar interogarea hardware a pregătirii unității de control este mult mai rapidă). În al doilea rând, o nouă unitate de control cu ​​orice prioritate necesară poate fi introdusă în sistem prin simpla conectare la poziția fizică dorită. Numărul de unități de control din sistem este limitat doar de numărul de vectori de întrerupere. Cu toate acestea, lanțul în margaretă este mai lent decât metoda paralelă implementată în controlerul de întrerupere, deoarece semnalul de confirmare a întreruperii este propagat secvenţial prin fiecare PU. Un alt dezavantaj al structurii buclei este dificultatea de a gestiona prioritățile. PU situate în lanțul mai aproape de procesor au o prioritate mai mare, așa că schimbarea priorităților necesită schimbarea secvenței de comutare a PU, ceea ce este dificil în multe cazuri. Cel mai eficient sistem de întrerupere vectorială este implementat folosind un controler de întrerupere (Fig. 41)

    Figura 41 – Sistem de întrerupere vectorială bazat pe controler de întrerupere

    Controlor întrerupe (CPR) poate fi considerată ca o extensie a procesorului, din acest motiv este numit uneori coprocesor de întrerupere. Pe baza CPR, se formează un sistem de întrerupere vector cu prioritate pe mai multe niveluri. CRC asigură recepția și procesarea N cereri de întrerupere. Logica de prioritate KPR selectează cererea cu cea mai mare prioritate dintre cererile de întrerupere primite și o compară cu prioritatea curentă a cererii deservite. Când prioritatea curentă este depășită, CPR generează un semnal de cerere de întrerupere INT, care este trimis procesorului. MP confirmă primirea cererii INT prin generarea unui semnal de confirmare a întreruperii INTA, în răspuns la care CPR emite vectorul de întrerupere corespunzător magistralei de date magistrală de sistem. Atâta timp cât o solicitare este în serviciu, toate solicitările cu prioritate egală sau mai mică sunt ignorate. În același timp, cererile cu prioritate mai mare determină generarea unui semnal INT, declanșând întreruperi imbricate. Pentru a controla rapid funcționarea controlerului, este posibil să îl programați, ceea ce vă permite să schimbați în mod dinamic prioritățile solicitărilor, vectorii de întrerupere generați etc.

    "

    Aici vom discuta subiecte importante precum: gestionarea întreruperilor, vectori de întrerupere, întreruperi software, IRQ, în general, să vorbim despre întreruperi.

    Idee întrerupe a fost propus la mijlocul anilor 50, iar scopul principal al introducerii întreruperilor a fost implementarea unui mod de funcționare sincron și implementarea funcționării în paralel a dispozitivelor individuale de calculator.

    întreruperiȘi manipularea întreruperii depind de tipul de computer, prin urmare implementarea lor este clasificată ca proprietăți dependente de mașină ale sistemelor de operare.

    Întrerupe(întrerupere) este un semnal care determină computerul să schimbe ordinea obișnuită de execuție a instrucțiunilor de către procesor.

    Apariția unor astfel de semnale se datorează astfel evenimente, Cum:

    • finalizarea operațiunilor I/O.
    • expirarea unui interval de timp prestabilit.
    • încercarea de a împărți la zero.
    • defecțiune hardware etc.

    Manevrarea întreruperii

    Fiecare întrerupere are asociat un număr, numit numărul tipului de întrerupere sau pur și simplu numărul de întrerupere. Sistemul poate recunoaște ce întrerupere, cu ce număr a apărut și lansează programul de procesare a întreruperilor corespunzător acestui număr. Astfel, atunci când se primește un semnal de întrerupere, controlul este forțat să fie transferat de la programul de execuție către sistem și, prin intermediul acestuia, către manipulatorul de întrerupere.

    De exemplu întrerupe cu numărul 9 - o întrerupere a tastaturii, care este generată atunci când o tastă este apăsată și eliberată. Folosit pentru a citi date de la tastatură. Notat în sistemul de operare ca IRQ 1, unde IRQ este desemnarea întreruperii, iar 1 este prioritatea întreruperii. Datele cererii de întrerupere pot fi analizate în Device Manager:

    Manager de întreruperi– un program de gestionare a întreruperilor, care face parte din sistemul de operare, conceput să efectueze acțiuni ca răspuns la condiția care a provocat întreruperea.

    Să presupunem că atunci când un semnal de întrerupere vine de la o sursă, programul A este în soluție. Ca rezultat, controlul este transferat automat către gestionarea întreruperilor. După finalizarea procesării, controlul poate fi transferat din nou în punctul din programul A unde execuția sa a fost întreruptă:

    Vectori de întrerupere

    Adresele programelor corespunzătoare diferitelor întreruperi sunt colectate într-un tabel numit tabel de vectori de întrerupere.

    Microprocesorul necesită o modalitate simplă de a determina locația rutinei serviciului de întrerupere și acest lucru se realizează prin utilizarea tabelele vectoriale de întrerupere.

    Întreruperea tabelului vectorial ocupă primul kilobyte de RAM - adrese de la 0000:0000 la 0000:03FF. Tabelul este format din 256 de elemente - adrese FAR ale manipulatorilor de întreruperi. Aceste elemente sunt numite vectori de întrerupere. Primul cuvânt al elementului de tabel conține offset-ul, iar al doilea cuvânt conține adresa segmentului de gestionare a întreruperilor. Vectorii sunt pur și simplu adrese complete de memorie de program (în formă segmentată) care trebuie activate atunci când apare o întrerupere.

    Întreruperea numărul 0 corespunde adresei 0000:0000, întreruperea numărul 1 corespunde adresei 0000:0004 etc. Această adresă constă dintr-o pereche de cuvinte de 2 octeți, astfel încât fiecare vector ocupă patru octeți.

    Puteți vizualiza tabelul vector de întrerupere pe computer dacă utilizați programul DEBUG. Utilizați comanda D pentru a imprima conținutul începutului memoriei: D 0:0. Programul DEBUG vă va arăta primii 128 de octeți sau 32 de vectori, care ar putea arăta cam așa:

    0000:0000 E8 4E 9A 01 00 00 00 00-C3 E2 00 F0 00 00 00 00
    0000:0010 F0 01 70 00 54 FF 00 F0-05 18 00 F0 05 18 00 F0
    0000:0020 2C 08 51 17 D0 0A 51 17-AD 08 54 08 E8 05 01 2F
    0000:0030 FA 05 01 2F 05 18 00 F0-57 EF 00 F0 F0 01 70 00
    0000:0040 90 13 C7 13 4D F8 00 F0-41 F8 00 F0 3E 0A 51 17
    0000:0050 5C 00 B7 25 59 F8 00 F0-E2 0A 51 17 9C 00 B7 25
    0000:0060 00 00 00 F6 8E 00 DE 09-6E FE 00 F0 F2 00 7B 09
    0000:0070 27 08 51 17 A4 F0 00 F0-22 05 00 00 00 00 00 F0

    Vectorii sunt stocați ca „cuvinte în sens invers”: mai întâi decalajul, apoi segmentul. De exemplu, primii patru octeți pe care DEBUG i-a arătat mai sus (E8 4E 9A 01) pot fi convertiți la adresa segmentată 019A:4EE8.

    Puteți găsi trei tipuri de adrese în tabel vectorial. Acestea pot fi adrese care indică către ROM-BIOS, care pot fi identificate prin cifra hexazecimală F care precede numărul segmentului. Acestea pot fi adrese care indică către memoria principală (ca în exemplu: 019A:4EE8). Aceste adrese pot indica rutine DOS sau un program rezident (cum ar fi SideKick sau Prokey), sau pot indica programul DEBUG în sine (deoarece DEBUG trebuie să controleze temporar întreruperea). Vectorii pot consta, de asemenea, doar din zerouri atunci când întreruperea cu acest număr nu este procesată în prezent.

    Tabelul este inițializat parțial de BIOS după testarea hardware-ului și înainte ca sistemul de operare să înceapă să se încarce și parțial când sistemul de operare pornește.

    Mai jos este scopul unor vectori:

    Descriere
    0 Eroare de divizare. Apelat automat după executarea unei comenzi DIV sau IDIV dacă împărțirea are ca rezultat un depășire (de exemplu, împărțirea cu 0).
    2 Întreruperea hardware nemascabilă. Această întrerupere poate fi utilizată diferit pe diferite mașini. De obicei, este generată atunci când există o eroare de paritate în RAM și când este solicitată o întrerupere de la coprocesor.
    5 Imprimați o copie a ecranului. Generat prin apăsarea tastei PrtScr de pe tastatură. Utilizat de obicei pentru a imprima o imagine pe ecran.
    8 IRQ0 - întreruperea temporizatorului de interval, are loc de 18,2 ori pe secundă.
    9 IRQ1 - întrerupere de la tastatură. Generat atunci când o tastă este apăsată sau eliberată. Folosit pentru a citi date de la tastatură.
    A IRQ2 - folosit pentru întreruperi hardware în cascadă în mașinile din clasa AT
    B IRQ3 - întreruperea portului asincron COM2.
    C IRQ4 - întreruperea portului asincron COM1.
    D IRQ5 - întrerupere de la controlerul de hard disk pentru XT.
    E IRQ6 - O întrerupere este generată de controlerul dischetei după finalizarea operației.
    F IRQ7 - întrerupere a imprimantei. Generat de imprimantă atunci când este gata să efectueze o altă operație. Multe adaptoare de imprimantă nu folosesc această întrerupere.
    10 Întreținere adaptor video.
    11 Determinarea configurației dispozitivelor din sistem.
    12 Determinarea dimensiunii RAM din sistem.
    13 Întreținerea sistemului de discuri.
    14 I/O serial.
    1A Serviciu de ceasuri.
    1B Managerul de întreruperi Ctrl-Break.
    70 IRQ8 - întrerupere a ceasului în timp real.
    71 IRQ9 - întrerupere de la controlerul EGA.
    75 IRQ13 - întrerupere de la coprocesorul matematic.
    76 IRQ14 - întrerupere de la controlerul hard diskului.
    77 IRQ15 - rezervat.

    IRQ0 - IRQ15 sunt întreruperi hardware.

    Mecanism de manipulare a întreruperii

    La procesarea fiecărei întreruperi, trebuie efectuată următoarea secvență de acțiuni:

    • Perceperea unei cereri de întrerupere: primirea semnalului și identificarea întreruperii.
    • Amintirea stării unui proces întrerupt: determinată de valoarea contorului programului (adresa instrucțiunii următoare) și de conținutul registrelor procesorului.
    • Transferul controlului către programul de întrerupere (adresa de pornire a subrutinei de procesare a întreruperilor este introdusă în contorul de programe, iar informațiile din cuvântul de stare a procesorului sunt introduse în registrele corespunzătoare).
    • Manevrarea întreruperii.
    • Restabilirea unui proces întrerupt și revenirea la un program întrerupt.

    Principalele funcții ale mecanismului de întrerupere:

    1. întrerupe recunoașterea sau clasificarea.
    2. transferul controlului către operatorul de întrerupere în consecință.
    3. revenirea corectă la programul întrerupt (înainte ca controlul să fie transferat la manipulatorul de întreruperi, conținutul registrelor procesorului este stocat fie în memoria cu acces direct, fie pe stiva de sistem).

    Tipuri de întreruperi

    Întreruperile care apar în timpul funcționării unui sistem informatic pot fi împărțite în 4 grupuri:

    Întreruperi hardware sunt apelate de dispozitive fizice și apar asincron în raport cu programul, i.e. În general, este imposibil de prezis când și din ce motiv un program va fi întrerupt.

    Întreruperile hardware nu sunt coordonate cu software-ul. Când este apelată o întrerupere, procesorul oprește ceea ce face, execută întrerupere și apoi revine la locul în care a fost.

    întreruperi externe provin dintr-un semnal de la un dispozitiv extern, de exemplu:

    • O întrerupere care informează sistemul că sectorul de disc necesar a fost deja citit și conținutul acestuia este disponibil pentru program.
    • O întrerupere care informează sistemul că imprimanta a terminat de imprimat un caracter și trebuie să emită următorul caracter.
    • Întreruperi din cauza căderii de curent.
    • Finalizarea normală a unor operațiuni I/O (apăsarea unei taste de pe tastatură).
    • Întreruperea temporizatorului.

    Întreruperea temporizatorului apelat de un temporizator de interval. Acest cronometru conține un registru căruia i se poate atribui o anumită valoare inițială folosind o instrucțiune specială cu privilegii. Valoarea acestui registru este redusă automat cu 1 după fiecare milisecundă de timp. Când această valoare devine zero, are loc o întrerupere a temporizatorului. Un cronometru de interval ca acesta este utilizat de sistemul de operare pentru a determina cât timp poate rămâne un program de utilizator sub controlul mașinii.

    Întreruperi externe mascabile și nemascabile

    Există două semnale externe speciale printre semnalele de intrare ale procesorului, cu ajutorul cărora puteți întrerupe execuția programului curent și, prin urmare, puteți comuta funcționarea procesorului central. Acestea sunt semnalele NMI(Întrerupere non-mascabilă, întrerupere nemascabilă) INTR(cerere de întrerupere, cerere de întrerupere).

    În consecință, întreruperile externe sunt împărțite în două tipuri: nemascabile și mascate.

    Adesea, atunci când executați secțiuni critice ale programelor, pentru a vă asigura că o anumită secvență de instrucțiuni este executată în întregime, este necesar să dezactivați întreruperile (adică să faceți sistemul insensibil la toate sau la întreruperi individuale). Acest lucru se poate face folosind comanda CLI. Trebuie plasat la începutul secvenței critice de instrucțiuni, iar la sfârșit trebuie să existe o instrucțiune STI care să permită procesorului să accepte întreruperi. Comanda CLI dezactivează numai întreruperile care nu se mască sunt procesate întotdeauna de procesor.

    Astfel, prezența unui semnal de întrerupere nu determină neapărat întreruperea programului care rulează. Procesorul poate avea mijloace de protecție împotriva întreruperilor: dezactivarea sistemului de întrerupere, mascarea (inhibarea) semnalelor individuale de întrerupere. Întreruperile care nu pot fi mascate sunt întreruperi care nu pot fi mascate.

    întreruperi interne sunt cauzate de evenimente care sunt asociate cu funcționarea procesorului și sunt sincrone cu operațiunile acestuia, și anume, o întrerupere are loc atunci când:

    • în caz de încălcare a adresei (o adresă interzisă sau inexistentă este indicată în partea de adresă a comenzii executate, acces la un segment sau o pagină lipsă la organizarea mecanismelor de memorie virtuală);
    • dacă există o combinație binară nefolosită în câmpul de cod.
    • când se împarte la zero.
    • când ordinea debordează sau dispare.
    • la detectarea erorilor de paritate, erori în funcționarea diferitelor dispozitive hardware prin mijloace de monitorizare.

    Software-ul se întrerupe

    Programele pot provoca ele însele întreruperi cu un anumit număr. Pentru a face acest lucru, ei folosesc comanda INT. Cu această comandă, procesorul efectuează aproape aceleași acțiuni ca și în cazul întreruperilor obișnuite, dar numai acest lucru se întâmplă într-un punct previzibil al programului - unde programatorul a plasat această comandă. De aceea întreruperi software nu sunt asincrone (programul „știe” când apelează o întrerupere).

    Software-ul se întrerupeîn sensul literal, ele nu sunt întreruperi, deoarece sunt doar un mod specific de apelare a procedurilor - nu după adresă, ci după numărul din tabel.

    Mecanism întreruperi software a fost introdus special pentru a:

    1. trecerea la modulele programului de sistem nu a avut loc doar ca o tranziție la o subrutină, ci exact în același mod ca întreruperile obișnuite. Acest lucru asigură că procesorul trece automat în modul privilegiat cu capacitatea de a executa orice comenzi.
    2. utilizarea întreruperilor software duce la un cod de program mai compact în comparație cu utilizarea instrucțiunilor standard de execuție a procedurii.

    Exemplu (întreruperi software):

    • comandă privilegiată în modul utilizator.
    • adresa este în afara intervalului.
    • încălcarea protecției memoriei.
    • depășire aritmetică, pagina lipsește.
    • încălcarea protecției segmentelor.
    • trecând dincolo de limita segmentului.

    O diagramă simplificată gestionarea diferitelor tipuri de întreruperi poate fi reprezentat astfel:

    KP este un controler de întrerupere, are mai multe niveluri (linii) pentru conectarea controlerelor dispozitivelor (indicate în diagramă de KU). Este posibil să se conecteze controlere în cascadă, atunci când un alt controler de întrerupere este conectat la una dintre intrările sale. CPU – unitate centrală de procesare.

    Întreruperile hardware sunt generate de dispozitivele computerizate atunci când este nevoie de service. Spre deosebire de întreruperile software, care sunt numite programate de programul de aplicație însuși, întreruperile hardware apar întotdeauna asincron în ceea ce privește programele care rulează. În plus, pot apărea mai multe întreruperi simultan. Selectarea unuia dintre ele pentru procesare se realizează pe baza priorităților atribuite fiecărui tip de întrerupere.

    Fiecărei întreruperi i se atribuie o prioritate unică. Dacă apar mai multe întreruperi simultan, sistemul acordă prioritate celei cu cea mai mare prioritate, amânând pentru un timp procesarea întreruperilor rămase.

    În cazul unei întreruperi a programului de serviciu de întrerupere în sine, vorbim despre întrerupere imbricată. Nivelurile de prioritate sunt abreviate IRQ0 - IRQ15 sau IRQ0 - IRQ23 (în funcție de implementarea cipului).

    Întreruperea orei are prioritate maximă, deoarece dacă se pierde constant, ceasul sistemului va fi incorect. O întrerupere de la tastatură este declanșată atunci când o tastă este apăsată sau eliberată; declanșează un lanț de evenimente care se termină de obicei cu codul cheii fiind plasat în buffer-ul tastaturii (de unde poate fi apoi preluat prin întreruperi software).

    Și în sfârșit, implementarea mecanismului de gestionare a întreruperilor

    În mașină, pentru fiecare clasă de întrerupere există una corespunzătoare. întrerupe zona de lucru. De exemplu, există o zonă care corespunde unei întreruperi de cronometru. Când are loc o întrerupere a temporizatorului, conținutul tuturor registrelor este stocat în această zonă (de exemplu, săriți peste primele cuvinte). Apoi, din aceste cuvinte lipsă, sunt extrase valorile care au fost introduse anterior acolo, care sunt rescrise în contorul (pointerul) comenzilor mașinii și în cuvântul de stare (sau în registrul steagului). Încărcarea și salvarea registrelor este efectuată automat de hardware-ul mașinii.

    Încărcarea contorului de program cu o nouă valoare de adresă determină automat transferul controlului către instrucțiunea corespunzătoare. Această adresă, stocată anterior în zona de lucru întrerupere, este adresa de pornire a rutinei standard de întrerupere a temporizatorului. Încărcarea cuvântului de stare provoacă și anumite modificări în starea procesorului.

    După executarea oricărei acțiuni necesare ca răspuns la o solicitare de întrerupere, rutina standard de întrerupere execută o comandă de încărcare a stării procesorului, care transferă controlul rutinei întrerupte. Acest lucru se întâmplă astfel: comanda de încărcare a stării procesorului face ca conținutul stocat al cuvântului de stare, al contorului programului și al altor registre să fie încărcat din cuvintele corespunzătoare din zona de salvare, începând de la adresa specificată în comandă. Aceasta restabilește conținutul registrului și starea procesorului la ceea ce erau în momentul întreruperii. Controlul este apoi transferat la comanda care a fost întreruptă înainte de execuție.

    Se apelează salvarea și restabilirea stării procesorului și a conținutului registrului operație de comutare de context.

    Majoritatea mașinilor au ceea ce se numește un cuvânt de stare, care conține o parte din informațiile folosite pentru a gestiona întreruperi. Unul dintre elementele acestui cuvânt (de exemplu, primul) este un semn, determinarea în ce mod se află procesorul: utilizator sau supervizor.

    Programele obișnuite sunt în modul utilizator (semn egal cu zero). Când are loc o întrerupere, noul cuvânt de stare încărcat de conținut are un flag de 1, care pune automat procesorul în modul supervizor. În acest mod, devine posibilă utilizarea comenzilor privilegiate. Înainte ca valoarea cuvântului de stare să fie salvată, un alt element (de exemplu, al doilea) va fi setat la o valoare care indică motivul întreruperii:

    • O întrerupere software afișează tipul de afecțiune care a provocat-o, cum ar fi împărțirea la zero.
    • Când are loc o întrerupere I/O, numărul canalului care a provocat întreruperea este înregistrat.

    Al treilea element indică dacă procesorul execută instrucțiuni sau este inactiv. Al patrulea element conține un pointer care identifică programul care se execută în prezent. Al cincilea element conține masca de întrerupere, care este utilizată pentru a controla activarea întreruperii (câmpul MASK).

    Acest câmp este folosit pentru a preveni anumite tipuri de întreruperi până când prima a fost procesată. În MASK, fiecare bit corespunde unei anumite clase de întreruperi. Dacă un bit este setat la 1, atunci întreruperile clasei corespunzătoare sunt activate, dacă se setează la 0, atunci sunt dezactivate. În acest din urmă caz ​​ei spun că ei camuflat(se mai numesc interzisă sau închis). Cu toate acestea, întreruperile mascate nu se pierd deoarece semnalul care a provocat întreruperea este reținut de hardware. Se apelează o întrerupere temporar întârziată în acest fel amânat. Când (datorită ștergerii MASC-ului) întreruperile clasei corespunzătoare sunt activate din nou, semnalul este recunoscut și întreruperea are loc.

    Mascarea întreruperilor se află sub controlul sistemului de operare și depinde de valoarea MASCĂ din cuvântul de stare, care este stocată în prealabil în zona de lucru a fiecărei întreruperi. Este posibil să dezactivați toate întreruperile setând toți biții MASK la zero. În realitate, nu este nevoie să faci asta.

    În timp ce computerul execută un program curent în interiorul mașinii și în mediul extern asociat acestuia (de exemplu, într-un proces tehnologic controlat de computer), pot apărea evenimente care necesită un răspuns imediat la acestea din partea mașinii.

    Răspunsul este că mașina întrerupe procesarea programului curent și trece la executarea unui alt program special conceput pentru acest eveniment. La finalizarea acestui program, computerul revine la executarea programului întrerupt.

    Procesul în cauză se numește întrerupere de program. Este esențial important ca momentele de apariție a evenimentelor care necesită întreruperea programelor să fie necunoscute în prealabil și, prin urmare, să nu poată fi luate în considerare la programare.

    Fiecare eveniment care necesită o întrerupere este însoțit de un semnal care anunță computerul - solicitări de întrerupere. Programul solicitat de o cerere de întrerupere se numește program de întrerupere, spre deosebire de programul întrerupt care era executat de mașină înainte de apariția cererii.

    Capacitatea de a întrerupe programe este o proprietate arhitecturală importantă a unui computer, care face posibilă utilizarea eficientă a performanței procesorului în prezența mai multor procese care au loc în paralel în timp, necesitând control și întreținere de la procesor în momente arbitrare. În primul rând, acest lucru se aplică organizării funcționării în paralel a procesorului și a dispozitivelor periferice ale mașinii, precum și utilizării computerelor pentru controlul în timp real al proceselor tehnologice.

    Pentru ca un computer să poată, fără a necesita prea mult efort din partea programatorului, să implementeze întreruperi de program la viteză mare, mașina trebuie să fie echipată cu hardware și software adecvat, a căror combinație se numește sistem de întrerupere a programului.

    Principalele funcții ale sistemului de întrerupere sunt:

      memorarea stării programului întrerupt și trecerea la programul întrerupt

      restabilirea stării unui program întrerupt și revenirea la acesta.

    Vectorul de întrerupere este vectorul „starii inițiale a programului de întrerupere”. Vectorul de întrerupere conține toate informațiile necesare pentru a sări la programul de întrerupere, inclusiv adresa de pornire. Fiecare cerere de întrerupere (număr) are propriul său vector de întrerupere, care poate iniția execuția programului de întrerupere corespunzător. Vectorii de întrerupere sunt localizați în celule de memorie fixă ​​special alocate - tabelul de vectori de întrerupere.

    Locul principal în procedura de tranziție la un program de întrerupere este ocupat de procedura de transfer din registrul (registrele) corespunzător al procesorului în memorie (în special, în stivă) pentru a salva vectorul de stare curent al programului întrerupt ( astfel încât să puteți reveni la execuția acestuia) și încărcarea în registrul (registrele) procesorului vectorului de întrerupere al programului de întrerupere, căruia i se transferă controlul procesorului.

    Clasificarea întreruperii

    Solicitările de întrerupere pot apărea în interiorul computerului însuși și în mediul său extern. Primele includ, de exemplu, solicitări atunci când astfel de evenimente apar într-un computer, cum ar fi o eroare în funcționarea echipamentului său, depășirea rețelei de biți, o încercare de împărțire la 0, ieșirea din zona de memorie setată pentru un program dat. , o solicitare de către un dispozitiv periferic pentru o operație de intrare-ieșire, finalizarea unei operațiuni de intrare/ieșire de către un dispozitiv periferic sau apariția unei situații speciale în timpul acestei operațiuni etc. Deși unele dintre aceste evenimente sunt generate de programul însuși, momentele apariției lor, de regulă, nu pot fi prevăzute. Solicitările din mediul extern pot apărea de la alte computere, de la senzori de urgență și alți senzori tehnologici de proces etc.

    Familia de microprocesoare Intel 80x86 acceptă 256 de niveluri de întreruperi prioritare declanșate de trei tipuri de evenimente:

      întreruperi hardware interne

      întreruperi hardware externe

      întreruperi software

    Întreruperi hardware interne, numite uneori erori, sunt generate de anumite evenimente care apar în timpul execuției programului, cum ar fi o încercare de împărțire la 0. Atribuirea anumitor numere de întrerupere unor astfel de evenimente este conectată la procesor și nu poate fi modificată.

    Întreruperi hardware externe inițiat de controlere periferice sau coprocesoare (de exemplu, 8087/80287). Sursele de întrerupere sunt conectate fie la pinul de întrerupere non-maskable (NMI) al procesorului, fie la pinul de întrerupere mascat (INTR) al procesorului. Linia NMI este de obicei dedicată întreruperilor cauzate de evenimente catastrofale, cum ar fi erorile de paritate a memoriei sau pană de curent.

    Software-ul se întrerupe. Orice program poate iniția o întrerupere software sincronă prin executarea unei comenzi int. MS-DOS utilizează întreruperi de la 20H la 3FH pentru a interacționa cu modulele și programele de aplicație (de exemplu, managerul de funcții MS-DOS este accesat prin executarea comenzii int 21h). Programele BIOS stocate în ROM și programele de aplicație IBM PC folosesc diferite întreruperi, cu numere mai mari sau mai mici. Această distribuție a numerelor de întrerupere este condiționată și nu este fixată în hardware în niciun fel.

    Întreruperea tabelului vectorial

    Pentru a asocia adresa handler-ului de întrerupere cu numărul de întrerupere se utilizează un tabel de vectori de întrerupere, care ocupă primul kilobyte de RAM. Acest tabel se află în intervalul de adrese de la 0000:0000 la 0000:03FFh și constă din 256 de elemente - adrese departe ale manipulatorilor de întreruperi.

    Intrările din tabelul vector de întrerupere se numesc vectori de întrerupere. Primul cuvânt al elementului de tabel conține componenta offset, iar al doilea cuvânt conține componenta de segment a adresei de gestionare a întreruperilor.

    Vectorul de întrerupere numărul 0 se află la adresa 0000:0000, numărul 1 se află la adresa 0000:0004 etc. În general, adresa vectorului de întrerupere se găsește prin înmulțirea numărului de întrerupere cu 4.

    Inițializarea tabelului este efectuată parțial de sistemul de intrare/ieșire BIOS după testarea hardware-ului și înainte ca sistemul de operare să înceapă să se încarce și parțial la încărcarea MS-DOS. Sistemul de operare MS-DOS poate modifica unii vectori de întrerupere setați de BIOS.

    Întreruperea tabelului vectorial

    Număr

    Descriere

    Eroare de divizare. Apelat automat după executarea unei comenzi DIV sau IDIV dacă diviziunea are ca rezultat o depășire (de exemplu, împărțirea cu 0). De obicei, atunci când gestionează această întrerupere, MS-DOS afișează un mesaj de eroare și oprește execuția programului. În acest caz, pentru procesorul i8086 adresa de retur indică la comanda care urmează comenzii de divizare, iar pentru procesorul i80286 și modelele ulterioare - la primul octet al comenzii care a provocat întreruperea

    Întrerupeți modul pas. Produs după execuția fiecărei instrucțiuni de mașină, dacă bitul de urmărire pas cu pas TF este setat în cuvântul flag. Folosit pentru programe de depanare. Această întrerupere nu este generată după ce datele sunt trimise la registrele de segment folosind instrucțiunile MOV și POP.

    Întreruperea hardware nemascabilă. Această întrerupere poate fi utilizată diferit pe diferite mașini. De obicei, este generat atunci când există o eroare de paritate în RAM și când este solicitată o întrerupere de la coprocesor

    Întreruperea pentru urmărire. Generat la executarea unei comenzi de mașină de un octet cu codul CCh și este folosit în mod obișnuit de către depanatori pentru a seta un punct de întrerupere

    Revărsare. Generat de instrucțiunea mașină INTO dacă este setat pavilionul de depășire OF. Dacă flag-ul nu este setat, instrucțiunea INTO este executată ca NOP. Această întrerupere este folosită pentru a gestiona erorile la efectuarea operațiilor aritmetice

    Imprimați o copie a ecranului. Generat dacă utilizatorul a apăsat o tastă În programele MS-DOS este de obicei folosit pentru a imprima o imagine de ecran. Pentru procesorul i80286 și modelele mai vechi, acesta este generat la executarea comenzii de mașină BOUND dacă valoarea verificată este în afara intervalului specificat

    Opcode nedefinit sau lungime de comandă mai mare de 10 octeți

    Caz special de lipsă a coprocesorului aritmetic

    IRQ0 – întreruperea temporizatorului de interval, are loc de 18,2 ori pe secundă

    IRQ1 – întrerupere de la tastatură. Generat atunci când utilizatorul apasă și eliberează tastele. Folosit pentru a citi date de la tastatură

    IRQ2 – folosit pentru întreruperi hardware în cascadă

    IRQ3 – întreruperea portului asincron COM2

    IRQ4 – întreruperea portului asincron COM1

    IRQ5 – întrerupere de la controlerul de hard disk (numai pentru computerele IBM PC/XT)

    IRQ6 – întrerupere generată de controlerul HDD după finalizarea operațiunii I/O

    IRQ7 – întrerupere de la adaptorul paralel. Generată atunci când imprimanta conectată la adaptor este pregătită pentru a efectua o altă operație. Nu este folosit de obicei

    Întreținere adaptor video

    Definirea configurației dispozitivelor din sistem

    Determinarea dimensiunii RAM

    Întreținerea sistemului de discuri

    Lucrul cu un adaptor serial asincron

    Serviciu extins

    Întreținerea tastaturii

    Întreținere imprimante

    Rulează BASIC în ROM, dacă este disponibil

    Serviciu de ceasuri

    Gestionarea întreruperii care apare dacă utilizatorul apasă o combinație de taste

    Întreruperea software, apelată de 18,2 ori pe secundă de către handlerul de întrerupere a temporizatorului hardware

    Adresa tabelului video pentru controlerul adaptorului video 6845

    Indicator către tabelul de parametri de dischetă

    Indicator către un tabel grafic pentru caractere cu coduri ASCII 128-255

    Folosit de MS-DOS sau rezervat pentru MS-DOS

    Întreruperi rezervate programelor utilizator

    Nefolosit

    IRQ8 – întrerupere a ceasului în timp real

    IRQ9 – întrerupere de la controlerul EGA

    IRQ10 – rezervat

    IRQ11 – rezervat

    IRQ12 – rezervat

    IRQ13 – întrerupere de la coprocesorul aritmetic

    IRQ14 – întrerupere de la controlerul hard diskului

    IRQ15 – rezervat

    Nefolosit

    Rezervat pentru BASIC

    Folosit de interpretul BASIC

    Nefolosit

    Întreruperile desemnate ca IRQ0 – IRQ15 sunt hardware extern.

     
    Articole De subiect:
    Simptome și tratament anexitei purulente
    (salpingooforita) este un proces inflamator cu implicarea simultană a ovarelor și trompelor uterine (anexe uterine). În perioada acută, se caracterizează prin dureri în abdomenul inferior, mai intense din cauza inflamației, temperatură ridicată și semne de intoxicație. Lu
    Beneficii pe un card social pentru un pensionar din regiunea Moscova
    În regiunea Moscovei, sunt oferite diverse beneficii pentru pensionari, deoarece aceștia sunt considerați cea mai vulnerabilă parte socială a populației. Beneficiu – scutire totală sau parțială de la condițiile de îndeplinire a anumitor atribuții, extinzându-se la
    Ce se va întâmpla cu dolarul în februarie
    Care va fi cursul dolarului la începutul anului 2019? Cum va afecta costul unui baril dinamica perechii dolar/ruble? Ce va împiedica consolidarea rublei față de USD la începutul anului 2019? Despre toate acestea veți afla în prognoza cursului de schimb al dolarului pentru începutul anului 2019. Analiza economică
    Ouă omletă în pâine într-o tigaie - rețete pas cu pas pentru gătit acasă cu fotografii Cum să prăjiți un ou în pâine într-o tigaie
    Bună ziua, dragi practicanți curioși. De ce te-a salutat astfel? Ei bine, desigur! La urma urmei, spre deosebire de alți cititori, transformi imediat toate cunoștințele acumulate în obiecte tangibile, gustoase, care dispar la fel de repede ca