Bonjour,
je voulais savoir à quoi servait l'instruction:
merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 mov bp,sp push bp
Bonjour,
je voulais savoir à quoi servait l'instruction:
merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 mov bp,sp push bp
La première sert à copier SP dans BP pour garder un pointeur constant sur la pile. SP contient l'adresse du dernier élément de la pile, donc il change à chaque fois que tu utilises PUSH/POP. Comme les données se trouvent quand même toujours au même endroit, c'est plus logique d'utiliser toujours les mêmes expressions (bp+4, bp+6, ...) pour y accéder.
Par exemple si tu as ce code-là :
Et que pour une raison ou pour une autre tu dois ajouter un PUSH entre la première et la troisième instruction, SP+4 ne pointera plus au même endroit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 mov ax, [sp+2] add ax, 2 mov bx, [sp+4] sub bx, 2
Et BP est sauvegardé sur la pile parce que la fonction appelante s'attendra à ce qu'il ne change pas (comme pour SI et DI).
:wq
pouvez vous me donner une explication pour mon problème de calcul à l'aide de la pile svp:
http://www.developpez.net/forums/sho...91#post3021291
J'ai vu tes messages sur ce problème mais je n'ai pas répondu parce que je n'ai toujours pas compris exactement ce que tu devais faire, ton code n'est pas commenté et je n'ai pas TASM donc je ne peux pas tester.
Tu devrais nous donner des indications sur où tu coinces :
- Est-ce que tu as bien compris ton problème ? Est-ce que tu sais le résoudre dans un langage de haut niveau ?
- Est-ce que tu connais les bases nécessaires pour ton exercice : adresser un tableau, créer et appeler une fonction, etc. ?
Les gens postent ici sur leur temps libre, ils n'ont pas envie de chercher pendant une demi-heure ce qui ne va pas dans ton programme alors que toi-même tu ne donnes pas de preuve de bonne volonté.
Edit : je me suis emporté, il est quand même commenté ton code.
:wq
je connais les bases de l'assembleur et j'ai compris l'exo mais le programme devrait fonctionner mais ce n'est pas le cas.
j'ai l'impression que c'est la partie du travail sur la pile qu'il ne sait pas résoudre!!
Fio,
Là, c'est toi qui ne sais pas le résoudre, le programme fait ce que tu lui apprend à faire.
Je ne vois pas en quoi travailler dans la pile te pose problème, ce n'est qu'une zone mémoire comme une autre tant qu'on fait attention aux débordements, etc. (comme pour toute zone mémoire).
Et comme dapounet, je n'ai toujours pas saisi ce que tu veux réellement faire.
Si les cons volaient, il ferait nuit à midi.
-declaration des tableaux
-mise en pile des 8 paramètres (sauvegarde dans la pile)
-appel de la procédure effectuant les opération des y grâce à la pile en utilisant les offset et le décalage pour passer à la n ième valeur du tabx
-restitution à la fin de la procédure des valeurs calculé de y dans le débuggeur
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager