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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager