Bonjour,
comme laisse présager le titre, je cherche la liste complète des interruptions de mon BIOS, savez-vous où je peux la trouver ?
Bonjour,
comme laisse présager le titre, je cherche la liste complète des interruptions de mon BIOS, savez-vous où je peux la trouver ?
Bonjour
Si je me souviens bien le BIOS ne gère encore que les interruptions créées à l'origine par le DOS il y en à 46h en hexadécimal bien sur donc 70 en décimal.
Il y a en réalité 33 interruptions de documentées.
Mais elles ne sont pas toutes employées.
Je crois mais il faudrait vérifier de ce que je me souviens :
01h =mode pas à pas
02h = erreur mémoire
03h = point d'arrêt
04h = dépassement de capacité
05h = impression d'écran
08h = mise à jour du compteur d'heure
09h = gestion du clavier
10h = routine de gestion vidéo
12h = détermination de la mémoire disponible
13h = gestion des unités de disque
14h = gestion du port série
16h = gestion du clavier
17h = gestion de l'imprimante
19h = redémarrage de l'ordinateur
1Ah = gestion de l'heure et de la date
1Bh = gestion du Ctrl-Break
1Ch = incrémentation de l'heure
1Dh = paramètres vidéo
1Eh = paramètre disquette
1Fh = caractères graphiques vidéo
20h = routine de terminaison
21h = appel à MSDOS
22h = adresse de la routine de terminaison
23h = adresse de la routine de gestion du Ctrl + C
24h = adresse de la routine de gestion des erreurs critiques
25h et 26h = lecture et écriture absolue sur disque
27h = installation d'un programme en mode résident
28h = MSDOS en attente
2Fh = impression en tâche de fond (spooler)
33h = gestion de la souris
41h et 42h = paramètres des disques durs
Je pense qu'un BIOS moderne gère encore tout ça, il doit peut être en gérer plus, mais là je ne programme plus en assembleur depuis longtemps.
Merci beaucoup pour ce début, n'existe t'il pas justement une interruption qui m'afficherait à l'écran toutes les interruptions que gère le BIOS ? Parce que vous parlez de l'OS MS-DOS pouvez-vous me confirmer que les interruptions citées sont bien indépendantes de tout OS ?
Bonjour,
La seule interruption MS-DOS ici est l'interruption 21h, donc si tu ne l'utilises pas, logiquement ces instructions sont supportées par tous les BIOS (modulo fantaisies du constructeur de la carte mère comme toujours ).
Au passage, y'a un outil formidable qui s'appelle , qu'il serait bon ton d'utiliser de temps en temps au lieu de poser une question aussi triviale.
Vu les recherches que tu effectue et les questions que tu pose, ça m'étonnes que tu ne connaisse pas osdev.org.
http://wiki.osdev.org/BIOS
Si je te suis chrtophe le BIOS n'utiliserait que 4 interruptions ?
INT 0x10 = Video display functions (including VESA/VBE)
INT 0x13 = mass storage (disk, floppy) access
INT 0x15 = memory size functions
INT 0x16 = keyboard functions
Je ne me suis jamais posé la question, car je n'ai que très rarement touché le BIOS en assembleur 8086 avec Debug.
Je me souviens du temps où je formatais le disque dur avec Debug.
Lorsque je faisais des formations en entreprise (SNCF) pour des BTS informatiques industrielles de l'école d'Aurillac dans le Cantal, je leur apprenais surtout à détourner les interruptions matérielles.
Le must étant l'INT 10h vidéo et l'INT 16h clavier, mais surtout à détourner le Ctrl Break et le Crtl C.
Non, ce sont les principales.Si je te suis chrtophe le BIOS n'utiliserait que 4 interruptions ?
De mémoire int 0x08 à 0xf - irq 0 à 7 (je ne me rappelle plus les vecteurs d'interruption pour les irq 8 à 15)
int 0x14 - port série
int 0x11 - informations sur le matériel
int 0x19 - reboot
int 0x18 - lançait le basic sur les premiers PC qui en intégrait un dans le bios
d'autres vecteurs stockent des infos et ne sont donc pas vraiment des interruptions, mais ne sont pas libres à l'utilisation par un OS.
pour plus d'informations, tu as tout en bas de la page un lien vers toutes les int possibles, y compris les fonctions int ajoutées par DOS, Windows et autre applis connues.
Il y a 256 interruptions possibles (du moins en mode réel, en mode protégé c'est géré différemment).
edit :
dans ton message, les int égales ou supérieures à 0x20 sont des int DOS, non BIOS à l'exception des 0x41/42 qui sont des données BIOS.
Je ne peux pas te dire exactement pour les interruptions utilisées par le BIOS mais de toute façon il est aussi obligé d'utiliser la 25h et la 26h pour gérer le disque dur.
Il existe aussi des fonctions de l'INT 21h qui gère le disque dur par exemple :
La 0Dh qui réinitialise le tampons de fichier.
La 0Eh qui sélectionne le disque
La 0Fh ouverture d'un fichier avec FCB
La 10h fermeture d'un fichier avec FCB
La 11h trouve le premier fichier d'un répertoire
La 12h trouve le fichier suivant
La 14h lecture séquentielle
La 15h écriture séquentielle
La 16h création d'un fichier avec FCB
La 17h renomme un fichier
La 19h lecture du disque courant
La 1Ah spécifie la DTA
La 1Bh lecture des paramètres du disque courant
La 1Ch lecture des paramètres d'un disque quelconque
La 21h lecture relative FCB
La 22h écriture relative
La 23h lecture de la taille d'un fichier FCB
La 24h sélection d'un enregistrement relatif
La 25h écriture d'une adresse dans le vecteur d'interruption
La 26h création d'un nouveau PSP
La 27h lecture relative d'un bloc d'enregistrement
La 28h écriture relative d'un bloc d'enregistrement
La 29h analyse d'un nom de fichier
Il ne s'agit là que des fonctions de l'INT 21h pas des interruptions
Non les interruptions 0x25 et 0x26 sont des interruptions DOS qui appellent l'int 0x13. La différence est que les int 0x25 et 0x26 appellent des secteurs logiques qui se suivent le secteur 0 étant si je me rappelle bien le 1er secteur après les FAT. Elles évitent de devoir calculer la correspondance numéro secteur/tête/piste. Un peu comme le LBA.
C'est loin tout cela, j'ai arrêté de programmer en assembleur lorsque j'ai fait mon Burn-Out en Avril 1992.
Mon dernier programme était un créateur de fichier texte CF.exe, il bloquait l'Edit du DOS en nombre de ligne.
Ce programme utilisait l'INT 16h ce qui permettait de faire un fichier DOS avec le caractère Alt 255 et la barre espace dans le nom du fichier.
Un fichier créé avec dans le nom du fichier la barre espace comme caractère était ineffaçable par le DOS, qui accepte le caractère Alt 255 mais pas la barre espace.
Il faut quand même rester prudent quand on manipule les interruptions car une erreur et c'est le crash assuré
En assembleur, on les manipule directement, non ? Je me souviens d'appels à des fonctions avant l'appel de l'interruption. En C, ou même en Pascal, je me souviens d'avoir appelé des routines d'interruptions pour gérer la souris par exemple (pour des programmes DOS).
Avec le mode protégé, on ne peut plus les manipuler comme ça.
Merci beaucoup pour ce lien http://www.ctyme.com/intr/int.htm
Encore une question, ces interruptions sont-elles identiques sur tous les pc ?
oui.
Mais attention, elles sont valables en mode réel, en mode protégé sur les systèmes récents, c'est géré différemment.
Sous MS-DOS, on utilisait l'int 0x21 pour appeler les fonctions système.
Sous Linux, on utilise l'int 0x80 pour accéder aux fonctions système avec passage des paramètres dans les registres CPU, voir si c'est le même principe en 64 bits, j'ai jamais testé.
Sous Windows, on utilise pas les int pour accéder aux fonctions systèmes mais empilement des paramètre et appel de la fonction par un call.
Merci, dans le cas d'un pc sans ces OS, mais avec un programme bootable fait maison, que je sois en mode protégé ou long, Pourrais-je toujours utiliser l'entièrté des interruptions bios disponibles en mode réel ?
Non, il te faudra créer tes propres interruptions en mode protégé.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager