Interruption 13h |
Fonction 02h |
Lit sur le disque |
---|---|---|
PC, XT, PC Junior, XT/286, AT, PS/2 |
Description
Cette fonction permet d'effectuer la lecture de secteurs.
Entrée
Registre | Description | ||
---|---|---|---|
AH | 02h | ||
AL | Ce registre indique le nombre de secteurs à lire (doit être supérieur à 0) | ||
CH | Ce registre indique le nombre de cylindre | ||
CL | Ce registre indique le numéro de secteur pour le bit 0 à 5, et les bits 7 et 8 correspondent au bits 8 et 9 du nombre de cylindre. | ||
DH | Ce registre indique le numéro de tête de lecture/écriture | ||
DL | Ce registre indique l'unité (00h à 7Fh: lecteur de disquette; 80h à FFh pour les disques durs) | ||
ES:BX | Cette paire de registre indique l'adresse du tampon |
Sortie
Drapeau | Valeur | Description | ||
---|---|---|---|---|
CF | 1 | Erreur, dans ce cas: | ||
Registre | Description | |||
AH | Code d'erreur: | |||
Valeur | Description | |||
01h | Cette valeur indique le numéro de la fonction est invalide | |||
02h | Cette valeur indique la marque d'adresse introuvable | |||
03h | Cette valeur indique une tentative d'écriture sur l'unité de disque protégée contre l'écriture | |||
04h | Cette valeur indique un secteur appelé introuvable | |||
05h | Cette valeur indique un échec de réinitialisation | |||
06h | Cette valeur indique une disquette absente | |||
07h | Cette valeur indique une mauvaise table de paramètres | |||
08h | Cette valeur indique un débordement DMA | |||
09h | Cette valeur indique un transfert de données par-delà la limite de segment | |||
0Ah | Cette valeur indique un secteur défectueux | |||
0Bh | Cette valeur indique une piste défectueux | |||
0Ch | Cette valeur indique un type de média introuvable | |||
0Dh | Cette valeur indique un nombre de secteur invalides | |||
0Eh | Cette valeur indique une marque de contrôle détectée | |||
0Fh | Cette valeur indique un niveau de DMA interdit | |||
10h | Cette valeur indique une erreur de lecture ou d'ECC | |||
11h | Cette valeur indique une erreur CRC corrigée | |||
20h | Cette valeur indique une erreur sur le contrôleur de disque | |||
40h | Cette valeur indique une piste introuvable | |||
80h | Cette valeur indique une erreur de dépassement de délai ou de lecture ne réagissant pas | |||
AAh | Cette valeur indique une unité pas prête | |||
BBh | Cette valeur indique une erreur indéfinie | |||
CCh | Cette valeur indique une erreur d'écriture | |||
E0h | Cette valeur indique une erreur dans le registre d'état | |||
FFh | Cette valeur indique une échec de l'opération demandant l'état | |||
0 | Tous va bien: | |||
Registre | Description | |||
AH | 00h |
Remarques
- Sur les disques durs, les 2 bits supérieurs du numéro de cylindre à 10 bits sont placés dans les 2 bits supérieurs du registre CL.
- Sur les disques durs, le code d'erreur 11h indique qu'une erreur de lecture s'est produite ayant été corrigée par l'algorithme ECC; dans ce cas, le registre AL contient la longueur de rafale. Les données renvoyées sont probablement bonnes, bien qu'il y ait une petite chance que les données n'aient pas été corrigées correctement. Si un transfert multi-secteur a été demandé, l'opération s'est terminée après le secteur contenant l'erreur de lecture.
- Sur les unités de disquettes, une erreur peut résulter de l'arrêt du moteur du lecteur au moment de la demande. Le BIOS en ROM n'attend pas automatiquement que le lecteur atteigne sa vitesse avant de tenter l'opération de lecture. Le programme demandeur doit réinitialiser le système de disquette (interruption 13h, fonction 13h) et recommencer l'opération 3 fois avant de supposer que l'erreur résulte d'une autre cause.
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 62 à 64.
Dernière mise à jour : Jeudi, le 3 mars 2016