2016-03-28 6 views
1

Ich versuche, den MIPS-Code von Summing Integer aus dem Benutzer zu schreiben, bis Benutzer das Zeichen "*" eingeben.Exit vom Hinzufügen von Ganzzahl-Schleife mit einem Zeichen

Ausgang mögen "1 4 3 * Insgesamt wurden 8"

ich den Code Abschlussschleifenbedingung geschrieben, wenn Benutzer gibt "-1" anstelle von "*". Ich habe versucht, '*' Syntax statt -1 zu schreiben, aber es gibt nicht die Summe. Wie kann ich die Schleife verlassen, wenn der Benutzer ein Zeichen "*" eingibt? Das war meine erste Frage und hier ist mein Arbeitscode für "-1".

# $s0=Sum, $s1=Checkvalue 

     .data     # Data memory area 
prompt: .asciiz "Total: " 
     .text     # Code area 

main: 
     move $s0, $zero  # Sum is made "0" 
     li  $s1, -1   # Checkvalue is made "-1" 

loop: bne $s0, $s0, exit # Infinite loop is described 
     li  $v0, 5   # Read integer into $v0 
     syscall     # Make the syscall read_int 

     move $t0, $v0   # Move the integer read into $t0 

     beq $t0, $s1, exit # If the read value is equal "-1", exit 
     add $s0, $t0, $s0  # Add the read integer to sum 
     j  loop    # Return loop 

exit: 
     li  $v0, 4   # Syscall to print string 
     la  $a0, prompt 
     syscall 

     move $a0, $s0   # Syscall to print string 
     li  $v0, 1 
     syscall 

     li  $v0, 10   # Syscall to exit 
     syscall 

# Reference: www.es.ele.tue.nl/~heco/courses/ProcDesign/SPIM.ppt 

Meine zweite Frage ist, dass ich „SYSCALL“ verwendet wird, ist meine Nutzung geeignet für stdin und stdout, Systemfunktionen?

Vielen Dank.

Antwort

2

Sie lesen ganze Zahlen wie -1, und es ist klar * ist keine ganze Zahl. Um die Schleife zu beenden, müssen Sie herausfinden, wie Zeichen und Ganzzahlen gelesen werden. Wenn Ihre Zahlen nur eine Ziffer lang sind, können Sie alle Eingaben als Zeichen lesen und bei Bedarf in Ganzzahlen umwandeln. Andernfalls müssen Sie Strings einlesen und in ganze Zahlen konvertieren.

Wie für Ihre zweite Frage, haben Sie richtig mit syscall für Standard-Input-und Output-Systemfunktionen.

+0

Danke. Ich habe eine neue Frage zu diesem [hier] geschrieben (http://stackoverflow.com/questions/36296223/comparting-two-strings-in-mips) – bieaisar

Verwandte Themen