winavr lo8() hi8() problem

Gast #712741
Lesenswert?

ich hab ein Problem mit lo8() und hi8() von WinAVR, dazu ein Beispiel 
mit dem Z-Pointer:
1
ldi ZL, [adresse von sprung, manuell eingegeben]
2
ldi ZH, [adresse von sprung, manuell eingegeben]
3
ijmp
4

5
sprung:

springt wie es soll zu sprung.

aber
1
ldi ZL, lo8(sprung)
2
ldi ZH, hi8(sprung)
3
ijmp
4

5
sprung:

springt genau doppelt soweit.

Wenn ich den Code disassemblier steht beim zweiten Beispiel einfach die 
doppelt so große Adresse drin.

Im Moment halbier ich den Z-Pointer hinterher einfach, dann springt er 
genau an die richtige Stelle, aber trotzdem würde mich interessieren 
warum der nicht die richtige Adresse nimmt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren