我得到一个"尝试执行非指令"在qtspim?

时间:2014-09-25 15:26:33

标签: assembly qtspim

有人可以帮我弄清楚我的代码有什么问题吗?我试图读取一个整数,存储其值并将其打印到屏幕/

.text

main:

li $v0, 5
la $a0, testInteger
syscall

li $v0, 4
la $a0, resultString
syscall

li $v0, 1    
la $a0, testInteger
syscall

.data

testInteger: .word 5
resultString: .ascii "The integer is :"

1 个答案:

答案 0 :(得分:0)

您需要发出已达到程序结束的信号。在SPIM及其分支中,您可以执行此操作with syscall number 10

所以当你想要停止执行你的程序时(例如在你打印完整数之后),你会这样做:

li $v0, 10   # syscall 10 = exit    
syscall

代码中的其他一些问题:

  1. syscall数字5返回$v0中的读取整数。它不会将它存储在$a0指向的内存中,就像您的代码似乎所假设的那样。

  2. syscall数字1要求整数的值在$a0中打印。你在<{1}}中放置了整数的地址(这就是$a0所做的事情。)