所以我需要在MIPS中用10"记录"来填充数组,其中包括员工的姓名,年龄和薪水。员工的姓名最多为40个字符,年龄和工资都应为整数。但是,在测试我写的这个循环时,我总是得到一个"无效的整数输入(系统调用5)"在我通过前5名员工之后的第18行,我输入" Emp6"然后按回车键,我似乎无法弄清楚原因。任何帮助将不胜感激!
测试输入:
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.
答案 0 :(得分:1)
您的主要问题似乎是read_string
系统调用期望$a1
中的缓冲区大小,但您将其用于循环计数器。因此,您最终会用完空间,并且输入缓冲区中会留下未处理的文本,然后由后续的read_int
读取并且会爆炸。
进一步的问题是,您继续增加$a0
,但未能在您的地址中考虑到这一点。另外sw $v0, 0($a0)
没有多大意义,字符串已经被读入内存,$v0
没有任何意思。