Comment je faire une tri d'un tableau avec code assembleur ?
Comment je faire une tri d'un tableau avec code assembleur ?
Bonjour,
- Quel processeur? (x86, ARM, etc.)
- Quel taille d'opérande ? (16, 32 , 64 bits)
- Quel type de données à trier ? (entiers, chaînes, etc.)
- Quel type de tri ? (Qsort, Bubble, Heap, etc.)
Le tri ça reste plus de l'algorithmie qu'autre chose. Tu peux commencer par faire un tour sur les différents tris possibles, par exemple ici : http://www.dailly.info/algorithmes-de-tri/index.php
Ensuite il n'y a plus qu'a passer du pseudo-langage à l'implémentation asm.
As-tu déjà un début de code ? A quelle étape ça coince ?
- J'ai compilé et il ya des erreurs...!
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 Data SEGMENT TAB db "7","9","4","0","6" TEMP db 0 DATA ENDS CODE SEGMENT DEBUT:MOV SI,offset TAB ; si pointe sur le debut du tableau MOV [DI],[SI+1] COM:CMP TAB[SI],TAB[DI] JL PERMUTE CMP TAB[DI], TAB[offset TAB +4] JE COM2 INC DI JUMP COM COM2:CMP [SI],offset [TAB+4] JE AFFICHAGE INC SI MOV [DI],[SI+1] PERMUTE:MOV TEMP,TAB[DI] MOV TAB[DI],TAB[SI] MOV TAB[SI],TAMP JUMP COM AFFICHAGE:MOV si,offset TAB MOV AH,TAB[SI] COM2 si,offset [TAB+4] JE FIN MOV DL,AL MOV AH,2 INT 21H INC SI JUMP AFFICHAGE FIN:MOV AH,4CH INT 21H ENDS end DEBUT
svp aidez moi
1 - On ne compile pas de l'assembleur, on... l'assemble.
2 - Elles sont où les erreurs ? 'Faut qu'on les devine ?
pour commencer:
il est strictement interdit de faire des Mov memoire- memoire!!!!!!
kif kif
Code : Sélectionner tout - Visualiser dans une fenêtre à part MOV [DI],[SI+1]
il est déconseillé d'utiliser JL et JG avec les nombres non signés : pense à JA et JB
Code : Sélectionner tout - Visualiser dans une fenêtre à part COM:CMP TAB[SI],TAB[DI]
???COM2 si,offset [TAB+4]
JE FIN
plutot JMP affichageJUMP AFFICHAGE
à part ça tout va bien
Bonjour
J'ai pas bien compris votre logique mais j'ai trouvé quelques erreurs :
1// N' oublier pas d'écrire dans le code segment
Ces instructions sont obligatoires dans chaque programme assembleur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 code segment assume cs:code , ds:data mov ax ,data mov ds, ax
2// Cette instruction est interdite :
Elle est de type mov memoire,memoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov [di],[si+1]
Dans votre programme, il faut faire
3// Tu a fais une erreur de frappe. Remplace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 inc si mov di,si
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part mov TAB[si],TAMP
4// Remplace JUMP par JMP
Code : Sélectionner tout - Visualiser dans une fenêtre à part TAB[si],TeMP
5// On ne peut pas écrire
En plus, le COM2 c'est une étiquette mais pas une instruction donc c'est faux d'écrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part offset [TAB +4]
Code : Sélectionner tout - Visualiser dans une fenêtre à part COM2 si , offeset [TAB +4]
Dernière modification par Alcatîz ; 26/04/2007 à 21h29. Motif: balises code, orthographe...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager