beginner_de
beginner_de
beginner_de
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.