SPIM / MISP - Kleinbuchstaben in Großbuchstaben umwandeln

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

  • SPIM / MISP - Kleinbuchstaben in Großbuchstaben umwandeln

    Hi,

    ich hoffe, dass bei euch einer ne gute idee hat.

    Aufgabe: Der User gibt in der Konsole einen String ein und dieser wird in Großbuchstaben umgewandelt und über die Konsole ausgegeben.

    Das Einlesen und Ausgeben habe ich schon, aber wie ich den Speicher jedes einzlenen Buchstabens bearbeite und da den asciicode, also den wert des chars rausbekomme, ist mir ein rätsel...

    Hat da jemand einen tipp für mich?

    pastebin.com/6EqzTCyY
  • Wenn du Sonderzeichen erstmal weglässt, (die benötigen eh eine Sonderbehandlung) Kleinbuchstaben einfach 32 abziehen und schon hast du den passenden Großbuchstaben. Also grob so:

    if char>97 and char <123 then char = char-32
    Für Gorßbuchstaben zu Kleinbuchsteben dann halt umgekehrt. Sondergeschmacksrichtungen wie Umlaute musst du extra abfragen
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • So,
    nach 7 h habe ich den code fertig für SPIM (Assembler)

    Quellcode

    1. .data
    2. str1: .asciiz "Bitte geben Sie eine Zeichenkette ein .\n"
    3. str2: .asciiz "Christian wuenscht viel spaß beim Umwandeln\n Alle Eingaben werden zu Grossbuchstaben umgewandelt!"
    4. vorz: .asciiz "->"
    5. eing: .space 100
    6. .text
    7. main: li $s0, 97 #ab hier beginnen die kleinbuchstaben
    8. li $s1, 122 #hier enden die Kleinbuchstaben
    9. li $t3, 0 #Zählvariable
    10. li $v0, 4 #Print_String
    11. la $a0, str2 #Laden der Begruessung
    12. syscall # Ausgabe der Begruessung
    13. li $v0, 4 #Print_String
    14. la $a0, str1 #Laden der Aufforderung
    15. syscall # Ausgabe der Aufforderung
    16. li $v0, 4 #Print_String
    17. la $a0, vorz #Laden des Zeilenanfangs
    18. syscall # Ausgabe des Zeilenanfagns
    19. li $v0, 8 #Load_String
    20. la $a0, eing #Lade den String in eing
    21. li $a1, 60 # 60 Zeichen maximale Stringlänge
    22. syscall
    23. j schl # Der eingegebene String befindet sich nun an der Speicheradresse von eing
    24. schl: lb $t1, eing($t3) # laden des ersten Zeichens
    25. beqz $t1, exit # Wenn 0 dann Ende
    26. bgeu $t1, $s0, grz # Wenn der Asciiwert größer ist sprung zu grz
    27. addi $t3, $t3, 1 # Erhoehen der Zaehlvariable um 1
    28. j schl
    29. grz: bgt $t1, $s1, ngz #nicht gesuchtes zeichen
    30. sub $t1, $t1, 32 #durch subtraktion von 32 wird der kleibuchstabe zu einem Großbuchstaben
    31. sb $t1, eing($t3) #Speichern an $t3-ter stelle
    32. addi $t3, $t3, 1 #Erhoehen der Zaehlvariable um 1
    33. j schl #Springen zum Schleifenanfang
    34. ngz: addi $t3, $t3, 1 #erhoehen der zaehlvariable um 1
    35. j schl #sprung zur schleife
    36. exit: li $v0, 4 #Print_String
    37. la $a0, eing #der umgeandelte String wird geladen
    38. syscall #Ausgabe des neuen Strings
    39. li $v0, 10 # syscall 10 - exit
    40. syscall
    Alles anzeigen