2017-02-21 5 views
0

Also muss ich ein Array in MIPS mit 10 "Datensätze" füllen, die aus dem Namen, dem Alter und dem Gehalt eines Mitarbeiters bestehen. Der Name des Mitarbeiters darf maximal 40 Zeichen lang sein und sowohl das Alter als auch das Gehalt sollen ganzzahlig sein. Beim Testen dieser Schleife, die ich geschrieben habe, bekomme ich immer eine "ungültige Ganzzahleingabe (syscall 5)" für Zeile 18, nachdem ich die ersten 5 Angestellten durchlaufen und "Emp6" eingegeben habe und Enter gedrückt habe und ich kann nicht scheinen Warum? Jede Hilfe würde sehr geschätzt werden!Fehler beim Versuch, ein Array mit Strings und Ints in MIPS zu füllen?

Testeingang:

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

Fehlercode:

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

Go: execution terminated with errors. 

Antwort

1

Ihr Hauptproblem scheint, dass der read_string Systemaufruf in $a1 die Puffergröße erwartet werden, aber Sie verwenden, die für Ihre Schleifenzähler . Daher haben Sie irgendwann keinen Speicherplatz mehr, und im Eingangspuffer verbleibt unverarbeiteter Text, der dann von der nachfolgenden read_int gelesen wird und explodiert.

Weiteres Problem ist, dass Sie $a0 inkrementieren, aber dies in Ihrer Adressierung nicht berücksichtigen. Auch sw $v0, 0($a0) macht nicht viel Sinn, die Zeichenfolge wurde bereits in den Speicher eingelesen, $v0 hat nichts Interessantes darin.

Verwandte Themen