1
.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.
嗨,給大家。此代碼基本上沒有三樣東西:MIPs Store Integers陣列
- 生成2個隨機量詮釋
- 計算MCD
- 的黃金
由用戶自主決定迭代次數習題。
所以,這裏是我的問題:我存儲了2個數字和MCD在$ s5,$ s6,$ s7中,我想用數組打印它。首先,如果我嘗試把1號到一個數組,我得到這個錯誤(存儲的字邊界上未對齊):
。數據
陣列:32。空間
的.text
SW $ S6,數組($ K1)
阿迪$ K1,$零,4)
而我的另一個問題是:如何定義。空間數組因爲用戶決定迭代次數?
感謝
謝謝,Gusbro。 align指令似乎工作。關於第二個答案是這樣的,正如我所說的迭代是由用戶決定的,可能是5或20或100或100000.沒有限制我相信... – JEC
那麼,總是有一個限制,可能是你的範圍整數或你擁有的記憶。你可以將你的數組設置爲'.data'段的最後一個位置,也就是說,在'array'標籤之後沒有定義其他變量。然後你可以將所有剩餘的內存視爲你的數組空間(直到它「擊中」你的代碼段) – gusbro