title: Assembly - Copying an array of bytes - MIPS
body: <p>First of all, I have already checked related questions to this one, yet I am still not able to overcome the problem I have with this program.</p>
  
  <p>What I am trying to do is, basically, take a byte[] input and duplicate it to another byte[], and print the duplicate array. My code is as above:</p>
  
  <pre><code>.data
  hello: .asciiz "hello"
  inp: .byte 5
  dup: .byte 5
  
  .text
  
  main:
      la $a0, inp #get input
      li $v0, 8
      syscall
  
      la $s0, dup #load arrays on s0 and s1
      la $s1, inp     
  
      li $t0, 0   #instantiate offsets as 0
      li $t2, 0
  Load:
      lb $t1, 0($s1)      #load first byte
      sub $t1, $t1, 48    #test if it is &lt;0   
      bltz, $t1, exit     #if so go to exit
      add $t1, $t1, 48
  
      sb $t1, 0($s0)      #else save the byte
      add $s1, $s1, 1     #increment offsets
      add $s0, $s0, 1
  
      j Load
  
      la $a0, hello
      li $v0, 4
      syscall
  
  exit:
      li $t1, 0
      add $s0, $s0, 1
      sb $t1, 0($s0)  #add null to the end of dup
      la $a0, dup
      li $v0, 4
      syscall
  
      jr $ra
  </code></pre>
  
  <p>I am new to MIPS and, I am not able to recognize what the problem is.</p>
  
  <p>By the way, I am passing 123 as an input and I am getting countless of 1s as output, which tells me that I am stuck in the loop and never getting any further in $s1 (inp).     </p>