title: MIPS Store Word (sw)
body: <p>I'm trying to store a integer into <code>$s0</code>, and this is in a loop label.</p>
  
  <p>But the problem is that I will be printing an integer and having it save in <code>$s0</code>.</p>
  
  <p>I have done the following</p>
  
  <pre><code>sw $t7,0($s0)
  addi $s0,$s0,4
  </code></pre>
  
  <p>I thought the following would allow me to store each integer in a slot in <code>$s0</code>, but if I <code>lw</code>, I only get the last integer that was printed</p>
  
  <p>Code Below: In bold I have attemped to store a word but like you said it overwrites
  This is a homework problem, so I really want to learn, please offer some direction so I'll know next time</p>
  
  <pre><code>        .data                               
  
  
  n1:     .asciiz "\n"                        #ASCII for a new line
  
          .align 2                            
  
  
  
  name:   .asciiz "Fibonacci\n\n\n"               #Lab Title and Student Name
          .align 2
  
  msg1:   .asciiz "Fibonacci result " #note the space
          .align 2                            
  
  
  msg2:   .asciiz " is "                      #note the space
          .align 2
  
  **array:  .space 20                     #define the array**
  
          .text                               #
          .globl  main                        #declare main to be global
  
  
  
  main:   
  
  
  
          la  $a0,name                        #load the ram address of "name" into $a0
          li  $v0,4                           #system call, type 4, print a string, $a0
          syscall                             #call the "OS" to perform operation
  
          li  $t2,0                           # $t2 :=0; initial value of F(n-2)
          li  $t1,1                           # $t1 :=1; initial value of F(n-1)
  
          li  $t4,0                           #index, n.
  
                                              #loop is a local Variable
          li  $t5,11                      #loading immediate preset value for $t5 
  
  
  
  
          **la $t7,array                      #load address (array) into $t7**
  
  
  
  
  
  loop:   addu    $t0,$t1,$t2                 # F(n) = F(n-1) + F(n-2)
  
          **#Only print the last 5 numbers**
          sub $t3,$t5,$t4
          li $t6,5
          bgt $t3,$t6,Printl
  
  
          la $a0,msg1                         # $a0 := address of message 1
          li $v0,4                            #system call, type 4, print a string
          syscall                             #call the "OS"
  
          move    $a0,$t4                     # $t4 contains the current value of n
          li  $v0,1                           #system call, type 1, print an integer $a0
          syscall                             #call the "OS"
  
          la $a0,msg2                         # $a0:=address of "msg2"
          li $v0,4                            #system call, type 4, print a string
          syscall                             #call the "OS"
  
          move    $a0,$t0                     # $a0 :=$t0, which is F(n)
          li  $v0,1                           #system call, type 1, print an integer $a0
          syscall                             #call the "OS"
  
  
          **sw $s0, 4($t7)**
  
  
  
  
  
          la  $a0,n1                          # $a0 := address of "n1"
          li  $v0,4                           #system call, type 4, print a string
          syscall                             #call the "OS"
  
  
  
  
          addi    $t4,1                       # $t4 := $t4 + 1; increment n
          move    $t2,$t1                     # $t2 := $t1; old F(n-2) because old F(n-1)
          move    $t1,$t0                     # $t1 := $t0; old F(n-2) because old F(n)
  
  
  
          beq     $t5,$t4,Exit            #Conditional Check | exit
  
  
  
  
  
  
  
          j       loop                        # branch unconditionally to loop ($t3 != 0)
  
  Exit:   
          la $a0,n1                           # $a0 := address of message 1
          li $v0,4                            #system call, type 4, print a string
          syscall                             #call the "OS"
  
          #la $t7,array
          #li $v0,1
          #sw $s0, 4($t7)
          #syscall
  
  
          li      $v0,10                      #system call, type 10, standard exit
          syscall                             #call the "OS"
  
  Printl: 
          addi $t4,1
          move $t2,$t1
          move$t1,$t0
          j loop
  </code></pre>