gblade
Messages postés85Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention19 mai 2003 27 déc. 2002 à 12:38
que veux-tu traduires ??
en 32bits on utilise le registre EAX à la place du registre AX mais c'est tout ce que je peux dire sur ce morceau de code
en ASM 32bits ça donnerait
mov eax,dword ptr [nom_de_la_var]
int 10h
de ttefacon, il faut savoir que mov ax,const et mov eax,const génère le même code binaire, simplement, dans un environnement 32bits, cela sera interprété mov eax,const et dans un env 16bits cela sera compris comme mov ax,const par contre, si tu assembles ton code avec un assembleur en mode 32bits et que t'écris mov ax,const l'assembleur rajouteras automatiquement le préfixe d'opérande 66h devant tes instructions
voilà je sais aps si ça t'as servi m'enfin
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 27 déc. 2002 à 13:18
J'avais déjà essayé avec le registre extend. C'est mon compilo C++ 32 bits qui est pas content quand je le compile. Par contre avec Turbo C++ de Borland ça marche très bien.
cs_Nemesis
Messages postés22Date d'inscriptiondimanche 6 octobre 2002StatutMembreDernière intervention18 avril 2003 29 déc. 2002 à 19:40
Le problème vient peut être que ton compilateur a besoin d'une option pour lui dire que c'est du 32 bits (surtout si il est vieux). Le problème peut venir aussi du fait que tu utilise l'instruction "int 0x10" qui est une interruption (si tu avais oublié), et que ton programme est censé fonctionner en mode protégé (type win32)... Si tu veux utiliser le mode VGA sous win32, tu peux utiliser les fonctions directX, mais demande à quelqu'un d'autre parceque moi j'y connais rien...
cs_Nemesis
Messages postés22Date d'inscriptiondimanche 6 octobre 2002StatutMembreDernière intervention18 avril 2003 29 déc. 2002 à 19:40
Le problème vient peut être que ton compilateur a besoin d'une option pour lui dire que c'est du 32 bits (surtout si il est vieux). Le problème peut venir aussi du fait que tu utilise l'instruction "int 0x10" qui est une interruption (si tu avais oublié), et que ton programme est censé fonctionner en mode protégé (type win32)... Si tu veux utiliser le mode VGA sous win32, tu peux utiliser les fonctions directX, mais demande à quelqu'un d'autre parceque moi j'y connais rien...
Nemesis
Vous n’avez pas trouvé la réponse que vous recherchez ?
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 29 déc. 2002 à 23:48
DirectX? Bha non ça ne me tente, je préfère la SDL ou Allegro et même OpenGl.
Mon compilateur n'est pas vieux c'est gcc mais je ne sais opas quelle version : je crois que c'est celle qui est juste en-dessous de la 3.
C'est quoi exactement mode protégé?
gblade
Messages postés85Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention19 mai 2003 30 déc. 2002 à 09:32
Pourtant, DirectX est, des 2 APIs (avec OpenGL), celle qui peut se rapprocher le plus du VGA avec écriture directe sur les surfaces par exemple.
Mais pourquoi ne veux-tu pas utiliser DirectX ? Question de portabilité ?
Pour le PMODE bah le processeur possède 2 modes de traitement des programmes
- le premier que tlm connait, le mode réel
- le second est le mode protégé, "natif" de l'ordinateur
Dans ce mode il n'y a plus d'interruptions du DOS ou du BIOS, tout est géré pour un seul programme, l'OS ou l'exécutable, aussi bien les interruptions (via la IDT), les tâches (via les TSS) ce qui va donner le multitâche, ou encore de la mémoire (le paging et la segmentation, la mémoire virtuelle...).
Les opérandes peuvent être, selon le segment, de 16 ou 32 bits (choix du programmeur).
Et chose la plus importante, un programme peut indexer jusqu'à 4Go de mémoire (RAM/ROM + mem virtuelle) et même plus sur les modèles plus récents mais je me souviens plus combien précisément.
cs_Nemesis
Messages postés22Date d'inscriptiondimanche 6 octobre 2002StatutMembreDernière intervention18 avril 2003 30 déc. 2002 à 11:58
Le mode protégé permet de faire fonctionner plusieurs programmes en même temps. Le système d'exploitation empèche (normalement) à ton programme d'accèder à la mémoire des autres programmes. De plus, en mode protégé, les interruptions ne sont pas disponibles: tu dois utiliser les API.
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 30 déc. 2002 à 19:10
Oui la portabilité est la grande raison. Et la deuxième c'est le SDK de 100 Mo. Je trouve que c'est beaucoup trop quand tu compares avec la SDl ou OpenGl (ce n'est pas une question de téléchargement). Et puis le DirectX ça m'a jamais tenté.