Salut à tous. Je fais un petit programme en C/Assembleur et actuellement, la partie assembleur me pose probleme.Mon but est de connaitre l'état du modem(si il y a une communication en cours ou non par ex.). J'ai fais des recherche et ainsi j'ai trouvé que l'on pouvait connaitre l'état du modem avec l'interruption 14h, fonction 03; J'ai donc fait un petit code assembleur pour pouvoir récupérer cette info.Le code C ne fait qu'appeler cette méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 segment .text global _get_modem_state _get_modem_state: enter 0,0 pusha mov ah, 03 mov dx, 0 int 14h movzx eax, ah popa leave ret
Lorsque j'exécute le programme, il me fait une erreur (de segmentation apparement). Mais lorsque j'enlève la ligne 'int 14h', Le code fonctionne (il n'y a pas d'erreur mais le code renvoie 0, logique). J'ai trouvé quelques remarques disant que les fonctions BIOS ne fonctionné pas en mode protégé. Je ne comprend pas vraiment ( je débute en ASM). Pourtant mon code compile bien (avec NASM). Le code source comporte t-il une erreur de logique ? Merci.
Partager