Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .globl __start
- .text 0x00400000
- __start:
- # Demanem M
- li $v0,11 # Índex de la crida al sistema imprimir char.
- li $a0,'P' # Valor a imprimir 'P'
- syscall # Crida al sistema
- li $a0,'=' # Valor a imprimir '='
- syscall # Crida al sistema
- li $v0,5 # Posa l'index per a la crida al sistema
- syscall # Demana un int al sistema (M)
- move $t0,$v0 # El valor arreplegat es mou a un registre temporal
- # Demanem Q
- li $v0,11 # Índex de la crida al sistema imprimir char.
- li $a0,'Q' # Valor a imprimir 'Q'
- syscall # Crida al sistema
- li $a0,'=' # Valor a imprimir '='
- syscall # Crida al sistema
- li $v0,5 # Posa l'index per a la crida al sistema
- syscall # Demana un int al sistema (Q)
- move $a1,$v0
- move $a0,$t0
- jal Mult # Salt incondicional a la direcció Mult (subrutina de multiplicació)
- # Crida al sistema final
- move $t0,$v0 # Mou a un registre temporal
- li $v0,11
- li $a0,'R'
- syscall # Crida al sistema printchar('R')
- li $a0,'='
- syscall # Crida al sistema printchar('=')
- move $a0,$t0 # El resultat P el mou a $a0
- li $v0,1
- syscall # printInt($a0)
- li $v0,10
- syscall # Acaba el programa.
- # Subrutina de multiplicació
- Mult: li $v0, 0 # Buida el registre per a la crida del sistema, per a anar fent la multiplicació
- beqz $a1, MultRet # Condicional, si $a1 == 0, anar a la direcció MultRet
- MultFor: add $v0, $v0, $a0 # Suma el valor M al que hi ha en el valor de retorn de la funció
- addi $a1, $a1, -1 # Resta 1 unitat al valor Q, que serveix com a contador del bucle
- bne $a1, $zero, MultFor # Condicional, mentre Q != 0, fa un salt a la direcció MultFor
- MultRet: jr $ra # Fa un salt a la direcció guardada en $ra (crida al sistema final)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement