Hallo!
Nachdem ich einen langen Beitrag geschrieben habe und diesen aus
versehen gelöscht habe argh fasse ich mich jetzt kurz.
Mein Problem:"Wie kann ich eine beliebige Zahl(<256) mit 5
multiplizieren(überlauf?) und mit dem Ergebniss eine Speicheradresse
größer 255 erreichen?"
Ziel: Erreichen der Speicherzelle des ersten bytes des Zeichens ascii36
("$") mit eingabe seines ascii codes:
Angenommen das Zeichen "$"(Ascii36) soll erreicht werden, dann muss 32
von ascii36 abgezogen werden, da die tabelle erst bei ascii32
anfängt. Wenn man jetzt die speicherzelle 4(=36-32) anspringt, kommt man
natürlich beim 4ten byte vom leerzeichen raus und nicht beim ersten byte
vom "$".
Um zum ersten byte des $ zu gelangen muss man also 4*5(byte)+1 rechnen.
Aber wie rechne ich das? Das mit dem 8bit übersteigenden rechnen
verstehe ich noch nicht so ganz.
Vielen Dank im Vorraus, an die, die sich meinem Problem widmem!
Mfg Und3rt4ker
Was für ein µC soll das sein? Hat der einen Hardware-Multiplier? Wenn
nicht, dann geht Multiplizieren mit 5 auch durch zweimal nach links
schieben und Ausgangswert dazuaddieren (x*5 = x*2*2+x). Das Ergebnis ist
natürlich 16-bittig, d.h. der Überlauf muss bei jeder Operation beachtet
werden.
Der µC ist ein Attiny 2313. Kannst du mir evtl ein bsp zeigen, wie man
ein register "mpr" mit 5 multipliziert und das ergebnis in zwei
registern ausgibt?
THX, Mfg Und3rt4ker
jetzt habe ich noch ein problem:
wie kann ich den z-pointer um 32 erniedrigen und den unterlauf
verarbeiten?
"subi zl, 32" kann ja nur bedingt funktionieren.
Mfg Und3rt4ker