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

niert, in<strong>de</strong>m das höchstwertigste Bit eines Bytes als Vorzeichen interpretiert wird. Ist es Eins, dann<br />

ist die Zahl negativ. In diesem Fall wer<strong>de</strong>n alle Zahlenbits mit ihrem invertierten Wert dargestellt.<br />

Invertiert heißt, dass -1 zu binär 1111.1111 wird, die 1 also als von binär 1.0000.0000 abgezogen<br />

dargestellt wird. Das vor<strong>de</strong>rste Bit ist dabei aber das Vorzeichen, das signalisiert, dass die Zahl negativ<br />

ist und die folgen<strong>de</strong>n Bits die Zahl invertiert darstellen. Einstweilen genügt es zu verstehen,<br />

dass beim binären Addieren von +1 (0000.0001) und -1 (1111.1111) ziemlich exakt Null herauskommt,<br />

wenn man von <strong>de</strong>m gesetzten Übertragsbit Carry mal absieht.<br />

In einem Byte sind mit dieser Metho<strong>de</strong> die Ganzzahlen von +127 (binär: 0111.1111) bis -128 (binär:<br />

1000.000) darstellbar. In Hochsprachen spricht man von Short-Integer.<br />

Benötigt man größere Zahlenbereiche, dann kann man weitere Bytes hinzufügen. Dabei enthält nur<br />

das jeweils höchstwertigste Byte das Vorzeichenbit für die gesamte Zahl. Mit zwei Bytes ist damit<br />

<strong>de</strong>r Wertebereich von +32767 bis -32768 (Hochsprachen: Integer), mit vier Bytes <strong>de</strong>r Wertebereich<br />

von +2.147.483.647 bis -2.147.483.648 darstellbar (Hochsprachen: LongInt).<br />

12.1.3 Binary Co<strong>de</strong>d Digit, BCD<br />

Die bei<strong>de</strong>n vorgenannten Zahlenarten nutzen die Bits <strong>de</strong>r Register optimal aus, in<strong>de</strong>m sie die Zahlen<br />

in binärer Form behan<strong>de</strong>ln. Man kann Zahlen aber auch so darstellen, dass auf ein Byte nur jeweils<br />

eine <strong>de</strong>zimale Ziffer kommt. Eine <strong>de</strong>zimale Ziffer wird dazu in binärer Form gespeichert. Da<br />

die Ziffern von 0 bis 9 mit vier Bits darstellbar sind und selbst in <strong>de</strong>n vier Bits noch Luft ist (in vier<br />

Bits wür<strong>de</strong> <strong>de</strong>zimal 0 .. 15 passen), bleibt dabei ziemlich viel Raum leer. Für das Speichern <strong>de</strong>r Zahl<br />

250 wer<strong>de</strong>n schon drei Register gebraucht, also z.B. so:<br />

Bit 7 6 5 4 3 2 1 0<br />

Wertigkeit 128 64 32 16 8 4 2 1<br />

R16, Ziffer 1 0 0 0 0 0 0 1 0<br />

R17, Ziffer 2 0 0 0 0 0 1 0 1<br />

R18, Ziffer 3 0 0 0 0 0 0 0 0<br />

Instruktionen zum Setzen:<br />

LDI R16,2<br />

LDI R17,5<br />

LDI R18,0<br />

Auch mit solchen Zahlenformaten lässt sich rechnen, nur ist es aufwendiger als bei <strong>de</strong>n binären Formen.<br />

Der Vorteil ist, dass solche Zahlen mit fast beliebiger Größe (soweit das SRAM reicht ...) gehandhabt<br />

wer<strong>de</strong>n können und dass sie leicht in Zeichenketten umwan<strong>de</strong>lbar sind.<br />

12.1.4 Gepackte BCD-Ziffern<br />

Nicht ganz so verschwen<strong>de</strong>risch geht gepacktes BCD mit <strong>de</strong>n Ziffern um. Hier wird je<strong>de</strong> binär kodierte<br />

Ziffer in jeweils vier Bits eines Bytes gepackt, so dass ein Byte zwei Ziffern aufnehmen kann.<br />

Die bei<strong>de</strong>n Teile <strong>de</strong>s Bytes wer<strong>de</strong>n oberes und unteres Nibble genannt. Packt man die höherwertige<br />

Ziffer in die oberen vier Bits <strong>de</strong>s Bytes (Bit 4 bis 7), dann hat das beim Rechnen Vorteile (es gibt<br />

spezielle Einrichtungen im AVR zum Rechnen mit gepackten BCD-Ziffern). Die schon erwähnte

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!