Assembler: Inhalt einer Speicherzelle auf Bildschirm ausgeben
Verfasst: 24.10.2024 22:41
Moin,
der Anfänger mit den Noob-Fragen mal wieder: wie gebe ich am effektivsten den Inhalt einer (oder mehrerer Speicherzellen bei höheren Werten) auf dem Screen aus?
Konkret: in meinem PacMan-Klon soll PacMan ja natürlich auch mit Punkten belohnt werden. Ich speichere also die Anzahl der gefressenen Punkte (meinetwegen multipliziert mit x) in einer Speicherzelle und möchte nun die Punkte einfach dezimal an eine bestimmte Stelle auf den Screen printen. Mit einem Byte natürlich erstmal nur max. 255 Punkte, daher eher 2 Byte. Als ich das "mal eben" umsetzen wollte, fiel mir natürlich auf, dass das ja nun gar nicht so einfach ist. Ich habe 3 (oder max. 4) Bytes in einer Gr. 1 Zeile dafür vorgesehen. Am liebsten sogar in dem Format 0815, also mit vorangestellten Nullen. Ich hätte jetzt wahrscheinlich eine endlos umständliche Routine geschrieben, mit zig Branches die den Wert in die einzelnen Dezimalstellen zerhackt, aber für so eine "Standard"-Aufgabe gibt es doch garantiert elegantere Lösungen, oder?
Hatte mir da vorher keine Gedanken drüber gemacht, aber in Assembler muss man wirklich immer darauf gefasst sein, dass es keine selbstverständlichen Sachen gibt.
der Anfänger mit den Noob-Fragen mal wieder: wie gebe ich am effektivsten den Inhalt einer (oder mehrerer Speicherzellen bei höheren Werten) auf dem Screen aus?
Konkret: in meinem PacMan-Klon soll PacMan ja natürlich auch mit Punkten belohnt werden. Ich speichere also die Anzahl der gefressenen Punkte (meinetwegen multipliziert mit x) in einer Speicherzelle und möchte nun die Punkte einfach dezimal an eine bestimmte Stelle auf den Screen printen. Mit einem Byte natürlich erstmal nur max. 255 Punkte, daher eher 2 Byte. Als ich das "mal eben" umsetzen wollte, fiel mir natürlich auf, dass das ja nun gar nicht so einfach ist. Ich habe 3 (oder max. 4) Bytes in einer Gr. 1 Zeile dafür vorgesehen. Am liebsten sogar in dem Format 0815, also mit vorangestellten Nullen. Ich hätte jetzt wahrscheinlich eine endlos umständliche Routine geschrieben, mit zig Branches die den Wert in die einzelnen Dezimalstellen zerhackt, aber für so eine "Standard"-Aufgabe gibt es doch garantiert elegantere Lösungen, oder?
Hatte mir da vorher keine Gedanken drüber gemacht, aber in Assembler muss man wirklich immer darauf gefasst sein, dass es keine selbstverständlichen Sachen gibt.