13.Interruptions

Download Report

Transcript 13.Interruptions

Système d’exploitation :
Assembleur
Semaine 13
Les interruptions
Les interruptions (1/4)
•
2 types d’interruptions
– Interruptions matérielles : commandées par le câblage électrique
• (expl 1 : signal horloge : interrompt un prog + de 18 x / sec.)
• (expl 2 : clavier : si touche enfoncée, caract va dans buffer clavier)
– Interruptions logicielles : commandées par le programme
• (fonctions utiles écrites par MS - expl : ouvrir un fichier - code en ROM ou RAM )
•
Les interruptions matérielles
– Quand µpro exécute programme, il peut être interrompu par une interruption sur une
des broches du µpro (INTR ou NMI - voir brochage du µpro en début du cours)
– INTR = interruption masquable (dont on peut condamner l’accès par logiciel : activer
l’indicateur IF - interrupt flag)
– NMI = interruption non-masquable : on ne peut interdire son fonctionnement par
logiciel - offre une très haute priorité
– (pour INTR, il existe une broche INTA - “interrupt acknowledge”- que le µpro active
quand il a reçu une demande d’interruption et qu’il est prêt à la prendre en compte)
•
Les interruptions logicielles
– instruction INT dans le programme en précisant le numéro d’ordre
Les interruptions (2/4)
•
Vecteur d’interruptions
– Une interruption logicielle est caractérisée par son numéro d’entrée dans le vecteur des
interruptions.
– Ce vecteur occupe les 1024 premiers octets de la mémoire et est composé de 256
éléments.
Chaque élément contient une adresse de la forme segment: offset (4 octets).
Cette adresse est celle de la première instruction de la procédure de traitement de
l’interruption.
– Remarque : Les interruptions 0 à 63 sont réservées par le système.(par ex : 21h : DOS)
•
Traitement des interruptions logicielles
–
–
–
–
–
–
–
–
Une instruction INT suivie du numéro de l’interruption survient
Le registre des indicateurs d’état, CS et IP sont empilés (±idem CALL)
TF et IF sont remis à 0
CS et IP sont chargés avec l’adresse du programme d’interruption
Le programme se poursuit en CS:IP
Le programme de l’interruption se termine par IRET
Extraction de la pile de IP, puis CS, puis les indicateurs
Le programme reprend en CS:IP
Les interruptions (3/4)
•
Traitement des interruptions matérielles
– Idem interruptions logicielles, mais l’instruction en cours est terminée avant exécution
de l’interruption.
•
Instructions spécifiques pour interruptions
–
–
–
–
–
•
INT (voir ci-dessus)
IRET (voir ci-dessus)
HLT (halte jusqu’à une interruption ou réinitialisation)
STI : mise à 1 de IF
CLI : mise à 0 de IF
Utilisation des interruptions :
– Pour accéder aux fonctions du système (ouvrir fichier, écrire un caractère…) écrites par
Microsoft
– Possibilité de détourner les interruptions de MS-DOS.
• Exemple
le programme keyb fr détourne l’interruption matérielle associée au clavier.
Quand une touche est enfoncée, le programme (résidant) analyse la touche et transforme le ‘a’
en ‘q’,...
– Fonctions universelles du DOS (fonctions liées à INT 21h) – cf. page suivante
Les interruptions (4/4)
•
Fonctions universelles du DOS
(fonctions liées à INT 21h – numéro du service dans AH)
– Fonction 4Ch : fin de programme avec code de retour via AL.
Ce code de retour peut être testé avec la commande ERRORLEVEL
– Fonction 09h : Affichage d’une chaîne de caractères
Envoie une chaîne de caractères à l’écran à l’emplacement actuel du curseur.
(! Ne pas oublier le fin de chaîne $ - la chaîne à afficher doit se trouver à DS:DX)
– Fonction 0Ah : Lecture d’une chaîne de caractères au clavier
La chaîne lue sera disponible à DS:DX
1er octet = longueur max de la chaîne à lire (avec <CR>)
2ème octet = longueur de la chaîne lue
La chaîne débute réellement au 3ème octet
– Traitement de fichiers,…(3Ch, 5Bh,…)
•
Autres interruptions utiles :
– Test si caractère frappé au clavier : INT 16h, service 01h
– Imprimer un caractère : INT 17h, service 0 (code ASCII du caractère dans AL)