Vous n'êtes pas identifié.
Le bug de mes fonctions était que j'avais utilisé le segment
ds pour pointer sur l'adresse 0x1A20
et es pour pointer sur l'adresse 0x1AA0
Mes voila apparement il aimai pa tro ca alors je voudrai savoir pourkoi l'emploi du segment ds plantait la calto (C pt ê une question stupide ms bon je m'y connais pa tro)
Et aussi je voudrai savoir si il y a d'autres segment ke je pourrais utilliser (ca me ferai gagner kelkes cycles) fs et gs ne marche pas avec TC 3 :cry: :cry:
@+
Hors ligne
Es-e que t'es sûr que le segment ds est constant? C'est data segment, c'est ça?
Oui et rien ke de mettre une valeur dedans mon prog ne s'arrète plu ...... :cry:
Hors ligne
Le problème c'est que t'utilise ces foncrtions assembleur dans des programmes en C, rien ne te prouve que TC ne va pas changer la valeur d'un registre au cours de l' exécution d'un programme... il y a un #pragma pour préserver les registre mais ça ralentie énormément ton programme, le mieux est de rajouter une instruction dans toutes tes foncrtions pour mettre la bonne adresse, sinon rien est garantie.
Au fait il y a déjà très longtemps j' avais préciser que l'adresse 0x1A20 était suceptible de changer c' est pourquoi il fallait lire la valeur de cette adresse à une autre adresse sinon un jour vos jeux ne fonctionneront plus...
Hors ligne
non ds ne change pas mais peut faire planter le prog
Ne l'utilise qu'en cas de secours
Hors ligne
ouais pour écrire hors du segment n'utilise que es (que tu n'as même pas besoin de sauvegarder).
Pske si tutilise DS comme l'ont dis mes chers camarades :-) non seulement ca plante ms en + il faudrait le sauvegarder alors ca sert à rien.
Voilou !
Hors ligne
Ouais j'ai vu ms y faut que je fasse une addition en + si j'utilise pas ds donc c 1 pe plu long.......
Donc on peut pas utiliser un autre seg et pkoi fs et gs ne marche pa avec TC3 ??
Hors ligne
Ces registres sont pour le mode 32bit protégé et la v30mx et un 286 en mode réel 16bit
Hors ligne
Ah ok merci dommage comment je fais alors ?? Il y a d'autres registres dispo ?
Hors ligne
En fait c meme un 186 ave cqq instructions en +. Non pas d'autres segs. mais pourquoi pas une chtite variable ?
Hors ligne
Ouais mais ca marche pas je croi : tu pe pa faire mov [ecran:si], al ........... (Ecran = variable!) Comment on fait ??
Hors ligne
Push et pop ça marche, mais tu perd du temps c la seule solution, ou alors tu joue avec ss, sans faire de pop ni push entre temps.
@+
Hors ligne
ds c un segment ki normalement désigne la mémoire... k mais le pb, c ke tu pe pas mettre n'importe kelle valeur dedans. bah oui, en fct de la machine (du type de machine) ses bornes changent! regarde si tu trouves des schémas de mémoires( ou t'as les segments de piles de données etc...) ca pourra t'aider
Hors ligne
Ok merci je v voir ca !
Hors ligne
Je crois que TC te permet de laisser ds constant, c'est dans les options. pourquoi ça ralentirait tellement le prog?
ça ralentirait car ça empêchera le code compiler pas TC d'utilser DS à la place il fera des POP et PUSH,
le mieux est que tu face à chaque fois que t'utilse DS mov DS,ta_variable
Hors ligne
Et si tu fais asm "mov ds, adresse_de_la_page" avant chaque appel de fonction graphique? Ca ralentit rien du tout... Et ça t'évite d'écrire hors de la mémoire parce que ds a changé.
C'est ce que je viens de dire :P
Hors ligne