|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 9 ![]() |
Bonjour,
si j'ai bien compris, la pile est une zone de mémoire qui permet de conserver de manière temporaire des données (par exemple, l’état des registres lors d’un appel de procédure). Il faut utiliser alors le registre BP (géré par le programmeur) pour accéder à ces arguments (cela permet de se déplacer dans la pile pour accéder aux informations sans avoir à modifier SP), mais je ne vois pas comment utiliser BP pour ce que je veux faire. Mais comment fait-on exactement pour chercher des informations dans cette dernière quand on a fait juste avant ce genre d'instruction : Code :
Ce que je cherche à faire, c'est lire dans des positions données, c'est à dire lire dans la position de back pour vérifier si il y a bien back, et lire dans la position de pvp si il y a bien pvp. Aussi, je crois que SP est incrémenter ou décrémenter de 2, donc ici, la position de back = position de pvp +2, non ? Merci d'avance pour votre aide. |
||
|
|
00
|
|
|
#2 | |||||||||
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 610 ![]() |
Bonjour,
Citation:
Citation:
« BP » signifie « Base Pointer ». En général, on empile BP puis on copie l'état du pointeur de pile SP dans BP. Ensuite, de là, on se sert du contenu de ce registre comme adresse de référence associée à un offset pour accéder aux différentes variables. Citation:
À noter toutefois que c'est le couple ES:BP et pas BP seul qui pointe ta chaîne. Il faut également passer un certain nombre d'infos, mais tu dois déjà le savoir : http://www.ctyme.com/intr/rb-0210.htm Citation:
Citation:
|
|||||||||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 9 ![]() |
Merci pour tes réponses, mais je crois que j'ai voulu m'embarquer dans quelque chose d'un peu trop complexe par rapport à ce que je veux faire fondamentalement.
Finalement, j'ai une autre question majeur : je fais une comparaison qui me permet de diriger l'utilisateur vers une page, en fonction de la place du curseur quand celui si à appuyer sur la touche entrée (pour une navigation dans plusieurs menu en sélectionnant des options). Mon but, c'est qu'en fonction des différents choix faits, c'est tel ou tel fichier qui est chargé. J'ai donc pensé à incrémenter un registre (CX) dans une page que je n'affiche pas et qui ne servira qu'à ça. Exemple: Code :
Mais d'après ce test peu concluant, j'ai cru comprendre que je ne peut pas remplir un registre que dans une page, chaque page n'ayant pas ses propres registres (je ne sais pas pourquoi j'ai cru ça ...) Donc j'ai trouvé un autre moyen, mais je ne sais pas du tout comment faire. Au lieu d'incrémenter CX comme je le faisais avant, je comptais écrire à la suite les 3 valeurs, pour ensuite les lire et les additionner, mais je ne sais pas si c'est possible de lire ce qui a déjà été afficher sur une page ... Peux-tu m'aider stp ? |
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : novembre 2010 Messages : 50 ![]() |
@Obsidian
BP, à l'instar de SP, est associé au registre de segment de pile SS. Attention aux erreurs de frappe. |
|
|
00
|
|
|
#5 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 4 610 ![]() |
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 9 ![]() |
Merci d'avoir pris le temps de me répondre
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : novembre 2010 Messages : 50 ![]() |
Au temps pour moi, il s'agit bien du couple ES:BP.
La fonction 13h ne peut être utilisée que sur les AT, voire sur les PC et XT équipés d'une carte EGA (munie de son propre BIOS). Je ne l'ai guère utilisée et, par conséquent, je ne me rappelais pas qu'elle épuisait tous les registres généraux. D'où cet usage de BP. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com