02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Avr-Asm-Tutorial S. 89<br />

Und jetzt kommt die Sockenauszieher-Hammer-Instruktion! Wir vergleichen, ob das Register R1<br />

kleiner o<strong>de</strong>r gleich Null ist.<br />

TST R1<br />

Wenn jetzt das Z-Flag gesetzt ist, ist das Register ziemlich leer und wir können mit BREQ, BRNE,<br />

BRMI, BRPL, BRLO, BRSH, BRGE, BRLT, BRVC o<strong>de</strong>r auch BRVS ziemlich lustig springen.<br />

Sie sind ja immer noch dabei! Assembler ist schwer, gelle? Na dann, kriegen sie noch ein wenig gepacktes<br />

BCD-Rechnen draufgepackt.<br />

Beim Addieren von gepackten BCD's kann sowohl die unterste <strong>de</strong>r bei<strong>de</strong>n Ziffern als auch die<br />

oberste überlaufen. Addieren wir im Geiste die BCD-Zahlen 49 (=hex 49) und 99 (=hex 99).<br />

ADDITION Oberes Nibble Unteres Nibble<br />

Packed BCD Zahl 1 4 9<br />

Packed BCD Zahl 2 9 9<br />

Ergebnis E 2<br />

Beim Addieren in hex kommt hex E2 heraus und es kommt kein Byte-Überlauf zustan<strong>de</strong>. Die untersten<br />

bei<strong>de</strong>n Ziffern sind beim Addieren übergelaufen (9+9=18 = hex 12). Folglich ist die oberste<br />

Ziffer korrekt um eins erhöht wor<strong>de</strong>n, aber die unterste stimmt nicht, sie müsste 8 statt 2 lauten. Also<br />

könnten wir unten 6 addieren, dann stimmt es wie<strong>de</strong>r.<br />

Unteres Nibble korrigieren Oberes Nibble Unteres Nibble<br />

Ergebnis E 2<br />

Korrektur 0 6<br />

Ergebnis E 8<br />

Die oberste Ziffer stimmt überhaupt nicht, weil hex E keine zulässige BCD-Ziffer ist. Sie müsste<br />

richtigerweise 4 lauten (4+9+1=14) und ein Überlauf sollte auftreten. Also, wenn zu E noch 6 addiert<br />

wer<strong>de</strong>n, kommt <strong>de</strong>zimal 20 bzw. hex 14 heraus. Alles ganz easy: Einfach zum Ergebnis noch<br />

hex 66 addieren und schon stimmt alles.<br />

Oberes Nibble korrigieren Unteres Nibble oberes<br />

Byte<br />

Oberes Nibble Unteres Nibble<br />

Ergebnis E 8<br />

Korrektur 6 0<br />

Ergebnis + 1 4 8<br />

Warum dann nicht gleich hex 66 addieren?

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!