2015-10-27 135 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單步執行功能調試代碼,你可能會發現這一點,所以我建議你把它用於未來的發展。