Salut à tous je suis débutant en assembleur et pour m'entrainer je pratique quelques exercices parmi eux j'ai quelques problèmes.
Tout d'abord j'aimerais trier par ordre ASCII une chaine de caractère par exemple si je rentre "salut" je dois avoir en sortie "alstu" j'essaye de le programmer avec cette algo qui disons le me simplifie la tache :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
FinTri <- N - 1
          FAIRE
            Bool <- FAUX
            POUR i allant de 1 à FinTri FAIRE
              SI A[i] > A[i+1] ALORS
                Echanger A[i] et A[i+1]
                Bool <- VRAI
              FINSI
            FINPOUR
          FinTri <- FinTri - 1
          TANQUE Bool = VRAI
Et voici ce que j'en sors en assembleur :

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
data SEGMENT
chaine DB 'Saisir une chaine',10,13,'$'		
car DB ?						
affiche DB 'La chaine triée par ordre ASCII croissant est : ',10,13,'$'
tampon DB 10,0,10 DUP('$')				     data ENDS
 
code SEGMENT
	Assume CS : code, DS : data
 
	deb : 
		MOV AX, data			
		MOV DS, AX
		MOV DX, OFFSET chaine			
		MOV AH, 09h			
		INT 21h	
 
		MOV DX, OFFSET tampon
		MOV AH, 0Ah						
		INT 21h							
 
		MOV DX, OFFSET affiche			
		MOV AH, 09h						
		INT 21h
 
		MOV CX,0
		MOV CL, tampon[1]
		dec cx
		mov si,2
 
		boucle  :
			MOV DL, tampon[SI]
			MOV DH, tampon[SI + 1]
			CMP DL,DH
			JBE paspermut
				MOV tampon[SI], DH
				MOV tampon[SI + 1], DL
			paspermut : 
			INC SI
			loop boucle
 
		MOV DX, OFFSET tampon + 2		
		MOV AH, 09h						
		INT 21h
 
		MOV AL,0						
		MOV AH,4Ch
		INT 21h
 
code ENDS
	END deb
Voilà c'est le source. Le problème c'est que cela marche pour certains mots mais pas pour tous et je ne sais pas pourquoi. Je ne cherche pas à gérer les doublons donc j'aimerais savoir ce qui ne va pas.

Mon deuxième problème et peut etre un peu plus complexe.
J'arrive à afficher un fond d'ecran et une image par dessus.
J'arrive à deplacer l'image mais le problème c'est que quand je la déplace il y a des trainées donc pouvez vous me dire comment éviter ces trainées.
Et la dernière petite chose ( je sais j'en demande bcp d'un coup ) c'est de savoir comment fixer des limites d'ecran en d'autres termes j'aimerais que mon sprite ne sorte pas de l'ecran.

Je vous rappelle que je suis vraiment novice donc si vous pouviez etre gentil avec moi cela serait super mais j'ai confiance.

Merci d'avance.

PS : je bosse en assembleur x86