cs_Xs
Messages postés368Date d'inscriptionmercredi 14 novembre 2001StatutMembreDernière intervention 1 septembre 2008
-
19 juin 2002 à 14:38
MadDuck427
Messages postés4Date d'inscriptionjeudi 26 juin 2003StatutMembreDernière intervention 1 juillet 2003
-
1 juil. 2003 à 22:02
salut !
je travaille sous VC++ et j'aimerais utiliser une interuption processeur : 19h
mon code actuel marche mais au lieu d'eteindre le PC, il le fait plante (remarquez ca change pas grand choses)
mon code :
int main(int argc, char* argv[])
{
_asm{
mov AH,0
mov AL,0x19
int 19h
}
return 0;
}
remarquez que si vous savez pas la syntaxe VC++ mais DEVC++, je suis prenneur aussi
****************************
Le C/C++ et une Veritable merveille !
****************************
cs_PierreF
Messages postés33Date d'inscriptionmercredi 15 mai 2002StatutMembreDernière intervention24 octobre 2003 23 juin 2002 à 12:00
Le problème c'est que tu veut appeller un interuption du dos (16 bit) avec un programme win32.
VC++ ne sais faire que des prog win32. Si tu veut faire un appelle d'un l'interuption 16 bit tu doit utiliser un compilateur C++ 16 bit.
Int19h
Messages postés58Date d'inscriptionjeudi 25 avril 2002StatutMembreDernière intervention19 juillet 2003 29 juin 2002 à 18:19
olleh
Je sais pas si le faite de compiler en 32bits perturbe le deroulement du programme... Ca me semble bizzard, l'inverse oui, mais la... Bref.
Par contre, tu utilises VC++, t'es donc sous windows. Le probleme est que windows redirige une grand partie des interruptions. Donc si tu utilies ses fonctions, certaine ne fonctionne plus comme sous DOS.
MadDuck427
Messages postés4Date d'inscriptionjeudi 26 juin 2003StatutMembreDernière intervention 1 juillet 2003 1 juil. 2003 à 21:40
-------------------------------
Réponse au message :
-------------------------------
En fait l'int 19h est mal documentée et surtout commentée différemment d'un bookin à l'autre.
D ailleurs je ne voit pas ce ke sont ces paramètres dans AX!
En fait Int 19h sert ds tt les cas à charger le boot sector ou le MBR du disk dur (suivant parametrage du BIOS). Mais jamais à éteindre le PC!
Cette interruption est à utiliser uniquement en mode réel (DOS/Mode DOS sous Win9x).
Je ne sais si tes progs tournent sous DOS ou en émulation DOS sous Win mais Windows traite cette interruption en faisant quitter le programme; et sous DOS int 19h ne devrait pas etre utilisée (ou alors uniquement à partir d' un secteur de boot) car elle recharge le boot sector sans tenir compte du fait ke des interruption (IRQ) peuvent pointer sur cette zone provoquant alors le crash du PC.
Etant moi meme interessé par le fait d'éteindre le PC par voie logicielle (sous DOS, car sous Win il y a ExitKernel...), je n'ai jusk alor jamai trouvé un moyen standard d'y arriver.
Voilà sur ce bon courage!
MadDuck427
Messages postés4Date d'inscriptionjeudi 26 juin 2003StatutMembreDernière intervention 1 juillet 2003 1 juil. 2003 à 22:02
-------------------------------
Réponse au message :
-------------------------------
>
>
> Ben en fait voilà j' ai trouvé ça et ca ne marche ke pr les alim ATX (ki tendent à se repandre!)
>
> cut_alim:
> ;---------------connect_to_real_mode
> mov ax, 0x5301
> mov bx, 0x0000
> int 0x15
> ;---------------cut_alimentation
> mov ax, 0x5307
> mov bx, 0x0001
> mov cx, 0x0003
> int 0x15
> ret
>