[8086] Parcourir un tableau à l'envers dans une pile
Bonjour,
je ne sais pas si le titre du message est clair. Je dois créer une procédure qui inverse la position des lettres dans un mot. Mais pour faire çan je dois parcourir un tableau « à l'endroit » et celui où je range les caractères, je dois le parcourir à l'envers.
J'ai déjà dû créer une procédure qui enlevait les espaces dans une phrase.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| EFFACE_ESPACE PROC far
PUSH BP
MOV BP,SP
MOV SI,[BP+8]
MOV DI,[BP+6]
MOV CX, CAR1
boucle3:
MOV AL,[SI]
CMP AL,0020H
JE cas_suivant
JNE ajout
ajout:
MOV [DI],AL
INC DI
cas_suivant:
INC SI
LOOP boucle3
POP BP
ret 4
endp
PROGRAMME PRINCIPAL
LEA BX, MESS_ENTREE
PUSH BX
LEA BX, MESS_SANS_ESPACE
PUSH BX
CALL EFFACE_ESPACE
LEA DX,MES_SANS_ESPACE
CALL OUTPUT_MESSAGE |
Cependant, je ne comprends pas tout dans la procédure. On nous a un peu donné la réponse. J'ai un peu du mal à voir la différence entre SI, DI et [SI], [DI]. [BP+x] sont les adresses de l'emplacement des PUSH ?
DONC : Comment parcourir un tableau à l'envers sachant qu'il est dans une pile? Une âme charitable pourrait-elle me détailler les interactions avec la pile ?
Je vous remercie d'avance.
PC; Machine virtuelle XP SP3 32bits, sous Seven 64bits, E8400 3GHz
TASM + TD