laborator10

6
Laborator 10 – PLA Întreruperi Clasificare Noţiunea de întrerupere presupune (aşa cum îi arată şi numele) întreruperea programului în curs de execuţie şi transferul controlului la o anumită rutină specifică, numită rutină de tratare, dictată de cauza care a generat întreruperea. Mecanismul prin care se face acest transfer este, în esenţă, de tip apel de procedură, ceea ce înseamnă revenirea în programul întrerupt, după terminarea rutinei de tratare. Întreruperile se pot clasifica după mai multe criterii, rezultând tipurile ilustrate în figura următoare: Figura 1. Clasificarea întreruperilor Diferenţa între întreruperile hardware şi software este dată de entitatea care generează întreruperea. Dacă este provocată de un dispozitiv hardware, atunci este o întrerupere hardware, iar dacă este provocată de un program, este o întrerupere software. Astfel, întreruperile software apar ca urmare a execuţiei unor instrucţiuni, cum ar fi INT, DIV, IDIV.

Upload: gabi-nitu

Post on 09-Nov-2015

217 views

Category:

Documents


0 download

DESCRIPTION

lab 10

TRANSCRIPT

Laborator 10 PLA

Laborator 10 PLAntreruperiClasificare

Noiunea de ntrerupere presupune (aa cum i arat i numele) ntreruperea programului n curs de execuie i transferul controlului la o anumit rutin specific, numit rutin de tratare, dictat de cauza care a generat ntreruperea. Mecanismul prin care se face acest transfer este, n esen, de tip apel de procedur, ceea ce nseamn revenirea n programul ntrerupt, dup terminarea rutinei de tratare.

ntreruperile se pot clasifica dup mai multe criterii, rezultnd tipurile ilustrate n figura urmtoare:

Figura 1. Clasificarea ntreruperilorDiferena ntre ntreruperile hardware i software este dat de entitatea care genereaz ntreruperea. Dac este provocat de un dispozitiv hardware, atunci este o ntrerupere hardware, iar dac este provocat de un program, este o ntrerupere software.

Astfel, ntreruperile software apar ca urmare a execuiei unor instruciuni, cum ar fi INT, DIV, IDIV.ntreruperile hardware sunt interceptate de rutine speciale care se execut n mod continuu cu scopul de a le detecta i de a efectua aciunile corespunztoare. Ele sunt de 2 tipuri:

ntreruperile hardware externe sunt provocate de semnale electrice care se aplic pe intrrile de ntreruperi INT i NMI ale procesorului.

ntreruperile hardware interne apar ca urmare a unor condiii speciale de funcionare a procesorului (cum ar fi execuia pas cu pas a programelor, mprirea la 0);

Tabela de ntreruperintr-un sistem pot exista maxim 256 de ntreruperi (nivele) distincte. Fiecare din aceste nivele poate avea asociat o procedur de tip far, numit rutin de tratare. Adresele acestor rutine sunt trecute ntr-o aa numit tabel de ntreruperi, aflat la adresele fizice 00000 - 003FFH, ocupnd deci 1024 de octei. Fiecare nivel ocup 4 octei, primii reprezentnd offset-ul, iar urmtorii adresa de segment a procedurii (Figura 2).

La apariia unei ntreruperi, au loc urmtoarele aciuni:

se salveaz n stiv registrele FLAGS, CS i IP (n aceast ordine);

se terg bistabilii IF (Interrupt Flag) i TF (Trap Flag flag de urmarire pas cu pas);

se furnizeaz procesorului un ntreg pe 8 bii (deci n gama 0 - 255), numit i vector de ntrerupere, care identific nivelul asociat ntreruperii;

se execut un salt indirect intersegment la adresa de nceput a rutinei de tratare, prin intermediul tabelei de ntreruperi.

Figura 2 Tabela de ntreruperiSe observ c, exceptnd salvarea flagurilor i tergerea bistabililor IF i TF, secvena de tratare a unei ntreruperi se reduce la un apel indirect de procedur far, prin intermediul tabelei de ntreruperi.

Nivelele predefinite de ntrerupere sunt:

0 - depire la mprire (cauze posibile; instruciunile DIV sau IDIV);

1 - execuie pas cu pas (cauz posibil: bistabilul TF = 1);

2 - ntrerupere extern nedezactivabil (cauz posibil: semnal electric pe linia de

ntrerupere nedezactivabil NMI);

3 - execuie pana la o anumita linie (cauz posibil: instruciunea INT 3);

4 - depire (cauz posibil: instruciunea INTO).

Se mai pot cita ntreruperile hardware de la ceasul de timp real (nivelul 8) i de la tastatur (nivelul 9).

ntreruperile software n gama 20H - 2FH sunt folosite de sistemul de operare DOS, iar cele n gama 10H - 1AH de ctre subsistemul de intrri - ieiri BIOS.O prezentare mai detaliat gsii la adresa:

http://www.bioscentral.com/misc/interrupts.htm n Tech Help se gsete modul de utilizare:

Tech Topics -> ROM-BIOS Functions -> Interrupts and ROM-BIOS Services

ntreruperi software

Sunt rezultatul execuiei instruciunilor INT dintr-un program n curs de execuie. Acestea pot fi vzute ca nite evenimente lansate de programator, care opresc imediat execuia programului i se apeleaz rutina de tratare a ntreruperii. Aceste rutine sunt, de obicei, incluse n sistemul de operare i vor determina realizarea aciunii corespunztoare. (de exemplu afiarea unui ir pe ecran, sau execuia unui fiier). Un exemplu este INT 21h care este o ntrerupere a serviciului DOS. Cnd rutina este apelat, aceasta va citi valoarea stocat n ah, i va lansa rutina corespunzatoare. n exemplul urmtor este invocat ntreruperea 21h.

:

mov ax, 4c00h

int 21h

:

Aceste 2 linii cer sistemului de operare s ncheie execuia programului.Numrul ntreruperii nu este suficient. ntreruperile se comport diferit n funcie de ce numr de serviciu este apelat (de exemplu la ntreruperile 10h i 21h). n acest caz, numrul serviciului este plasat n ah i este egal cu 4ch. (Observaie: AX=4c00h nseamn AH=4ch i AL=00h).

Aplicaii:

1. Blocarea programului pn cnd este apsat un buton al mouse-ului (aplic1.asm)..model small.code

start:

mov AX,5 ;5 in AX spune intreruperii 33 ;sa preia informatiile despre butoanele mouse-uluiint 33h ;apel intreruperecmp AX,1b ;in ax este preluata starea butonului de mousejl start ;daca nu este nici un buton apasat se intoarce la

;eticheta start;AX va fi 0 cat timp nu se apasa nici un butonmov ah,004Ch ;terminare program

int 21h

end2. Afisarea unui mesaj la o anumit poziie pe ecran (aplic2).model small

.data

mesaj db "BUTTON","$"

.code

start:

mov ax, dgroup

mov ds, ax

mov ah,02h ;serviciul pentru setarea pozitiei cursorului

mov dh,0Bh ;linia

mov dl,22h ;coloana

int 10h

; afisare mesaj

mov ah,09h

mov dx,offset mesaj

int 21h

mov ah, 4ch

int 21h

end3. Realizai o aplicaie care s blocheze execuia programului pn la apsarea unui buton de mouse n zona mesajului BUTTON.

4. Realizai o aplicaie care s afieze mesajul Ai reuit numai dac a fost apsat un buton al mouse-ului pe zona ocupat de mesajul BUTTON din programul aplic2.asm

5. Realizai un meniu cu opiunile:

Afisare mesaj

Info

Iesire care s execute aciunile corespunztoare la apsarea unui buton de mouse pe zona corespunztoare opiunii.