Section courante

A propos

Section administrative du site

Interruption 25h: Lecture absolue

Cette interruption permet d'effectuer une lecture 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 à lire :
Valeur Description
1 à FFFEh Ces valeurs permettent d'indiquer le nombre de secteur à lire.
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 recevant les données
DX Ce registre permet d'indiquer le premier secteur à lire.
DS:BX Cette paire de registres permet d'indiquer le tampon recevant 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

Exemple

L'exemple suivant permet de retourner 1 si l'unité de disque spécifié par la variable «Drive» est une unité de disque virtuel (RAM Disk) ou 0 s'il est ne l'est pas :

  1. MOV Temp,0
  2. PUSH DS 
  3. MOV BX,SS 
  4. MOV DS,BX 
  5. SUB SP,0200h 
  6. MOV BX,SP 
  7. CLD 
  8. MOV AX,DS 
  9. MOV ES,AX 
  10. MOV DI,BX 
  11. MOV CX,0100h 
  12. XOR AX,AX 
  13. REP STOSW ; Initialise le tampon à 0 en cas d'erreur
  14. MOV AX,Drive ; le tampon ne sera pas forcément interpréter 
  15. MOV CX,1 
  16. XOR DX,DX 
  17. INT 25h ; Lecture du secteur de démarrage 
  18. ADD SP,2 
  19. JC @@1 
  20. MOV BX,SP 
  21. CMP Byte Ptr SS:[BX+10h],1 ; Vérification d'une simple FAT
  22. JNE @@1 
  23. MOV Temp,1
  24. @@1: 
  25. ADD SP,0200h 
  26. POP DS 
  27. MOV AL,Temp

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