Interruption 26h: Écriture absolue
Cette interruption permet d'effectuer une écriture de façon absolue sur une unité de disque logique géré par le système d'exploitation.
Entrée
Registre | Description | ||||
---|---|---|---|---|---|
AL | Ce registre permet d'indiquer l'unité de disque logique: | ||||
Valeur | Description | ||||
0 | A: | ||||
1 | B: | ||||
2 | C: | ||||
3 | D: | ||||
4 | E: | ||||
5 | F: | ||||
6 | G: | ||||
7 | H: | ||||
8 | I: | ||||
9 | J: | ||||
10 | K: | ||||
11 | L: | ||||
12 | M: | ||||
13 | N: | ||||
14 | O: | ||||
15 | P: | ||||
16 | Q: | ||||
17 | R: | ||||
18 | S: | ||||
19 | T: | ||||
20 | U: | ||||
21 | V: | ||||
22 | W: | ||||
23 | X: | ||||
24 | Y: | ||||
25 | Z: | ||||
CX | Ce registre permet d'indiquer la fonction étendue ou le nombre de secteur à écrire: | ||||
Valeur | Description | ||||
1 à FFFEh | Ces valeurs permettent d'indiquer le nombre de secteur à écrire. | ||||
FFFFh | Cette valeur permet d'indiquer le mode de position et du tampon destinataire pour les unités de disque logique de taille supérieur à 32 Mo, dans ce cas: | ||||
Registre | Description | ||||
DS:BX | Cette paire de registres permet d'indiquer l'adresse de la structure d'information: | ||||
Déplacement | Longueur | Description | |||
00h | 4 octets | Ce champ permet d'indiquer le numéro du secteur | |||
04h | 2 octets | Ce champ permet d'indiquer le nombre de secteur à lire | |||
06h | 4 octets | Ce champ permet d'indiquer l'adresse du tampon contenant les données | |||
DX | Ce registre permet d'indiquer le premier secteur à écrire. | ||||
DS:BX | Cette paire de registres permet d'indiquer le tampon contenant les données si CX n'est pas égale à FFFFh. |
Sortie
Drapeau | Valeur | Description | |||
---|---|---|---|---|---|
CF | 0 | Tous va bien | |||
1 | Erreur, dans ce cas: | ||||
Registre | Description | ||||
AX | Code d'erreur: | ||||
Valeur | Description | ||||
01h | Cette valeur permet d'indiquer que l'instruction est invalide | ||||
02h | Cette valeur indique la marque d'adresse n'est pas valide | ||||
04h | Cette valeur indique que le secteur est introuvable | ||||
08h | Cette valeur indique une erreur DMA | ||||
10h | Cette valeur indique une erreur CRC | ||||
20h | Cette valeur indique une erreur au niveau du contrôleur de disque | ||||
80h | Cette valeur indique que le périphérique ne réagit pas ou ne répond pas. |
Remarques
- Tous les registres, à l'exception des registres de segments, peuvent être détruits.
- Lorsque cette fonction revient, les drapeaux du microprocesseur initialement poussés sur la pile par l'instruction INT 26h sont toujours sur la pile. La pile doit être effacée par une instruction assembleur POPF ou ADD SP,2 pour empêcher la croissance incontrôlée de la pile et pour rendre accessible toutes les autres valeurs ayant été poussées sur la pile avant l'appel à l'interruption 26h.
- Les numéros de secteurs logiques sont obtenus en numérotant chaque secteur de disque de manière séquentielle à partir du cylindre 0, de la tête 0, du secteur 1 et en continuant jusqu'à ce que le dernier secteur du disque soit compté. Le numéro de tête est incrémenté avant le numéro de piste. Les secteurs logiquement adjacents peuvent ne pas être physiquement adjacents, en raison de l'entrelacement se produisant au niveau de l'adaptateur de périphérique pour certains types de disques.
Références
Aide-mémoire des interruptions du MS-DOS, Edition Marabout, Philippe Mercier, 1990, ISBN: 2-501-01297-6, page 300 à 301.
Dernière mise à jour : Jeudi, le 3 mars 2016