2012-03-01 2 views
1

J'utilise l'assemblage en ligne dans Visual C++ et j'essaie depuis maintenant des jours d'obtenir int 21h pour fonctionner avec mon programme. D'autres interruptions fonctionnent (int 3) ce qui m'amène à croire soit que j'appelle mauvais 21h soit bloqué d'une façon ou d'une autre. Je reçois seulement une erreur d'exécution quand j'utilise int 21h. Si je le commente, ça peut déplacer les registres correctement.Utilisation de int 21h avec l'assemblage en ligne

Jusqu'à présent, je suis devenu cela ensemble:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    __asm { 
     mov ah, 1h 
     int 21h 

     mov dl, al 
     mov ah, 2h 
     int 21h 
    } 
} 
+0

Probablement c'est une erreur de segmentation. Vous ne pouvez pas utiliser ints dans les applications 32 bits autant que je sache. – BlackBear

+0

Comme indiqué, d'autres interruptions fonctionnent. int 3 réussit à créer des points d'arrêt sans erreur. Le seul que je semble avoir des problèmes avec int 21h. – ozdrgnaDiies

+0

Quel genre de programme est-ce? Int21h est une interruption DOS. –

Répondre

6

Vous ne pouvez pas utiliser DOS interrompt dans un programme de fenêtres; ce sont des plates-formes différentes

Vous pouvez utiliser des interruptions matérielles telles que int 1 et int 3.

+0

Lire depuis que j'ai posé cette question et cela semble être le cas. Merci pour l'explication sur pourquoi int 3 fonctionne, a plus de sens maintenant. – ozdrgnaDiies

Questions connexes