2017-02-21 81 views
0

所以我需要在MIPS中填充一個10個「記錄」的數組,其中包含一個員工的姓名,年齡和薪水。僱員的姓名最多爲40個字符,年齡和工資都應該是整數。然而,在測試我寫的這個循環時,我經歷了前5名員工,然後輸入「Emp6」,然後按回車,我總是得到第18行的「無效整數輸入(系統調用5)」,爲什麼。任何幫助將不勝感激!嘗試使用MIPS中的字符串和整數填充數組時遇到錯誤?

測試輸入:

Emp1 
1 
1 
Emp2 
2 
2 
Emp3 
3 
3 
Emp4 
4 
4 
Emp5 
5 
5 
Emp6 

錯誤代碼:

Error in line 18: Runtime exception at 0x00400020: invalid integer input (syscall 5) 

Go: execution terminated with errors. 

回答

1

你的主要問題似乎是,在read_string系統調用預計$a1緩衝區大小,但是你使用你的循環計數器。因此,您最終會用完空間,並且輸入緩衝區中會留下未處理的文本,然後由後續的read_int讀取該文本,並且這種文本會爆炸。

進一步的問題是,你繼續遞增$a0,但未能解決你的尋址問題。 sw $v0, 0($a0)也沒什麼意義,字符串已經被讀入內存,$v0沒有什麼有趣的地方。

相關問題