02.05.2013 Aufrufe

beginner_de

beginner_de

beginner_de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

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

Programmschritte beim Dividieren<br />

Das Programm glie<strong>de</strong>rt sich in folgen<strong>de</strong> Teilschritte:<br />

• Definieren und Vorbelegen <strong>de</strong>r Register mit <strong>de</strong>n Testzahlen,<br />

• das Vorbelegen von Hilfsregistern (die bei<strong>de</strong>n Ergebnisregister wer<strong>de</strong>n mit 0x0001 vorbelegt, um<br />

das En<strong>de</strong> <strong>de</strong>r Division nach 16 Schritten elegant zu markieren!),<br />

• die 16-Bit-Zahl in rd1h:rd1l wird bitweise in ein Hilfsregister rd1u geschoben (mit 2 multipliziert),<br />

rollt dabei eine 1 links heraus, dann wird auf je<strong>de</strong>n Fall zur Subtraktion im vierten Schritt<br />

verzweigt,<br />

• <strong>de</strong>r Inhalt <strong>de</strong>s Hilfsregisters wird mit <strong>de</strong>r 8-Bit-Zahl in rd2 verglichen, ist das Hilfsregister größer<br />

wird die 8-Bit-Zahl subtrahiert und eine Eins in das Carry-Bit gepackt, ist es kleiner dann wird<br />

nicht subtrahiert und eine Null in das Carry-Bit gepackt,<br />

• <strong>de</strong>r Inhalt <strong>de</strong>s Carry-Bit wird in die Ergebnisregister reh:rel von rechts einrotiert,<br />

• rotiert aus <strong>de</strong>m Ergebnisregister eine Null links heraus, dann muss weiter dividiert wer<strong>de</strong>n und<br />

ab Schritt 3 wird wie<strong>de</strong>rholt (insgesamt 16 mal), rollt eine 1 heraus, dann sind wir fertig.<br />

Für das Rotieren gilt das oben dargestellte Proce<strong>de</strong>re (siehe oben, zum Nachlesen).<br />

Das Dividieren im Simulator<br />

Die folgen<strong>de</strong>n Bil<strong>de</strong>r zeigen die<br />

Vorgänge im Simulator, <strong>de</strong>m Studio.<br />

Dazu wird <strong>de</strong>r Quellco<strong>de</strong> assembliert<br />

und die Object-Datei in<br />

das Studio gela<strong>de</strong>n.<br />

Der Object-Co<strong>de</strong> ist gestartet, <strong>de</strong>r<br />

Cursor steht auf <strong>de</strong>r ersten Instruktion.<br />

Mit F11 machen wir<br />

Einzelschritte.<br />

In die Register R0, R1 und R3<br />

wer<strong>de</strong>n die bei<strong>de</strong>n Werte<br />

0xAAAA und 0x55 geschrieben,<br />

die wir dividieren wollen.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!