Assembleur MIPS

Assembleur MIPS - ASM - Programmation

Marsh Posté le 21-04-2005 à 10:03:54    

Bonjour,  
je suis étudiante en informatique et je dois travailler sur un devoir concernant l'assembleur. C'est la partie la plus hardue du cursus. J'ai compris le code. Mais je n'arrive pas à mettre en évidence l'algorithme dans le programme qui m'est présenté.  
Je vois qu'il y a des conditions (bge, bne, ..) mais je ne vois pas comment s'effectue le tri.  
Le prof a jalonné le parcours du code avec des commentaires qui aident, mais, je serais ravie de trouver une aide de quelqu'un féru d'assembleur...
Marielou
 
.data
str: .asciiz "\n"
str1: .asciiz "|"
.align 2
# T est le tableau que l'on trie'
T: .word 6
.word 5
.word 4
.word 3
.word 2
.word 1
.word -0
.word -1
.word -2
.word -3
.text
.align 2
.globl main
.ent main
main:
.frame $fp,24,$31
.mask 0xc0000000,-4
.fmask 0x00000000,0
subu $sp,$sp,24
sw $31,20($sp)
sw $fp,16($sp)
move $fp,$sp
# On affiche le vecteur en entree du probleme
la $5,T
li $6,1
suite0:lw $a0, ($5)
li $v0, 1
syscall
li $v0, 4 # system call code for print_str
la $a0, str1 # address of string to print
syscall # print the string
addiu $5,$5,4
addiu $6,$6,1
bne $6,11,suite0
li $v0, 4 # system call code for print_str
la $a0, str # address of string to print
syscall # print the string
syscall
# On commence le tri a partir d'ici
la $5,T
li $6,1
deb:
lw $8,($5) # le min
lw $14,($5)
la $15, ($5)
move $9,$6
addiu $9, $9, 1
la $10, ($5)
la $11, ($5)
addiu $10, $10, 4
suite:
lw $12, 0($10)
blt $8, $12, suite1
lw $8, ($10) # sauvegarde du nouveau min
la $16, ($10) # sauvegarde adresse du nouveau min
# move $a0, $8
# li $v0, 1
# syscall
# li $v0, 4 # system call code for print_str
# la $a0, str1# address of string to print
# syscall # print the string
# la $a0, str # address of string to print
# syscall # print the string
suite1:addiu $10, $10, 4
add $9, $9, 1
bne $9, 11, suite
bgt $8, $14, suite2
bge $8, $14, suite2
move $a0, $8
li $v0, 1
syscall
li $v0, 4 # system call code for print_str
la $a0, str1 # address of string to print
syscall # print the string
move $a0, $14
li $v0, 1
syscall
li $v0, 4 # system call code for print_str
la $a0, str # address of string to print
syscall # print the string
sw $8, ($15)
sw $14, ($16)
suite2: addiu $5, $5, 4 # on passe a l'element suivant
addiu $6, $6, 1 # jusqu'au 9 eme
bne $6,10, deb
# on afficher le vecteur de sortie
li $v0, 4 # system call code for print_str
la $a0, str # address of string to print
syscall # print the string
suite33:la $5,T
li $6,1
suite3: lw $a0, ($5)
li $v0, 1
syscall
li $v0, 4 # system call code for print_str
la $a0, str1 # address of string to print
syscall # print the string
addiu $5,$5,4
addiu $6,$6,1
bne $6,11,suite3
li $v0, 4 # system call code for print_str
la $a0, str # address of string to print
syscall # print the string
j $31
.end main
+*+*+*++*+*+*+*+*+*+*+*+EXEMPLES D'EXECUTION+*+*+*+*+*+*+*+*+*+*+*+*+
-6|-5|-4|-3|-2|-1|0|1|2|3|
-6|-5|-4|-3|-2|-1|0|1|2|3|
+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
6|5|4|3|2|1|0|-1|-2|-3|
-3|6
-2|5
-1|4
0|3
1|2
-3|-2|-1|0|1|2|3|4|5|6|
+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+
2|-5|-1|-3|7|8|9|10|-4|5|
-5|2
-4|2
-3|-1
2|7
5|8
7|9
8|10
-5|-4|-3|-1|2|5|7|8|9|10|

Reply

Marsh Posté le 21-04-2005 à 10:03:54   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed