Mips hoe gebruikersinvoerreeks op te slaan

Ik dacht altijd dat ik wist hoe ik dit moest doen. Maar toen heb ik het echt geprobeerd. Hier is het programma dat ik heb geschreven, maar de Berkeley S***-simulator voor mac zei dat er een syntaxisfout was op de laatste regel. Wat heb ik verkeerd gedaan?

      .text
       .globl __start
    __start:
        la $a0,ask
        li $v0,4
        syscall
        li $v0,8
        syscall
        la $t0,buffer
        move $t0,$v0
        syscall
        la $a0,ret
        li $v0,4
        syscall
        move $a0,$t0
        li $v0,4
        syscall
        .data
      ask:  .asciiz "Enter string: "
      ret:  .asciiz "You wrote: "
      buffer:   .space 100

Antwoord 1, autoriteit 100%

Ok. Ik vond een programma dat vanaf het begin van het jaar diep in andere bestanden was begraven en dat doet wat ik wil. Ik kan niet echt commentaar geven op de aangeboden suggesties omdat ik geen ervaren spim of low-level programmeur ben. Hier is het:

        .text
         .globl __start
    __start:
         la $a0,str1 #Load and print string asking for string
         li $v0,4
         syscall
         li $v0,8 #take in input
         la $a0, buffer #load byte space into address
         li $a1, 20 # allot the byte space for string
         move $t0,$a0 #save string to t0
         syscall
         la $a0,str2 #load and print "you wrote" string
         li $v0,4
         syscall
         la $a0, buffer #reload byte space to primary address
         move $a0,$t0 # primary address = t0 address (load pointer)
         li $v0,4 # print string
         syscall
         li $v0,10 #end program
         syscall
               .data
             buffer: .space 20
             str1:  .asciiz "Enter string(max 20 chars): "
             str2:  .asciiz "You wrote:\n"
             ###############################
             #Output:
             #Enter string(max 20 chars): qwerty 123
             #You wrote:
             #qwerty 123
             #Enter string(max 20 chars):   new world oreddeYou wrote:
             #  new world oredde //lol special character
             ###############################

Antwoord 2, Autoriteit 39%

# This code works fine in QtSpim simulator
.data
    buffer: .space 20
    str1:  .asciiz "Enter string"
    str2:  .asciiz "You wrote:\n"
.text
main:
    la $a0, str1    # Load and print string asking for string
    li $v0, 4
    syscall
    li $v0, 8       # take in input
    la $a0, buffer  # load byte space into address
    li $a1, 20      # allot the byte space for string
    move $t0, $a0   # save string to t0
    syscall
    la $a0, str2    # load and print "you wrote" string
    li $v0, 4
    syscall
    la $a0, buffer  # reload byte space to primary address
    move $a0, $t0   # primary address = t0 address (load pointer)
    li $v0, 4       # print string
    syscall
    li $v0, 10      # end program
    syscall

Other episodes