Gast
#24249
Hallo Leute Ich habe da eine Frage zum grundlegenden Programmaufbau in Assembler, wenn man das Problem mit Tabellen hat. Und zwar gestaltet sich mein Problem wie folgt. Ich habe zum Beispiel ein Programm geschrieben, welches ein Register hochzählt dieses dann in Dezimalzahlen wandelt und die Dezimalzahlen dann an ein LED-Display ausgibt. Mein Problem bei der Sache ist, den jeweiligen Binärzahlen (0 bis 9, die Binärzahl ist nach dem dekodieren auf drei register verteilt, 1er, 10er und 100er) dann das entsprechende Muster für das LED-Display zuzuordnen. Bis jetzt habe ich das ganze eigentlich immer nach folgendem Muster gelöst: ldi temp1, 1 cp einer, temp1 brne naechste_zahl ldi temp1, 12 (muster für eine eins) out portb, temp1 naechste_zahl: ...usw. wie man leicht erkennen kann habe ich das Problem mit einer Vergleichsfunktion gelöst. D.h. daß ich 10 Vergleiche hintereinander abklappern muss, um der jeweiligen Zahl dann das entsprechende Muster zuzuweisen. Ich finde, dass das nich besonders sinnvoll gelöst ist. Bei den Dezimalzahlen 0-9 mag das ja noch gehen, aber wie sieht das ganze dann bei komplettem ASCII-Code aus! Soll ich dann 256 Vergleiche hintereinander machen? Und wo soll ich da den ganzen Programmspeicher dafür hernehmen? Ich hatte schon die Idee, die Zahl, der ein Muster zugewiesen werden soll, als eine Art Vektor zu nutzen, der dann in entsprechende Abschnitte eines Programms zeigt (damit mein ich, dass ich mir die vergleiche sparen kann) wo dann die entsprechenden Muster als Wörter abgelegt sind, die ich mit .db bzw .dw (so ungefähr, hab mich mit den beiden noch nicht beschäftigt) gekennzeichnet sind. Ich glaube, dass diese Möglichkeit wesentlich besser wäre. Könnt ihr mir sagen, ob man das so machen kann, und wenn ja wie? Bin auch für andere Möglichkeit dankbar, aber bitte nur in Assembler, von C und Pascal hab ich keine Ahnung. Dann erstmal im Vorraus vielen Dank, und ich freu mich auf die hoffentlich zahlreichen Vorschläge. Gruß Felix