[assembler]frage zu Z pointer

OP #3067905
Lesenswert?
• ▲
▼
in dem AVR-Tutorial: 7-Segment-Anzeige
bei dem codebeispiel zu "einzelne 7-Segment Anzeige"

wird mittels Z-Pointer eine tabelle ausgelesen
1
 ldi     ZL, LOW(Codes*2)  ; die Startadresse der Tabelle in den
2
 ldi     ZH, HIGH(Codes*2) ; Z-Pointer laden

meine frage ist warum steht da "*2"


und warum die instruktion
1
adc     ZH, zero
nur dass das high byte vom Z-pointer auch 0 bleibt und nicht undefiniert 
ist ?
Gast #3067921
Lesenswert?
• ▲
▼
chris __ schrieb:

>  ldi     ZL, LOW(Codes*2)  ; die Startadresse der Tabelle in den
>  ldi     ZH, HIGH(Codes*2) ; Z-Pointer laden[/avrasm]
>
> meine frage ist warum steht da "*2"

Weil im Flash-Bereich Wortadressen verwendet werden (Instruktionen sind 
immer Vielfache von 2 Bytes lang), beim Datenzugriff auf den 
Flashbereich aber Byteadressen erforderlich sind.

> adc     ZH, zero

> nur dass das high byte vom Z-pointer auch 0 bleibt und nicht undefiniert
> ist ?

Das High-Byte bleibt nicht Null, sondern behält entweder seinen 
vorherigen Wert oder dieser wird um eins erhöht. Die Erhöhung um eins 
passiert genau dann, wenn bei vorherigen Addition des niederwertigen 
Bytes ein Übertrag anfällt. Es handelt sich einfach um die zweite Hälfte 
einer 16Bit-Addition, die, wie bei einem 8Bitter üblich eben in zwei 
Hälften zu erledigen ist.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.