Zeichenkette eingeben und Häufigkeit der einzelnen Zeichen ausgeben
Hallo administrator.de-Community
ich habe im jetzigen Semester ASM-Programmierung und als Aufgabe wurde uns aufgegeben ein Programm zu schreiben,
welches eine eingegebene Zeichenkette einliest und die Häufigkeit der jeweiligen Zeichen ausgibt.
Also z.b. wie oft ein a vorkommt, ein b etc.
Leider kam bei mir noch nicht die Erleuchtung in dieser Programmiersprach, da ich vorher nur C/C++ programmiert hab.
Hier der Ansatz:
http://endzeit.twinsbyte.de/storage/AUFG2.ASM
Dort wird die Zeichenketten eingelesen und die Zeichen werden sortiert.
Aber wie kann ich jetzt die Zeichen zählen und dann ausgeben?
Hat jemand eine gute Idee?
Chris
ich habe im jetzigen Semester ASM-Programmierung und als Aufgabe wurde uns aufgegeben ein Programm zu schreiben,
welches eine eingegebene Zeichenkette einliest und die Häufigkeit der jeweiligen Zeichen ausgibt.
Also z.b. wie oft ein a vorkommt, ein b etc.
Leider kam bei mir noch nicht die Erleuchtung in dieser Programmiersprach, da ich vorher nur C/C++ programmiert hab.
Hier der Ansatz:
http://endzeit.twinsbyte.de/storage/AUFG2.ASM
Dort wird die Zeichenketten eingelesen und die Zeichen werden sortiert.
Aber wie kann ich jetzt die Zeichen zählen und dann ausgeben?
Hat jemand eine gute Idee?
Chris
Please also mark the comments that contributed to the solution of the article
Content-ID: 59640
Url: https://administrator.de/contentid/59640
Printed on: December 3, 2024 at 10:12 o'clock
4 Comments
Latest comment
Dein Makro zur Ausgabe ist leider ncith mit dabei. Aber dort müßtest du ja auch nach einem Bestimmten Zeichen suchen was dir das Ende der Ausgabe angibt.
Genauso würde ich das auch machen.
Den Text Buchstabe für Buchstabe durchgehen (z.B. jeweils in BL). Hinterlege den Buchstaben in einem Register (z.B. CL) und einen Zählwert dafür in einem Zweiten (z.B. CH). Den Sortierten Text gehst du an durch und machst eine Prüfung mit bedingem Sprung. Unterscheidet sich der aktuelle Buchstabe (BL) von dem Wert im Register (CL) gibst du den Buchstaben im Register (CL) und den Zählwert dazu (CH) aus. Dann schreibst du den neuen Buchstaben von BL nach CL (mov CL, BL) und setzt den wert dazu auf eins (mov CH, 1). Ist der aktuelle Buchstabe (BL) gleich dem Letzten (CL) dann erhöhst du einfach nur den Zählwert um 1 (ADD CH, 1). So machst du die ganze Zeichenkette des Sortieren Textes durch. Wenn dann ein Definiertes Ende des Sortieren Textes kommt (durch ein Zeichen was nicht im Alphabet ist) kansnt dud as Programm beenden.
miniversum
Genauso würde ich das auch machen.
Den Text Buchstabe für Buchstabe durchgehen (z.B. jeweils in BL). Hinterlege den Buchstaben in einem Register (z.B. CL) und einen Zählwert dafür in einem Zweiten (z.B. CH). Den Sortierten Text gehst du an durch und machst eine Prüfung mit bedingem Sprung. Unterscheidet sich der aktuelle Buchstabe (BL) von dem Wert im Register (CL) gibst du den Buchstaben im Register (CL) und den Zählwert dazu (CH) aus. Dann schreibst du den neuen Buchstaben von BL nach CL (mov CL, BL) und setzt den wert dazu auf eins (mov CH, 1). Ist der aktuelle Buchstabe (BL) gleich dem Letzten (CL) dann erhöhst du einfach nur den Zählwert um 1 (ADD CH, 1). So machst du die ganze Zeichenkette des Sortieren Textes durch. Wenn dann ein Definiertes Ende des Sortieren Textes kommt (durch ein Zeichen was nicht im Alphabet ist) kansnt dud as Programm beenden.
miniversum