Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: zacK am 17. March 2005, 16:48
-
moinz all!
Um Zahlen auf den Bildschirm auszugeben muss man die zahl ja in ein string umwandeln. Nun wie wird das realisiert... hat das schon jemand gemacht?
da habe ich null ahnung... :(
thx for help
-
Warum in einen String umwandeln?
Übergib dach z.b. 5 an eine Funktion, und die schreibt dann die 5 in den Videospeicher? Oder geht das nicht?
-
Aber ebendiese Funktion muss die fünf immer noch umwandeln.
-
Achso, kann man die nicht einfach so in den Speicher schreiben?!?!
-
Du musst zwischen ASCII-Code und reinen Integerwert (Ganzzahl) unterscheiden.
Der Prozessor rechnet mit normalen Zahlen und speichert diese auch so ab. Wenn nun Text in den Grafikspeicher geschrieben wird, wird pro Buchstabe (oder auch Ziffer) 1 Byte gebraucht, das ist der ASCII/ANSI - Code.
Der ASCII-Code von Ziffern beträgt genau 30h mehr als die eigentliche Ziffer:
0 30h
1 31h
2 32h
3 33h
...
9 39h
ausserdem muss beim umwandeln beachtet werden, dass der Integer zuerst in die einzelnen Ziffern umgewandelt werden muss
Bsp. Dezimalsystem:
Zahl 395
395 / 100 = 3 -> 3 schreiben
95 / 10 = 9 -> 9 schreiben
5 -> 5 schreiben
Hex:
395 / 256 = 1 ; 256 = 16^2
139 / 16 = 8 ; 16 = 16^1
11 -> B
-> 18B
Hoffentlich ist so das Konzept einigermassen klar.
-
Oh, ja ich dachte die Ziffer kann man einfach so dorthin schreiben.
-
gabs net mal in ASM ne funktion um nen normalen int in BCD zu kodieren? damit würde es besser gehen. ich werd mal schauen...
-
BCD sollte man nicht mehr verwenden, da es ab dem Athlon64 nur noch emuliert wird :D Und im 64-Bit-Modus de facto nicht mehr vorhanden ist.
BCD-Arithmetik bleibt bei den 1964er IBM-Rechenmaschinen *gg*
Svenska
-
naja, egal, aber man kann es gut verwenden für soetwas ;)