Created
July 29, 2020 23:38
-
-
Save FossilizedCarlos/2fb18c67fa4fa019ac42c202e2533e7b to your computer and use it in GitHub Desktop.
Sample MIPS assembly program to run under MARS from: http://courses.missouristate.edu/KenVollmar/MARS/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Compute first twelve Fibonacci numbers and put in array, then print | |
| .data | |
| fibs: .word 0 : 12 # "array" of 12 words to contain fib values | |
| size: .word 12 # size of "array" | |
| .text | |
| la $t0, fibs # load address of array | |
| la $t5, size # load address of size variable | |
| lw $t5, 0($t5) # load array size | |
| li $t2, 1 # 1 is first and second Fib. number | |
| add.d $f0, $f2, $f4 | |
| sw $t2, 0($t0) # F[0] = 1 | |
| sw $t2, 4($t0) # F[1] = F[0] = 1 | |
| addi $t1, $t5, -2 # Counter for loop, will execute (size-2) times | |
| loop: lw $t3, 0($t0) # Get value from array F[n] | |
| lw $t4, 4($t0) # Get value from array F[n+1] | |
| add $t2, $t3, $t4 # $t2 = F[n] + F[n+1] | |
| sw $t2, 8($t0) # Store F[n+2] = F[n] + F[n+1] in array | |
| addi $t0, $t0, 4 # increment address of Fib. number source | |
| addi $t1, $t1, -1 # decrement loop counter | |
| bgtz $t1, loop # repeat if not finished yet. | |
| la $a0, fibs # first argument for print (array) | |
| add $a1, $zero, $t5 # second argument for print (size) | |
| jal print # call print routine. | |
| li $v0, 10 # system call for exit | |
| syscall # we are out of here. | |
| ######### routine to print the numbers on one line. | |
| .data | |
| space:.asciiz " " # space to insert between numbers | |
| head: .asciiz "The Fibonacci numbers are:\n" | |
| .text | |
| print:add $t0, $zero, $a0 # starting address of array | |
| add $t1, $zero, $a1 # initialize loop counter to array size | |
| la $a0, head # load address of print heading | |
| li $v0, 4 # specify Print String service | |
| syscall # print heading | |
| out: lw $a0, 0($t0) # load fibonacci number for syscall | |
| li $v0, 1 # specify Print Integer service | |
| syscall # print fibonacci number | |
| la $a0, space # load address of spacer for syscall | |
| li $v0, 4 # specify Print String service | |
| syscall # output string | |
| addi $t0, $t0, 4 # increment address | |
| addi $t1, $t1, -1 # decrement loop counter | |
| bgtz $t1, out # repeat if not finished | |
| jr $ra # return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment