Bonjour

Je débute en assembleur et je cherche comment inverser une chaine de caractères; voici le travail que j'ai effectué jusqu'ici, je copie buffer1 dans buffer2, mon probléme est que je souhaiterais indiquer dans SI la position de la dernière lettre contenue dans BUFFER1, mais je ne sais comment faire. Merci de votre aide.

Cordialement

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
data segment
	mess1 DB 'entrez votre put1 de message'
		  DB 10,13, '$'
	mess2 DB 'votre message'
		  DB 10,13, '$'
	Buffer1 DB 10,?,11 DUP ('$')
	Buffer2 DB 10,?,11 DUP('$')
 data ends 
 
code segment
	assume CS: code
	debut:
		mov ax,data
		mov ds,ax
	    mov ah,09h
		mov dx,offset mess1
		int 21h
		mov ah,0Ah
		lea dx,buffer1
		int 21h
		mov ah,09h
		mov dx,offset mess2
		int 21h
		mov cx,0
		mov cl,offset [buffer1+1]*
                                ; ici est mon probléme
		;lea SI,offset buffer1:[offset buffer1 + 1] 
                                lea DI,buffer2
     trans:
		mov AL,[SI]
		mov [DI],AL
		dec SI
		inc DI
		loop trans
		;affichage de la chaine inversé
		mov ah,09h
		mov dx,offset buffer2 + 2
		int 21h
		;fin programme
		mov ah,4Ch
		int 21h
	code ends
	 end debut