2015-10-27 54 views
-1

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

没有足够的信息!假设最后一行是抛出错误,那么系统调用10会做什么?它甚至存在吗?从代码检查,我只能告诉系统调用4似乎是打印到终端操作。 –

+0

@Flying_Banana:你是说,在我添加有关可用系统调用信息的麻烦之后,你没有阅读[SPIM标记wiki](http://stackoverflow.com/tags/spim/info)? ,P – Michael

回答

0

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

反正你没有正确设置最终print_string系统调用:

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

如果你曾使用过的SPIM单步执行功能调试代码,你可能会发现这一点,所以我建议你把它用于未来的发展。