尝试执行 non-instruction

attempt to execute non-instruction

我在 mips 汇编程序中有一些代码,我得到了标题中的内容。如您所见,我有 $li $v0, 10syscall 那么有人知道它有什么问题吗?

        .data
text0:  .asciiz "Enter strng: \n"   
buf0:   .space 100

    .text
    .globl main

main:
    la $a0, text0                   
    li $v0, 4                       
    syscall                         

    la $a0, buf0                    
    li $a1, 99                      
    li $v0, 8                       
    syscall                         

    li $t0, 'a'                     
    li $t1, 'z'                     
    li $t2, 0x20

    la $t3, buf0                    


loop_begin:
    lb $t4, ($t3)                   
    beq $t4, $zero, loop_end        

    blt $t4, $t0, increment_ptr     
    bgt $t4, $t1, increment_ptr     
    sub $t4, $t4, $t2               
    sb $t4, ($t3)                   
increment_ptr:
    addi $t3, $t3, 1                
    b loop_begin                    
loop_end:

    la $a0, buf0                    
    li $v1, 4                       
    syscall                         

    li $v0, 10                      
    syscall

我无法重现您的错误消息。也许您在 SPIM 中执行了重新初始化而没有重新加载程序集文件。

无论如何,您没有正确设置最终的 print_string 系统调用:

li $v1, 4   # <-- SHOULD BE $v0                       
syscall

如果您使用 SPIM 中的单步执行功能来调试您的代码,您可能会发现这一点,因此我建议您在未来的开发中利用它。