title: mips assembly working with strings
body: <p>i got a problem with mips assembly programming. I wanted to create a program which gives the reverse of the input string. It seems that I did not get exactly how to work with strings and how I can pick up the last letter and save it to another string adresse. </p>
  
  <p>I will update my code fragment. Maybe someone can help me or can give me some advices.</p>
  
  <p>Regards</p>
  
  <p>My code:</p>
  
  <pre><code>## Programm soll eingegebenen String rückwärts wieder ausgeben.
  
  .data
  
  prompt:         .asciiz "Bitte geben Sie einen String ein! "
  string_buffer:      .space 256
  
  
  .text
  
  ## string ausgabe
  la $a0, prompt
  li $v0, 4 #print string
  syscall
  
  ## string eingabe
  
  la $a0, string_buffer
  li $a1, 256
  li $v0, 8 #read string
  syscall
  
  la $s0, string_buffer #adresse des eingegebenen strings
  li $s1, 0 #counter
  
  counter:
  lb $t0, 0($s0) #in perm. register erstes zeichen geladen
  
  beq $t0, \'\\0\', function #ende des strings
  addi $s0, $s0, 1 #zum nächsten Zeichen inkrementieren
  addi $s1, $s1, 1 #counter
  j counter
  
  function:
  addi $s1, $s1, -1
  
  add $s2, $s0, $s1
  addi $s2, $s2, -1 #länge des strings
  
  loop:
  
  beqz $s2, exit #ende
  
  sb $t1, 0($s2) #letztes zeichen des strings in $t1 gespeichert
  addi $s2, $s2, -1
  
  j loop
  
  exit:
  
  la $t3, ($t1) #versuch: hier sollte der umgekehrte string stehen
  li $v0, 10 #the end
  syscall
  </code></pre>