尝试使用MIPS中的字符串和整数填充数组时出错?

时间:2017-02-21 18:31:59

标签: arrays string assembly int mips

所以我需要在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.

1 个答案:

答案 0 :(得分:1)

您的主要问题似乎是read_string系统调用期望$a1中的缓冲区大小,但您将其用于循环计数器。因此,您最终会用完空间,并且输入缓冲区中会留下未处理的文本,然后由后续的read_int读取并且会爆炸。

进一步的问题是,您继续增加$a0,但未能在您的地址中考虑到这一点。另外sw $v0, 0($a0)没有多大意义,字符串已经被读入内存,$v0没有任何意思。