Bonjour.
Je veux faire un programme qui copie l'inverse d'une chaine (message) dans une autre chaine (inverse).
J'ai fais ceci, mais ça ne marche pas.
normalement ça devrait enregistrer les caractères dans l'ordre inverse, mais ça enregistre tout sur la 1ère case mémoire de "inverse".
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 data segment message db "salut$" inverse db 10 dup(0) ; devrait être "tulas$" ends stack segment ends code segment start: mov ax, data mov ds, ax mov es, ax MOV CX, 5 MOV AX,offset message toto: PUSH [DI] ; mov ax, [di] push ax ; je mes la chaine dans la pile INC DI LOOP toto ; dec cx JNZ toto MOV CX, 5 titi: POP AX MOV [inverse], AL LOOP titi mov dx, offset inverse mov ah, 9 int 21h mov ah, 1 int 21h mov ax, 4c00h int 21h ends end start
C'est à dire qu'en regardant pas à pas le déroulement du programme, on voit qu'il place "$" au 1er emplacement, puis "t" à cette même place, en écrasant "$".
D'ailleur, je n'ai pas traité le problème du "$". Dans mon cas, il se met en début de chaine (dernier caractère devient 1er) alors qu'il faudrait qu'il soit encore en dernière position pour être ensuite lu par la fonction d'affichage de chaine.
Merci de votre aide.
Partager