试图执行非指令

时间:2015-10-27 08:35:26

标签: assembly mips spim

我在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

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您使用SPIM中的单步功能来调试代码,您可能会发现这一点,所以我建议您将其用于将来的开发。