Sezione![]() |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
La Tabella dei Vettori |
SCHEDA n° 04 [ 13 di 15] |
|
![]() |
|
![]() |
|
![]() | La creazione di una nuova
procedura di gestione può aver bisogno dell'indirizzo del
vecchio Gestore; per questa ragione
diamo per scontato che il programma che lo ospita contenga anche le variabili
di deposito definite nella pagina precedente, cioè la
variabile
DWORD (DD,
32 bit, 4bytes,
segment:offset del puntatore) e/o le 2
variabili
WORD (DW,
16 bit, 2bytes, parte
segment e parte offset del puntatore),
chiamate rispettivamente old_INT e
old_SEG/old_OFF:
|
|
![]() | Il nuovo Gestore associato al
Vettore può:
| ||||||||||||
![]() | In ogni caso è sempre opportuno salvare all'inizio
il
contesto con
PUSH
dei registri utilizzati (comprese le
flag del processore); supponendo che la
nuova procedura di servizio si chiami new_INT,
la sua parte iniziale potrebbe essere:
|
|
![]() |
Se si tratta di un Nuovo Gestore HardWare, dopo aver eseguito le desiderate operazioni di servizio, è assolutamente necessario ricordare che, prima di restituire il controllo, bisogna avvisare il controllore delle interruzioni (8259) che la procedura di servizio è terminata spedendogli il codice 20H di Fine Interruzione. |
|
![]() | L'Integrato 8259 è
accessibile attraverso il registro di Comando
Interruzioni, di indirizzo 0020H
(_8259ct); al termine di ogni procedura di
servizio di interruzione Hardware è
necessario segnalarne la fine spedendogli la parola esadecimale
20H = EOI =
End Of Interrupt, con le seguenti
istruzioni:
| |||
![]() | Naturalmente la procedura dedicata al nuovo gestore
terminerà con il recupero del contesto iniziale
con
POP dei registri precedentemente salvati,
riabilitando le interruzioni
mascherabili (con
STI) e ricordandosi di
restituire il controllo con
IRET:
|
|
![]() |
Scheda n° 04 |
![]() |
La Tabella dei Vettori |
![]() |
![]() |
![]() |
||
Scheda n° 04 - 13 |
|
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|