.data
spacestr: .asciiz " "
pow:
.asciiz "Ingrese numero de Iteraciones = "
mcd:
.asciiz "MCD "
linea:
.asciiz "\n"
proba:
.asciiz "la probabilidad es: \n%"
.text
main:
li $v0,4
la $a0,pow
syscall #imprime mensaje en pow
li $v0,5
syscall #Lee el entero ingresado por el usuario.
move $t5,$v0 #mueve el valor leído a t5
li $t6, 1
li $t8, 1
li $t9, 0
li $k0, 100
mainloop:
bgt $t6,$t5,Fin
li $v0, 30
syscall
move $t0, $a0
li $a0, 1
move $a1, $t0
li $v0, 40
syscall
li $a0, 1
li $a1, 1000
li $v0, 42
syscall #Genera numero aleatorio (time feed)
move $a2, $a0 # Guarda el numero en a2
li $v0, 1
syscall # imprime el entero.
move $s5, $a2 #guardo en s5 el primero numero generado (pregunta!)
li $v0, 4
la $a0,spacesrt
syscall #imprime un espacio
li $a0, 1
li $a1, 1000
li $v0, 42
syscall #genera segundo numero aleatorio.
move $a3, $a0 #mueve el numero generado a a3
li $v0, 1
syscall #imprime el segundo entero generado.
move $s6, $a3 #guardo el valor en s6 (pregunta!)
# Euclides MCD (GCD)
slt $s0, $a2, $a3 #compara si a < b. Verdadero s0=1 sino s0=0
bne $s0,$zero, SwapNumbers
SwapNumbers:
move $t2, $a2
move $a2, $a3
move $a3, $t2
loop:
beq $a3,$zero,EXIT
move $t4,$a3 # c = b
rem $a3,$a2,$a3 # b = a % b
move $$a2,$t4 # a = c
j loop
EXIT:
move $s7, $a2 #El valor del MCD
li $v0, 4
la $a0,spacestr
syscall
li $v0,4
la $a0,mcd
syscall
li $v0,4
la $a0,mcd #imprime la palabra en mcd
syscall
li $v0,1
la $a0,($s7) #luego muestra el valor calculado de MCD
syscall
li $v0,4
la $a0,linea
syscall # Cambio de linea (por orden en iteraciones)
addi $t6,$t6,1
bne $s7,st8, exit #cuenta las veces que MCD = 1 (primos)
addi $t9,$t9,1
exit:
j mainloop
Fin:
mtc1 $st9, $f1
cvt.s.w $f1,$f1
mtc1 $t5, $f2
cvt.s.w $f2,$f2
mtc1 $k0,$f3
cvt.s.w $f3,$f3
div.s $f12,$f1,$f2
mul.s $f12,$f12,$f3 # (primos/iteraciones*100)
li $v0, 4
la $a0, proba
syscall
li $v0, 2
syscall # Imprime resultado en f12
li $v0,10
syscall #Finaliza programa.
Hi to everyone. This code basically does 3 things:
- Generate 2 randoms int
- calculate MCD
- Prob of prime
The number of iterations decided by user.
So, here is my problem: I stored the 2 numbers and the MCD in $s5,$s6,$s7 and i want to print that as a table using arrays. First, if i try to put the 1 number into an array, i got this an error (stored word not aligned on boundary):
.data
array: .space 32
.text
sw $s6, array, ($k1)
addi $k1, $zero, 4)
And my other problem is: How do i define .space for array since the user decide the number of iterations?
Thanks
Aucun commentaire:
Enregistrer un commentaire