Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Intreruperi 8086
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
Intrerupere = parasirea secventei naturale de instructiuni si predarea controlulului unei rutine de tratare a intreruperii. Pot fi:

I. Intreruperi hard - permit tratarea evenimentelor generate deperifericele unui sistem de calcul (tastatura, mouse, ceas de timp real, disc,etc). - intreruperi mascabile - sunt accesate functie de starea bitului IF dinregistrul de stare (flaguri) care poate fi setat/resetat cu instructiunispeciale (STI/CLI) si vin pe linia INTR a procesorului. - intrerupere nemascabila (la pinul NMI) - care nu depinde de bitul IFsi se utilizeaza la tratarea unor evenimente critice (de ex. cadere tensiunealimentare) (la 8086 - INT 2 trateaza intreruperea nemascabila)

II. Intreruperi interne A. - sunt generate de procesor in cazul unor situatii deosebite si avemmai multe nivele de intrerupere rezervate:

INT 00H - depasire la impartire (impartire la 0 - divide overflow) ; INT 01H - rulare pas cu pas (single step), lansata dupa fiecareinstructiune cind T=1 ; INT 02H - tip asociat intreruperii hard nemascabile ; INT 03H - breackpoint ; INT 04H - depasire superioara sau inferioara (overflow), lansata deinstructiunea INTO daca OF=1 ;

B. intreruperi soft - generate de utilizator (IF=1 ca si la I) Astfel avem instructiunea INT n - care genereaza o intrerupere imediatdupa executia sa. Tipul intreruperii este codificat in codul instructiunii siinformeaza procesorul ce rutina sa execute (vezi definitia). Astfel, asociereaintre tipul intreruperii si rutina aferenta se face prin tabela vectorilor deintrerupere (de aceea intreruperile interne la 8086 se mai numesc siintreruperi vectorizate). Aceasta tabela este initializata la incarcarea SOde catre BIOS in memorie incepind cu adresa 0:0, ocupa 1 Ko avƒnd 256 intrari(n din instructiune ocupa 1 octet) fiecare fiind un pointer pe dublucuvintsi continind adresa rutinei de tratare a intreruperii de tipul respectiv(tipul 0 .... tipul 255), la adresa mai mare se afla adresa de baza asegmentului, iar la adresa mai mica offset-ul). Deci pentru gasirea locatieice contine adresa rutinei, tipul furnizat in instructiune se inmulteste cu 4.




Ce se intimpla la sosirea unei intreruperi (fie hard, fie soft) ?

1) - procesorul salveaza in stiva, flag-le si adresa instructiunii urmatoare(segm+offset in aceasta ordine), iar indicatorii IF si TF sunt resetati(pentru a nu fi acceptate alte intreruperi). Structura stiva: _______|Flags | PUSHF|_______||Reg.sg | CS|_______||Offset | IP|_______|___________ SP

2) se identifica adresa rutinei de tratare functie de tipul intreruperii,astfel:

- intreruperi hard- adresa este furniz.chiar de priferic- intreruperi "exceptionale" - adresa generata de procesor- intreruperi vectorizate - adresa este data chiar in codulinstructiunii si reprezinta un index de cautare in tabela vectorilor deintrerupere (adresa=tip*4)

3) adresa astfel obtinuta se incarca in registrii CS si IP si printr-un CALLFAR (intersegment) se da controlul rutinei

4) iesirea din rutina se realizeaza prin refacerea starii (ne referim la alteregistre salvate pe stiva, eventual, in rutina utilizator) cu instructiuni detip POP, si apoi IRET (care reincarca vechile valori IP si CS, si flag-le)care ma aduce in program dupa "locul" in care a aparut intreruperea.

Nota: in cadrul rutinei utilizator de tratare a intreruperii pot activaintreruperile cu STI, in caz contrar pot pierde cererile de intreruperimascabile venite pe linia INTR.

Concluzii la intreruperi vectorizate (INT n)

INT n IRET SP<-SP-2 IP <- SP (SP)<- FLAGS SP <- SP+2 IF<-0 CS <- SP TF<-0 SP <- SP+2 SP<-SP-2 FLAGS <- SP (SP)<-CS SP <- SP+2 SP<-SP-2(SP)<-IP IP<-a4*N,4*N+1i CS<-a4*N+2,4*N+3i

A. Modalitati de incarcare a adresei rutinei de tratare in tabela vectorilor de intrerupere

1. Functia DOS 25H

INPUT: AL=NUMAR INTRERUPERE UTILIZATOR AH=25H DS=ADRESA SEGMENT RUTINA TRATARE DX=OFFSET RUTINA TRATARE 2. Instructiuni de lucru cu memoria (adresare absoluta)

; N=nr.intrerupere utilizator; XOR AX,AX MOV ES,AX ;TABELA ESTE LA 0:0 MOV ES:aN*4+2i,SEG RUTI ;RUTI=nume rutina MOV ES:aN*4i,OFFSET RUTI..RUTI PROC FAR. IRET;RUTI ENDP

B. Redirectarea unei intreruperi BIOS

In unele aplicatii apare necesar ca o anumita intreruperi BIOS sa otratez cu propria-mi rutina, caz in care se parcurg urmatorii pasi:

I. Salvarea adresei vechii rutine (2 moduri)

1. Functia DOS 35HINPUT: AL=NUMAR RUTINA AH=35H (cod functie)OUTPUT: ES=ADRESA SEGMENT RUTINA VECHE BX=OFFSET RUTINA VECHE

2. Instructiuni cu memoria (adresare absoluta) - salvez intr-o variabila tipdublu cuvint (DD) .DATAOLD_INT DD ?; .CODE XOR AX,AX MOV ES,AX MOV AX,ES:aN*4+2i MOV WORD PTR aOLD_INT+2i,AX MOV AX,ES:aN*4i MOV WORD PTR aOLD_INTi,AX

II. Legarea noii intreruperi - analog cu A.

Intreruperi DOS

Sistemul de operare MS-DOS pune la dispozitia programatorului o seriede functii de baza pentru:

- efectuarea operatiilor de intrare/iesire ;- lucrul cu fisiere ;- gestiunea memoriei ;- controlul executiei programelor, etc.

Aceste functii pot fi accesate prin intermediul intreruperii cu tipul21H (numita si intrerupere sistem). Functia solicitata si parametrii asociatiacesteia sunt transmisi prin intermediul registrilor, rezultatul (daca exista)efectuarii functiei fiind returnat in acelasi mod. O descriere detaliata atuturor functiilor existente este oferita de utilitarul HELP.

Exemple: MOV ax,4c00h ; functia de revenire in sistem INT 21h ; apel functie sistem

MOVAH,1 ;fct.citire caracter INT21H ;apel fct.sistem ;AL=cod ASCII caracter citit

MOV ah,02h; functie afisare caracter MOV dl,'a' ; caracterul de afisat INT 21h ; apel functie sistem

Intreruperi BIOS

BIOS-ul (Basic Input Output System) este o componenta a sistemului deoperare MS-DOS, rezidenta in PROM, ce contine urmatoarele elemente:

- programe de test pentru toate resursele din configuratia standard asistemului ; - un program incarcator a sistemului de operare de pe disc ; - proceduri pentru tratarea cererilor de intrerupere externe provenitede la: - ceasul de timp real (tip 8) ; - tastatura (tip 9) ; - disc flexibil (tip 14). - procedurile pentru comanda si controlul executiei operatiilor deintrare/iesire (I/O) la nivel fizic pentru toate echipamentele periferice dinconfiguratia standard. Executia programelor de test se face la pornirea sistemului si implica:

- testarea microprocesorului ; - testarea si programarea unor circuite de I/O ( DMA (Direct MemoryAcces, timer) ; - determinarea configuratiei sistemului ; - testarea memoriei RAM ; - testarea sistemului de interuperi si initializarea tabelei vectorilorde intrerupere ; - identificarea si realizarea legaturilor cu PROM-urile externe placiide baza, incluse in interfetele pentru diferite echipamente periferice. Daca executia programelor de test se incheie fara erori, atunci se vaexecuta programul incarcator pentru sistemul de operare rezident pe disc, dupacare se va da controlul acestuia. Accesul din programe utilizator la procedurile continute in BIOS se faceprin intreruperi software. BIOS-ul reprezinta de fapt o interfata intresistemul de operare (sau programul utilizator) si hardware-ul calculatorului. BIOS-ul se afla pe un nivel mai "scazut" (low level) decit nucleul DOS (adicamai apropiat de hardware) si de aceea rutinele DOS se folosesc de functiileBIOS pentru a-si face "job-ul". Ca si functiile DOS, inainte de apel, functiile BIOS cer incarcarearegistrilor generali cu parametri aferenti functiei.

Principalele puncte de intrare puse la dispozitie de BIOS sunt:- nivele de intrerupere rezervate (intreruperile 0,1,2,3,4 - vezi maisus !!) - nivele asociate intreruperilor hard:

INT 08H - timer, intreruperea de timp real, lansata la fiecare 55ms,actualizeaza ora si data ; INT 09H - intreruperea de tastatura ; INT 0AH - rezervata ; INT 0BH - intrerupere de retea ; INT 0CH - interfata seriala ; INT 0DH - rezervata ; INT 0EH - disk ; INT 0FH - rezervata ;

- servicii BIOS:

INT 10H - servicii video (pentru utilizarea terminalului grafic) ; INT 11H - determinarea configuratiei sistemului ; INT 12H - determinarea capacitatii memoriei RAM ; INT 13H - disc ; INT 14H - interfata seriala ; INT 15H - functii specifice AT ; INT 16H - tastatura ; INT 17H - imprimanta ; INT 19H - intrare pentru apelul incarcatorului sistemului de operarerezident pe disc (BOOTSTRAP) ; INT 1AH - ceasul de timp real ;

Intreruperile BIOS utilizeaza informatii din zona de date BIOS, aflatain zona 0000:0400 - 0000:500 (echivalent, ca adresa fizica, cu 0040:0000 -0050:0000). Exemplu:

Adresa Nr. oct. Continut

0:0400 2 Adresa de baza pentru interfata seriala COM1 ;0:0408 2 Adresa de baza pentru interfata paralela LPT1 ;0:0410 2 Lista echipamentelor hardware instalate (active), poate fi obtinuta si prin INT 11H ; 0:0413 2 memoria existenta in K-octeti, similar cu INT 12H ;0:0449 1 modul video activ ;

Nota: Utilitarul HELP ofera informatii suplimentare despre BIOS(intreruperi, zona de date BIOS).

Aplicatii:

1. Sa se realizeze o noua instructiune - prin intermediul uneiintreruperi utilizator (de exemplu INT 60H) - care sa-mi permita comparareaa 2 variabile tip DD. Sa se corupa si intreruperea 1 (pas cu pas) si sa seafiseze un mesaj care sa arate trecerea prin rutina de tratare aferenta

Indicatii:

- se definesc cele 2 variabile in segmentul de date, ca si mesajeleaferente dealtfel- se va lega noua intrerupere in tabela - se va utiliza instructiunea de comparare pe siruri de caractere- se va afisa in PROGRAMUL PRINCIPAL un mesaj privind rezultatulcompararii (mai mic, egal, mai mare) in functie de bitii CF si ZF din reg.destare, folosind funtia DOS, 9- pentru generare INT 1 se va seta bitul TF din registrul de flag-uri,(bitul 8), iar in rutina de tratare se va pune din nou pe 0 !!

2. Sa se scrie un program care la apasarea tastei corespunzatoareinitialei unei note va determina generarea notei respective (se va folosiprogramul SOUND.ASM).

3. Sa se scrie un program care sa afiseze data si ora curenta, folosindfunctiile DOS 2Ah si 2Ch. Programul ramƒne in asteptarea unei taste. Programulva citi pozitia cursorului inainte de afisarea orei curente astfel incƒtapasarea unei taste diferite de ('Q','q') va determina afisarea noii ore inaceeasi pozitie.

Indicatii: - pentru afisarea in zecimal a octetilor cititi cu functiile 2AH si 2CHse va apela rutina HEXZEC.ASM din fisierul HZEC.ASM. Punctul de intrare inrutina se va declara cu directiva EXTRN, astfel: EXTRN HEXZEC:NEAR. Rutinaconverteste cuvintul din AX si-l afiseaza la ecran.- pentru citirea tastei se va folosi INT 16h, serviciul 0- pentru salvarea, respectiv setarea pozitiei cursorului se va folosiINT 10H, serviciile 3, respectiv 2- se vor afisa mesajele aferente cu functia DOS, 9- se vor prevedea separatori la afisarea datei si orei curente cufunctia DOS, 2 4. Sa se realizeze un program care citeste configuratia sistemului,direct sub TD si sa se interpreteze rezultatul

Indicatii:

- se va lansa HELP-ul rezident (HE1)- selectati ROM-BIOS functions si apoi INT 11H (gasiti locatia dememorie analoaga din zona de date BIOS) 5. Sa se realizeze un program care sa afiseze un sir de caractere peecran la o anumita pozitie a cursorului, pe care o veti specifica interactiv.

Indicatii:

- pentru stabilire atribut - "Screen Attributes" - ROM-BIOS functions ; INT 10H ; VIDEO SERVICE DETAILS ; - serviciul 0 pentru stergere ecran si stabilire mod lucru (text) - serviciul 13h -pentru afisare sir la pozitia cursorului

6. Sa se scrie un program care sa citeasca de la tastatura un sir ASCII,sa faca apoi conversia literelor mici la majuscule afisind in final rezultatulacestei conversii ; se va folosi INT 16H pentru citirea sirului.


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta