【发布时间】:2020-04-30 17:37:08
【问题描述】:
在我解释发生了什么之前,我正在使用 Qtspim。程序很简单:它所做的只是(从用户)读取一个整数并输出输入的数字。这是代码:
###################################################
# text segment #
###################################################
.text
.globl __start
__start:
li $v0,4
la $a0,message
syscall
li $v0, 5 #read_int#
syscall
move $a0,$v0
li $v0, 1 #print_int#
syscall
li $v0,10
syscall
###################################################
# data segment #
###################################################
.data
message: .asciiz "please enter in a single number:"
###################################################
# #
# End of File #
# #
这是输出:
please enter in a single number:0
注意:当你输入输入时,它不会打印你输入的内容。所以0是程序的输出
【问题讨论】:
-
注意:我知道有数百个关于如何读取/打印整数的教程,但我相信我的程序是正确的。我认为错误可以在 mips 设置的某个地方找到。我有一个朋友执行它,它对他们有用
-
您是否在 QtSPIM 的调试器中单步执行了您的代码?我也没有看到问题,courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html 显示这些是那些 MARS/SPIM 系统调用的正确数字和寄存器。所以我想知道您是否可能在将文件重新加载到 SPIM 或类似的东西之前忘记保存文件......在调试器中单步执行应该可以排除这种情况。特别是如果它的复制/粘贴对尝试过它的朋友有用。
-
@PeterCordes 希望这就是问题所在:// 我总是保存我的文件(作为 .s)并且总是重新初始化和加载文件。还可以使用 F10(单步)并且不会弹出错误:(
-
我还下载了 '19 版本的所有版本(新的或旧的),重新初始化并加载了文件,每个版本都输出这个......
-
检查您的 QtSPim 选项:模拟器->设置->MIPS->内存映射 I/O。如果选中,请取消选中它,如果未选中已经告诉我们。