Bonsoir,
Je dois revectoriser l'interruption 08h pour faire appel à une procédure perso.
Seulement voilà, ça ne fonctionne pas ...
- Quand je laisse l'horloge appeler mon interruption, mon débuggeur se fige à la première ligne de celle-ci et tout l'environnement (DOS & pwb) plante, sans m'informer de quoi que ce soit ...
- A l'inverse, quand j'appelle INT 08h dans ma boucle principale, aucun soucis : le débuggeur entre dans la procédure, en ressort et tout se passe bien.
J'ai essayé avec 1Ch, pas mieux ...
Je précise que j'appelle une autre procédure dans ma procédure d'interruption, qui est un peu "lourde" (50 instructions à tout casser).
J'ai cru comprendre qu'il était conseillé d'en faire le moins possible dans 08h ...
Cela dit, même en commentant l'appel à mon autre procédure, voire tout sauf le iret, c'est pareil.
Au cas où, l'interruption en question, bien que je doute que ça vienne de là ... Mais alors d'où ?
Je sais que c'est très peu, mais je suis perdu et ne sais pas vraiment dans quelle direction orienter mes recherches.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 NewInt proc far push ds push ax mov ax,MyData mov ds,ax assume ds:MyData ; Ancienne 08h CALL Ex08h ; Ex08h est un double mot stockant l'adresse de l'ancienne 08h récupérée plus tôt de la sorte : ;MOV AH, 35h ;MOV AL, 08h ;INT 21h ;MOV WORD PTR[Ex08h], BX ;MOV WORD PTR[Ex08h+2], ES ;Procédure utile au programme CALL UpdateData pop ax pop ds assume ds:nothing iret NewInt ENDP
Merci d'avance pour votre aide.
Partager