Assembly 在MIPS中从用户读取Int

Assembly 在MIPS中从用户读取Int,assembly,mips,Assembly,Mips,我正在尝试读取用户的输入。我对我的代码很有信心,但由于某种原因,每次我都会遇到编译错误。上面写着“28.8:语法错误”。从我的测试来看,第28行的syscall没有太大问题,但它是文件的最后一行(将数据块移到底部会导致最后一行仍然发生错误)。我真的不确定到底出了什么问题,该怎么办 .data prompt: .asciiz "Enter number: " message: .asciiz "\nYour number is: " .te

我正在尝试读取用户的输入。我对我的代码很有信心,但由于某种原因,每次我都会遇到编译错误。上面写着“28.8:语法错误”。从我的测试来看,第28行的syscall没有太大问题,但它是文件的最后一行(将数据块移到底部会导致最后一行仍然发生错误)。我真的不确定到底出了什么问题,该怎么办

.data
    prompt: .asciiz "Enter number: "
    message: .asciiz "\nYour number is: "

.text

main:
    #Ask for number
    li $v0, 4
    la $a0, prompt
    syscall

    #read number
    li $v0,5
    syscall

    #store number
    move $t0, $v0

    #display message
    li $v0, 4
    la $a0, message
    syscall

    #print number
    li $v0, 1
    move $a0, $t0
    syscall

代码中的错误可能不在第28行,但我认为这是由于缺少终止代码,即

li $v0, 10
syscall

我们通常使用终止代码来退出程序。不这样做可能会产生类似“尝试在0x00400058处执行非指令”的错误。试着把它放在代码的末尾,看看错误是否再次发生。我在QtSpim上试过,在添加终止代码后没有遇到错误。

我无法在MARSInteresting上重现此错误。我使用的是一个基于Java的MIPS编译器,所以可能是编译器的问题,而不是代码的问题。或者可能是源代码文件中有一些无法打印的字符,当您在此处发布代码时丢失了这些字符。