.globl main
.text
main:
li $v0, 4 #prompt user for number of pairs
la $a0, prompt_number
syscall
li $v0, 5 #read in the number
syscall
move $s0, $v0 #store value in t0
loop:
li $v0, 4 #ask for and store the first number in t1
la $a0, prompt_pair_1
syscall
li $v0, 5 #read in the number
syscall
move $t1, $v0
li $v0, 4 #ask for and store the second number in t2
la $a0, prompt_pair_2
syscall
li $v0, 5 #read in the number
syscall
move $t2, $v0
add $s1, $s1, 1 #increment s1 every time we receive a pair of numbers
#our algorithm is going to be: double the second number, subtract it from the first, if the answer is 0 or below 0, we increment our counter
add $t2, $t2, $t2 #double the second number
sub $t1, $t1, $t2 #subtract the second number from the first and store it in place of the first number
blez $t1, bigger #jump to bigger
beq $s0, $s1, exit #if the counter is equal to our prompt value, move to exit the program
j loop #else jump to the start of the loop
bigger:
add $t3, $t3, 1 #increment the "greater" counter once
beq $s0, $s1, exit #if the counter is equal to our prompt value, move to exit the program
j loop #else jump to the start of the loop
exit:
la $a0, terminate
move $a0, $t3 #put the integer into a0
li $v0, 1 #output the integer
syscall
li $v0, 10 #end the program
syscall
.data
prompt_number:
.asciiz "Please input the total number of pairs you will have: "
prompt_pair_1:
.asciiz "Please enter the first number of your pair: "
prompt_pair_2:
.asciiz "Please enter the second number of your pair: "
terminate:
.asciiz "The program has finished executing. The condition of the second number being at least twice as big as the first has happened this many times: "
Comments