je sais que cela a déjà été posté, mais je me permet d'en remettre une couche, parce que ca
me saoule grave. Windaube ne m'autorise pas à exécuter le code ci dessous:
int main(int argc, char* argv[])
{
__asm {
mov dl, 1
mov ah, 08h
int 13
};
return 0;
}
il me met l'erreur suivante à l'appel de l'int:
First-chance exception in BIOS.exe: 0xC0000005: Access Violation.
Mais ce qui me tue encore plus c'est que "__asm int 3" marche sans pb!
et certaines source de MFC, du DDK ou de DirectX (cf wincore.cpp et compagnie) sont remplis
d'appels à des int, lesquels ne plantent pas!!!! Y'a foutage de gueule là, non?
Eclairez moi, j'en ai ma claque là!
Zeph Le 17/03/2005 à 18:18 [cross]
Il me semble que le nom de ton OS, sans fautes, c'est "Windows"...

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Ben le mode vm86 n'existe plus quand le processeur tourne en 64 bits.
Pollux> Si tu veux faire tourner des progs en vm86, il faut que le proc soit en mode 32 bits (genre si t'installe windows 32 bits là ça va marcher). C'est pas possible autrement.
Godzil> c'est une bonne question. Ils ont quoi comme proc x86-64 bits intel en ce moment ?
Godzil> oué pour l'émulateur il en existe déjà un pour linux. Il a pas encore été porté à windows (par contre il doit tourner sous macosx je pense).
Ton code ne peut fonctionner que sous DOS, windows 3.1x, c'est tout. Pour taper l'int 13, il faut utiliser utiliser un driver systeme. Si tu es sous 98, il faut utiliser un driver de type vxd qui te permettra d'acceder a cette interruption en ring 0.
Pour 2000/xp et superieur il faut un driver systeme .sys qui te permettra aussi d'attaquer en ring 0 cette interruption meme si c'est fortement deconseillé. Hmm, eventuellement sous xp tu peux t'en passer si tu causes une exception genre une division par 0 et tu "la catch" via un SEH qui lui te permettra d'avoirla meme chose que les deux autres.
A mon avis le mieux a faire, c'est un ptit coup de dosbox.