SPIM Ausgabe eingelesener Werte

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SPIM Ausgabe eingelesener Werte

    Servus Community

    Ich habe den Benutzer aufgefordert zwei Werte einzugeben, mit denen ich später noch was anstellen will. Bis dahin komm ich aber leider noch gar nicht! Bevor ich die Werte benutze, möchte ich sie dem Nutzer nochmal "zur Sicherheit" ausgeben, dass er weiß in welcher Reihenfolge er die eingegeben hat...
    Bisher hab icch folgendes geschrieben:

    Quellcode

    1. .data
    2. start: .asciiz "->"
    3. eing1: .asciiz "Geben Sie den ersten Wert ein"
    4. eing2: .asciiz "Geben Sie den zweiten Wert ein"
    5. probe: .asciiz "Hier ihre eingegebenen Werte in ihrer urspünglichen Reihenfolge"
    6. entry: .space 100
    7. .text
    8. main:
    9. li $v0,4
    10. la $a0, eing1
    11. syscall # Nutzer wird aufgefordert den ersten Wert einzugeben
    12. li $v0,4
    13. la $a0, start
    14. syscall # dem Nutzer wird der Zeilenbeginn angezeigt
    15. li $v0,5
    16. la $a1, entry
    17. move $s0, $a1
    18. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s0 verschoben
    19. li $v0, 4
    20. la $a0, eing2
    21. syscall # Nutzer wird aufgefordert den zweiten Wert einzugeben
    22. li $v0, 4
    23. la $a0, start
    24. syscall # dem Nutzer wird der Zeilenbeginn angezeigt
    25. li $v0, 5
    26. la $a1, entry
    27. move $s1, $a1
    28. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s1 verschoben
    29. li $v0, 4 # der Nutzer sieht nochmals seine eingegebenen Werte
    30. la $a0, probe
    31. syscall
    32. li $v0, 1 # der erste Wert
    33. la $a0, $s0
    34. syscall
    35. li $v0, 1 # der zweite Wert
    36. la $a1, $s1
    37. syscall
    Alles anzeigen


    Wenn ichs im SPIM compilieren will meckert er an der Stelle:

    Quellcode

    1. li $v0, 1 # der erste Wert
    2. la $a0, $s0
    3. syscall


    Was mach ich denn da falsch, dass ers ned nimmt?

    Gruß
    Münchner
  • Ok, ich hab den Teil schonmal. Mein Fehler war folgender:

    Quellcode

    1. li $v0,5
    2. la $a1, entry
    3. move $s0, $a1
    4. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s0 verschoben

    Das brauchts anscheinend gar ned. Eine richtige Möglichkeit ist:

    Quellcode

    1. li $v0,5
    2. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s0 verschoben
    3. or $s0, $zero, $v0 # $s0:= eingegebener Wert


    Der ganze Code (für den bisherigen Teil der Aufgabe) schaut dann so aus

    Quellcode

    1. #Swappen zweier Werte
    2. .data
    3. start: .asciiz "->"
    4. eing1: .asciiz "Geben Sie den ersten Wert ein"
    5. eing2: .asciiz "Geben Sie den zweiten Wert ein"
    6. probe: .asciiz "Hier ihre eingegebenen Werte in ihrer urspünglichen Reihenfolge"
    7. entry: .space 100
    8. .text
    9. main:
    10. li $v0,4
    11. la $a0, eing1
    12. syscall # Nutzer wird aufgefordert den ersten Wert einzugeben
    13. li $v0,4
    14. la $a0, start
    15. syscall # dem Nutzer wird der Zeilenbeginn angezeigt
    16. li $v0,5
    17. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s0 verschoben
    18. or $s0, $zero, $v0 # $s0:= eingegebener Wert
    19. li $v0, 4
    20. la $a0, eing2
    21. syscall # Nutzer wird aufgefordert den zweiten Wert einzugeben
    22. li $v0, 4
    23. la $a0, start
    24. syscall # dem Nutzer wird der Zeilenbeginn angezeigt
    25. li $v0, 5
    26. syscall # der 1. eingegebene Wert wird in $a1 gespeichert und dann ins Register $s1 verschoben
    27. or $s1, $zero, $v0 # $s1:= eingegebener Wert
    28. li $v0, 4 # der Nutzer sieht nochmals seine eingegebenen Werte
    29. la $a0, probe
    30. syscall
    31. li $v0, 1 # der erste Wert
    32. or $a0, $zero, $s0
    33. syscall
    34. li $v0, 1 # der zweite Wert
    35. or $a0, $zero, $s1
    36. syscall
    37. li $v0, 10
    38. syscall
    Alles anzeigen