Невозможно сохранить ответ в памяти в MIPS - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь написать функцию в MIPS, которая будет принимать строку и возвращать количество символов внутри строки. Это то, что у меня есть до сих пор

# Program to calculate string length of any given string

            .data
mystring:   .asciiz "Hello, World!"
answer:     .word 0

            .text
            .globl main
main:       la      $a0, mystring   # Load base adress of the string into function argument

            jal     strlen          # jump to strlen and save position to $ra

            sw      $vo, answer     # Store the answer to memory

            li      $v0, 10         #exit
            syscall


strlen:     li      $v0, 0          # Initialize counter = 0

stringLoop: lb      $t0, 0($a0)     # Load first word of the string

            beq     $t0, $zero, end # if $t0 == '\0' then exit the loop

            addi    $a0, $a0, 1     # Increment the address (go to the next character)

            addi    $v0, $v0, 1     # Increment the counter

            b       stringLoop

end:        jr      $ra             # Return to main program

Каждый раз, когда я пытаюсь запустить его с помощью QtSpim, он выдает синтаксическую ошибку в строке «sw $ vo, answer». Может кто-нибудь сказать мне, что не так с моей программой? Спасибо

1 Ответ

1 голос
/ 09 марта 2020

Синтаксические ошибки часто бывают вызваны опечатками, как в вашем случае. Вы случайно написали vo вместо v0.

...