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

Zahl 250 wür<strong>de</strong> im gepackten BCD-Format folgen<strong>de</strong>rmaßen aussehen:<br />

Byte Ziffern Wert 8 4 2 1 8 4 2 1<br />

2 4 und 3 02 0 0 0 0 0 0 1 0<br />

1 2 und 1 50 0 1 0 1 0 0 0 0<br />

Instruktionen zum Setzen:<br />

LDI R17,0x02 ; Oberes Byte<br />

LDI R16,0x50 ; Unteres Byte<br />

Zum Setzen ist nun die binäre (0b...) o<strong>de</strong>r die hea<strong>de</strong>zimale (0x...) Schreibweise erfor<strong>de</strong>rlich, damit<br />

die Bits an die richtigen Stellen im oberen Nibble kommen.<br />

Das Rechnen mit gepackten BCD ist etwas umständlicher im Vergleich zum Binär-Format, die Zahlenumwandlung<br />

in darstellbare Zeichenketten aber fast so einfach wie im ungepackten BCD-Format.<br />

Auch hier lassen sich fast beliebig lange Zahlen handhaben.<br />

12.1.5 Zahlen im ASCII-Format<br />

Sehr eng verwandt mit <strong>de</strong>m ungepackten BCD-Format ist die Speicherung von Zahlen im ASCII-<br />

Format. Dabei wer<strong>de</strong>n die Ziffern 0 bis 9 mit ihrer ASCII-Kodierung gespeichert (ASCII = American<br />

Standard Co<strong>de</strong> for Information Interchange). Das ASCII ist ein uraltes, aus Zeiten <strong>de</strong>s mechanischen<br />

Fernschreibers stammen<strong>de</strong>s, sehr umständliches, äußerst beschränktes und von höchst innovativen<br />

Betriebssystem-Herstellern in das Computer-Zeitalter herüber gerettetes sieben-bittiges Format,<br />

mit <strong>de</strong>m zusätzlich zu irgendwelchen Instruktionen <strong>de</strong>r Übertragungssteuerung beim Fernschreiber<br />

(z.B. EOT = End Of Transmission) auch Buchstaben und Zahlen darstellbar sind. Es wird<br />

in seiner Altertümlichkeit nur noch durch <strong>de</strong>n (ähnlichen) fünfbittigen Baudot-Co<strong>de</strong> für <strong>de</strong>utsche<br />

Fernschreiber und durch <strong>de</strong>n Morse-Co<strong>de</strong> für ergraute Marinefunker übertroffen.<br />

In diesem Co<strong>de</strong>-System wird die 0 durch die <strong>de</strong>zimale Ziffer 48 (hexa<strong>de</strong>zimal: 30, binär:<br />

0011.0000), die 9 durch die <strong>de</strong>zimale Ziffer 57 (hexa<strong>de</strong>zimal: 39, binär: 0011.1001) repräsentiert.<br />

Auf die I<strong>de</strong>e, diese Ziffern ganz vorne im ASCII hinzulegen, hätte man schon kommen können,<br />

aber da waren schon die wichtigen Verkehrs-Steuerzeichen für <strong>de</strong>n Fernschreiber. So müssen wir<br />

uns noch immer damit herumschlagen, 48 zu einer BCD-kodierten Ziffer hinzu zu zählen o<strong>de</strong>r die<br />

Bits 4 und 5 auf eins zu setzen, wenn wir <strong>de</strong>n ASCII-Co<strong>de</strong> über die serielle Schnittstelle sen<strong>de</strong>n<br />

wollen. Zur Platzverschwendung gilt das schon zu BCD geschriebene. Zum La<strong>de</strong>n <strong>de</strong>r Zahl 250<br />

kommt diesmal <strong>de</strong>r folgen<strong>de</strong> Quelltext zum Tragen:<br />

LDI R18,'2'<br />

LDI R17,'5'<br />

LDI R16,'0'<br />

Das speichert direkt die ASCII-Kodierung in das jeweilige Register.<br />

12.2 Bitmanipulationen<br />

Um eine BCD-kodierte Ziffer in ihr ASCII-Pendant zu verwan<strong>de</strong>ln, müssen die Bits 4 und 5 <strong>de</strong>r<br />

Zahl auf Eins gesetzt wer<strong>de</strong>n. Das verlangt nach einer binären O<strong>de</strong>r-Verknüpfung und ist eine leichte<br />

Aufgabe. Die geht so (ORI geht nur mit Registern ab R16 aufwärts):

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!