Tri en langage assembleur sur spim
Fermé
imen5
Messages postés
4
Date d'inscription
dimanche 30 novembre 2008
Statut
Membre
Dernière intervention
14 décembre 2008
-
14 déc. 2008 à 17:14
nisya Messages postés 2 Date d'inscription vendredi 22 novembre 2013 Statut Membre Dernière intervention 23 novembre 2013 - 23 nov. 2013 à 13:19
nisya Messages postés 2 Date d'inscription vendredi 22 novembre 2013 Statut Membre Dernière intervention 23 novembre 2013 - 23 nov. 2013 à 13:19
A voir également:
- Tri en langage assembleur sur spim
- Langage ascii - Guide
- Trier sur excel - Guide
- Langage binaire - Guide
- Logiciel tri photo gratuit - Guide
- Pascal langage - Télécharger - Édition & Programmation
1 réponse
2. Tri par sélection
.data
arrayofinteger: .word 12
message1: .asciiz "donnez la taille du tableau :\n"
message2: .asciiz "donnez l'élément "
message3: .asciiz " le tableau trié : \n"
.text
.globl main
main:
la $a0,message1
syscall
li $v0,5
syscall
move $t0,$v0 # $t0 ? nbre d'éléments
li $t1,0
la $t2,arrayofinteger #$t2? adresse du tableau des entiers
li $t4,4
boucle1: #saisie des éléments
bge $t1,$t0,boucle2
li $v0,4
la $a0,message2
syscall
li $v0,1
addi $a0,$t1,1
syscall
li $v0,5
syscall
mul $t3,$t1,$t4
add $t3,$t3,$t2
sw $v0,0($t3)
addi $t1,$t1,1
j boucle1
boucle2:
bge $t1,$t0,tri
mul $t3,$t1,$t4
add $t3,$t3,$t2
lw $a0,0($t3);
li $v0,1
syscall
addi $t1,$t1,1
j boucle2
tri: move $a0,$t2
move $a1,$t0
jal triselection #appel de la procédure qui effectuera le tri
#affichage des éléments triés
li $v0,4
la $a0,message3
syscall
li $t1,0
li $t4,4
boucle3: #affichage de tous les éléments triés
bge $t1,$t0,exit_tri
mul $t3,$t1,$t4
add $t3,$t3,$t2
lw $a0,0($t3);
li $v0,1
syscall
addi $t1,$t1,1
j boucle3
triselection:
addi $sp,$sp,-44
sw $ra,0($sp)
sw $t0,4($sp)
sw $t1,8($sp)
sw $t2,12($sp)
sw $t3,16($sp)
sw $t4,20($sp)
sw $t5,24($sp)
sw $t6,28($sp)
sw $t7,32($sp)
sw $t8,36($sp)
sw $t9,40($sp)
move $t0,$a0 #$t0?adresse du arrayofinteger
move $t1,$a1 #$t1?nombre des éléments
li $t2,0 # j? 0
addi $t1,$t1,-1
testfor1:
bge $t2,$t1,exit1
move $t3,$t2 #$t3? j
li $t4,4
mul $t4,$t4,$t2
add $t4,$t0,$t4
lw $t5,0($t4) #$t5? arrayofinteger[j]
addi $t6,$t2,1 #k ? j+1
testfor2:
bgt $t6,$t1,exit2
li $t7,4
mul $t7,$t6,$t7
add $t7,$t0,$t7
lw $t8,0($t7) #$t8? arrayofinteger[k]
bge $t8,$t5,incrementation
move $t3,$t6 #$t3? j
move $t5,$t8 #$t5? arrayofinteger[k]
incrementation :
addi $t6,$t6,1
j testfor2
exit2:
li $t7,4
mul $t3,$t3,$t7
add $t3,$t3,$t0
lw $t9,0($t4) #$t9? arrayofinteger[j]
sw $t9,0($t3) #arrayofinteger[$t3]? arrayofinteger[j]
sw $t5,0($t4) #arrayofinteger[j]? $t5
addi $t2,$t2,1
j testfor1
exit1:
lw $ra,0($sp)
lw $t0,4($sp)
lw $t1,8($sp)
lw $t2,12($sp)
lw $t3,16($sp)
lw $t4,20($sp)
lw $t5,24($sp)
lw $t6,28($sp)
lw $t7,32($sp)
lw $t8,36($sp)
lw $t9,40($sp)
addi $sp,$sp,44
jr $ra
exit_tri:
li $v0,10
syscall
.data
arrayofinteger: .word 12
message1: .asciiz "donnez la taille du tableau :\n"
message2: .asciiz "donnez l'élément "
message3: .asciiz " le tableau trié : \n"
.text
.globl main
main:
la $a0,message1
syscall
li $v0,5
syscall
move $t0,$v0 # $t0 ? nbre d'éléments
li $t1,0
la $t2,arrayofinteger #$t2? adresse du tableau des entiers
li $t4,4
boucle1: #saisie des éléments
bge $t1,$t0,boucle2
li $v0,4
la $a0,message2
syscall
li $v0,1
addi $a0,$t1,1
syscall
li $v0,5
syscall
mul $t3,$t1,$t4
add $t3,$t3,$t2
sw $v0,0($t3)
addi $t1,$t1,1
j boucle1
boucle2:
bge $t1,$t0,tri
mul $t3,$t1,$t4
add $t3,$t3,$t2
lw $a0,0($t3);
li $v0,1
syscall
addi $t1,$t1,1
j boucle2
tri: move $a0,$t2
move $a1,$t0
jal triselection #appel de la procédure qui effectuera le tri
#affichage des éléments triés
li $v0,4
la $a0,message3
syscall
li $t1,0
li $t4,4
boucle3: #affichage de tous les éléments triés
bge $t1,$t0,exit_tri
mul $t3,$t1,$t4
add $t3,$t3,$t2
lw $a0,0($t3);
li $v0,1
syscall
addi $t1,$t1,1
j boucle3
triselection:
addi $sp,$sp,-44
sw $ra,0($sp)
sw $t0,4($sp)
sw $t1,8($sp)
sw $t2,12($sp)
sw $t3,16($sp)
sw $t4,20($sp)
sw $t5,24($sp)
sw $t6,28($sp)
sw $t7,32($sp)
sw $t8,36($sp)
sw $t9,40($sp)
move $t0,$a0 #$t0?adresse du arrayofinteger
move $t1,$a1 #$t1?nombre des éléments
li $t2,0 # j? 0
addi $t1,$t1,-1
testfor1:
bge $t2,$t1,exit1
move $t3,$t2 #$t3? j
li $t4,4
mul $t4,$t4,$t2
add $t4,$t0,$t4
lw $t5,0($t4) #$t5? arrayofinteger[j]
addi $t6,$t2,1 #k ? j+1
testfor2:
bgt $t6,$t1,exit2
li $t7,4
mul $t7,$t6,$t7
add $t7,$t0,$t7
lw $t8,0($t7) #$t8? arrayofinteger[k]
bge $t8,$t5,incrementation
move $t3,$t6 #$t3? j
move $t5,$t8 #$t5? arrayofinteger[k]
incrementation :
addi $t6,$t6,1
j testfor2
exit2:
li $t7,4
mul $t3,$t3,$t7
add $t3,$t3,$t0
lw $t9,0($t4) #$t9? arrayofinteger[j]
sw $t9,0($t3) #arrayofinteger[$t3]? arrayofinteger[j]
sw $t5,0($t4) #arrayofinteger[j]? $t5
addi $t2,$t2,1
j testfor1
exit1:
lw $ra,0($sp)
lw $t0,4($sp)
lw $t1,8($sp)
lw $t2,12($sp)
lw $t3,16($sp)
lw $t4,20($sp)
lw $t5,24($sp)
lw $t6,28($sp)
lw $t7,32($sp)
lw $t8,36($sp)
lw $t9,40($sp)
addi $sp,$sp,44
jr $ra
exit_tri:
li $v0,10
syscall
23 nov. 2013 à 13:19
salut tout le monde . j'ai un projet très urgent à faire le thème et "le tri d'un vecteur par ordre croissant " en langage assembleur sur mips .svp si quelqu'un peut m'aider je serais très reconnaissante