Je code dans 8086 assembleur et j'ai rencontré une question intéressante. Le sujet est d'évaluer les parenthèses. Si c'était une question dans Java
ou C
, je définirais simplement deux piles - une pour les nombres, et une autre pour les opérandes. Puis-je faire quelque chose de similaire dans Assembly
? Pour autant que je sache, la pile est définie dans les dernières cellules de mémoire du segment de données. Si je définis un autre segment de données, aurais-je une autre pile utilisable?Deux piles dans l'assembleur?
Une autre info: Je ne connais pas la taille d'entrée au début et je suis censé rendre le programme aussi efficace que possible.
Merci!
Merci. Que cela devrait fonctionner? pile 100h poussoir pousser bx ... hache mov, ss mov bx, sp mov ss, 0f00h mov sp, 0f00h Et que j'ai une pile dans la hache: bx et une autre pile dans ss: sp? – DoronZor
Il ne peut y avoir qu'une seule pile active à la fois: celle définie avec SS: SP. Vous pouvez configurer une deuxième zone de mémoire à des fins d'empilage, mais vous devez charger le pointeur complet sur cette région dans la paire SS: SP. –
Également une instruction comme 'mov ss, 0f00h' n'existe pas! Vous ne pouvez pas déplacer une valeur immédiate (nombre) dans un registre de segment. –