Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #euclid's algorithm
- #gcd (a,b) = gcd (b,c) if a mod b = c
- .text
- .globl main
- main:
- jal get_num #goto first function
- jal loop #goto second function
- jal output #goto third and last function
- li $v0, 10
- syscall
- get_num:
- li $v0, 4 #prompt user for first number and store
- la $a0, prompt_1
- syscall
- li $v0, 5 #read in the number
- syscall
- move $t0, $v0 #store value in t0
- li $v0, 4 #prompt user for second number and store
- la $a0, prompt_2
- syscall
- li $v0, 5 #read in the number
- syscall
- move $t1, $v0 #store value in t0
- jr $ra #go back and execute the second function (get_num_2)
- loop:
- #rem $t3, $t2, $t3 ##so this causes a break to be randomly added into the execution
- div $t0, $t1 #do the modulo thing
- mfhi $t2
- beqz $t2, back #if the remainder is 0, don't do anything else, go to output
- move $t0, $t1 #make a = b
- move $t1, $t2 #make b = c
- j loop
- back:
- jr $ra #jump back to the main function
- output:
- li $v0, 4
- la $a0, result
- syscall
- move $a0, $t1
- li $v0, 1
- syscall
- jr $ra #go back to the main and execute the final command (the exit clause)
- .data
- prompt_1:
- .asciiz "Please enter your first number: "
- prompt_2:
- .asciiz "Please enter your second number: "
- result:
- .asciiz "The gcd of the two numbers is: "
Advertisement
Add Comment
Please, Sign In to add comment