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 :
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 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
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.
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
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
Partager