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. 101<br />

Die Register R0 (LSB) und R1 (MSB) enthalten das Ergebnis hex 61A8 o<strong>de</strong>r <strong>de</strong>zimal 25,000.<br />

Und: ja, die Multiplikation braucht bloß zwei Zyklen, o<strong>de</strong>r 2 Mikrosekun<strong>de</strong>n bei einem Takt von einem<br />

MHz.<br />

Hardware Multiplikation von 16- mit 8-Bit-Zahl<br />

Sind größere Zahlen zu multiplizieren? Die Hardware ist auf 8 Bit beschränkt, also müssen wir ersatzweise<br />

einige geniale I<strong>de</strong>en anwen<strong>de</strong>n. Das ist an diesem Beispiel 16 mal 8 gezeigt. Verstehen<br />

<strong>de</strong>s Konzepts hilft bei <strong>de</strong>r Anwendung <strong>de</strong>r Metho<strong>de</strong> und es ist ein leichtes, das später auf die 32- mit<br />

64-Bit-Multiplikation zu übertragen.<br />

Zuerst die Mathematik: eine 16-Bit-Zahl lässt<br />

sich in zwei 8-Bit-Zahlen auftrennen, wobei die<br />

höherwertige <strong>de</strong>r bei<strong>de</strong>n Zahlen mit <strong>de</strong>zimal<br />

256 o<strong>de</strong>r hex 100 mal genommen wird. Für die,<br />

die eine Erinnerung brauchen: die Dezimalzahl<br />

1234 kann man auch als die Summe aus<br />

(12*100) und 34 betrachten, o<strong>de</strong>r auch als die<br />

Summe aus (1*1000), (2*100), (2*10) und 4. Die 16-Bit-Binärzahl m1 ist also gleich 256*m1M<br />

plus m1L, wobei m1M das MSB und m1L das LSB ist.<br />

Multiplikation dieser Zahl mit <strong>de</strong>r 8-Bit-Zahl m2 ist also mathematisch ausgedrückt:<br />

m1 * m2 = (256*m1M + m1L) * m2 = 256*m1M*m2 + m1L*m2<br />

Wir müssen also lediglich zwei Multiplikationen durchführen und die Ergebnisse addieren. Zwei<br />

Multiplikationen? Es sind doch drei * zu sehen! Für die Multiplikation mit 256 braucht man in <strong>de</strong>r<br />

Binärwelt keinen Hardware-Multiplikator, weil es ausreicht, die Zahl einfach um ein Byte nach<br />

links zu rücken. Genauso wie in <strong>de</strong>r Dezimalwelt eine Multiplikation mit 10 einfach ein Linksrücken<br />

um eine Stelle ist und die frei wer<strong>de</strong>n<strong>de</strong> leere Ziffer mit Null gefüllt wird. Beginnen wir mit<br />

einem praktischen Beispiel. Zuerst brauchen wir einige Register, um<br />

1. die Zahlen m1 und m2 zu la<strong>de</strong>n,<br />

2. für das Ergebnis Raum zu haben, das bis zu 24 Bit lang wer<strong>de</strong>n kann.<br />

;<br />

; Testet Hardware Multiplikation 16-mit-8-Bit<br />

;<br />

; Register Definitionen:<br />

;<br />

.<strong>de</strong>f Res1 = R2 ; Byte 1 <strong>de</strong>s Ergebnisses<br />

.<strong>de</strong>f Res2 = R3 ; Byte 2 <strong>de</strong>s Ergebnisses

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!