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