sollda
Messages postés2Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention13 octobre 2003
-
10 oct. 2003 à 23:13
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
13 oct. 2003 à 09:58
Bonjour à tous,
j'ai écrit un petit prog de test en asm (compilé avec ML.EXE), dont voici le code :
-------------------
include winapi.inc
.data
mess db "Bonjour, comment allez-vous?",0
.code
start:
mov edx, offset mess
push eax
mov ax, 0900h
int 21h
pop eax
int 20h
end start
-------------------
Lorsque je l'execute sous wondows xp, windows affiche une messagebox avec le message suivant:
---------------------
affiche.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.
---------------------
et il me demande aussi si je veux le debugger (visual studio), si je repond oui, le dasm s'ouvre et affiche le message suivant:
---------------------
Unhandled exception in affiche.exe: 0xC0000005: Access Violation.
---------------------
Les interruptions ne fonctionnent pas, j'en ai testé d'autres comme la 3Ch (creation de fichier), la 3Eh (fermeture de fichier), 40h (écriture dans un fichier) et elles me donnent le meme message d'erreur, pourquoi ?
Chrishka
Messages postés21Date d'inscriptiondimanche 17 août 2003StatutMembreDernière intervention27 mars 2004 10 oct. 2003 à 23:45
C'est comme ça, les fonctions de bases ne sont plus implémentées sous forme d'interruptions sous windows, mais sous forme d'un ensemble de fonctions, l'API win32. Essaye ça, tu verras ça marchera bcp mieux.
-------------------
include windows.inc
include kernel32.inc
include user32.inc
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 oct. 2003 à 11:33
Pour la precision elles sont toutes implémentées mais NON accessibles car 'detournees' et comme le dit Chrishka il faut se servir de l'API win32 qui lui seul est autorise a se servir des interruptions car il est en ring0. Voila qui garantit la stabilite du systeme.
BruNews, ciao...
sollda
Messages postés2Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention13 octobre 2003 13 oct. 2003 à 09:38
Salut BruNews et merci pour ta réponse.
je sais que cela fonctionne avec les APIs. Mais, elles n'utilisent pas les interruptions, en arrière plan ? Et, windows doit interdire l'acces direct aux interruptions du dos et du bios ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 13 oct. 2003 à 09:58
Windows utilise bien entendu les interruptions bios ou autres mais au chargement elles sont detournees et il les intercepte.
Moralite: se servir de son api.
BruNews, ciao...