| Si pone ora il problema di poter
accedere a ciascun libro; per
ora è noto che ognuna delle possibili
raccolte di procedure avrà un numero da
00H a FFH,
nella logica binaria di un processore. |
| I suoi astuti costruttori hanno pensato ad una
apposita istruzione in grado di accedere a
ciascuna di esse semplicemente passandole
come operando il corrispondente numero. |
| Questa istruzione è
INT
xyH,
con xyH uguale ad uno qualunque dei
possibili valori, tra 00H e
FFH; si tratta di un'istruzione di
chiamata di procedura, di norma costituita da
2 bytes (il codice operativo CDH e l'operando a
8 bit xyH). |
| Il suo compito assomiglia a quello svolto dall'istruzione
CALL address:
la differenza sta nel fatto che questa è destinata a chiamare le
nostre procedure (cioè quelle definite per
nostro comodo nei
nostri programmi sorgente) mentre
INT
xyH
rende disponibili le procedure di
sistema (cioè quelle predisposte dal costruttore
nella BIOS o dal
sistema operativo o dalle sue estensioni). |
| Si tratta di una struttura dinamica,
nel senso che
qualunque software fatto girare successivamente (anche quelli prodotti da
noi) può sostituire i vettori predisposti, purchè
a ciascun nuovo
puntatore sia associato anche un nuovo servizio alternativo funzionante! |
| Il compito di trovare il vettore a partire dal
numero n
(binario a 8 bit) e di eseguire il codice
puntato dal vettore spetta proprio alla potente istruzione
INT
xyH:
in pratica:
| moltiplica per 4 il numero n,
localizzando la prima delle 4 locazioni della tabella nelle quali è
ospitato l'indirizzo logico effettivo della procedura corrispondente. |
| estrae i 4
bytes, ordinati con la consueta logica Lo-Hi (cioè rispettivamente con il
significato: Low OFFSET, High OFFSET , Low SEGMENT , High SEGMENT),
e li copia nei 2 registri
CS:IP. |
| in questo modo obbliga il processore ad eseguire la
procedura di sistema desiderata. |
|
| Naturalmente l'istruzione
INT,
detta Interrupt software, provvede anche
ad altri compiti di contorno, descritti nella
scheda ad essa dedicata,
volutamente ignorati per non perdere d'occhio il nostro obiettivo. |
| Per esempio se abbiamo bisogno delle
procedure che controllano il
video chiameremo INT 10H:
| la CPU
calcola il punto esatto della Tabella
in cui è scritto il vettore
corrispondente, moltiplicando per 4 il numero 10H, passato come operando
(10H*4=00040H, 64 bytes sotto l'inizio) |
| quindi preleva dalle
4 locazioni consecutive (da 00040H a
00043H) i bytes in esse contenuti, e li
trasferisce in CS:IP. |
| Se il vettore recuperato dalla tabella (e finito in
CS:IP) fosse
C31C:198A sarebbe stato rappresentato dalla
sequenza dei seguenti bytes: |
Vettore in Tabella |
byte |
0000:0040
|
8A |
0000:0041
|
19 |
0000:0042 |
1C |
0000:0043
|
C3 |
|