Bonjour, j aimerai savoir comment faire une boucle for et boucle if imbriqués en assembleur MIPS ??? merci de votre aide!
exemples de boucles : http://www.cs.uiuc.edu/class/fa05/cs232/section/discussion1.html
yvslart
En fait j ai pas mal cherché sur internet mais à chaque fois je trouve un exemple à part Bon sa serai gentil si vous pouviez me corriger cet exemple de boucle parce que je suis perdue avec le IF et le FOR au mm temps ; alor le principe du programme est d entrer un nombre, et définir si c un nombre parfait ou non ceci dit (calculer la somme de ses diviseurs et s ils sont égaux au nombre on dit qu il est parfait) voilà mon exemple : ################################################### .text .globl main main:
lui $10,0x1000 #adresse de base lw $1,0($10) #x add $2,$2,1 #compteur i add $3,$3,0 #somme
#boucle for li $2,28 for: bgeu $2,$1,endfor div $1,$2 mfhi $7 bne $7,$0,endif add $3,$3,$2 endif: sub $2,1 jmp for endif: endfor:
#tester si somme=x sub $8,$3,$1
bne $8,$0,else
la $a0,perfect li $v0,4 syscall
jmp end
else: la $a0,nperfect li $v0,4 syscall
end:
.data x: .word 28 perfect: .asciiz "le nombre est parfait" nperfect: .asciiz "le nombre n est pas parfait" ##################################### voilà merci de me répondre
En fait j ai pas mal cherché sur internet mais à chaque fois je
trouve un exemple à part
Bon sa serai gentil si vous pouviez me corriger cet exemple de boucle
parce que je suis perdue avec le IF et le FOR au mm temps ; alor le
principe du programme est d entrer un nombre, et définir si c un
nombre parfait ou non ceci dit (calculer la somme de ses diviseurs et
s ils sont égaux au nombre on dit qu il est parfait) voilà mon
exemple :
###################################################
.text
.globl main
main:
lui $10,0x1000 #adresse de base
lw $1,0($10) #x
add $2,$2,1 #compteur i
add $3,$3,0 #somme
#boucle for
li $2,28
for:
bgeu $2,$1,endfor
div $1,$2
mfhi $7
bne $7,$0,endif
add $3,$3,$2
endif:
sub $2,1
jmp for
endif:
endfor:
#tester si somme=x
sub $8,$3,$1
bne $8,$0,else
la $a0,perfect
li $v0,4
syscall
jmp end
else:
la $a0,nperfect
li $v0,4
syscall
end:
.data
x: .word 28
perfect: .asciiz "le nombre est parfait"
nperfect: .asciiz "le nombre n est pas parfait"
#####################################
voilà merci de me répondre
En fait j ai pas mal cherché sur internet mais à chaque fois je trouve un exemple à part Bon sa serai gentil si vous pouviez me corriger cet exemple de boucle parce que je suis perdue avec le IF et le FOR au mm temps ; alor le principe du programme est d entrer un nombre, et définir si c un nombre parfait ou non ceci dit (calculer la somme de ses diviseurs et s ils sont égaux au nombre on dit qu il est parfait) voilà mon exemple : ################################################### .text .globl main main:
lui $10,0x1000 #adresse de base lw $1,0($10) #x add $2,$2,1 #compteur i add $3,$3,0 #somme
#boucle for li $2,28 for: bgeu $2,$1,endfor div $1,$2 mfhi $7 bne $7,$0,endif add $3,$3,$2 endif: sub $2,1 jmp for endif: endfor:
#tester si somme=x sub $8,$3,$1
bne $8,$0,else
la $a0,perfect li $v0,4 syscall
jmp end
else: la $a0,nperfect li $v0,4 syscall
end:
.data x: .word 28 perfect: .asciiz "le nombre est parfait" nperfect: .asciiz "le nombre n est pas parfait" ##################################### voilà merci de me répondre