Forum: Mikrocontroller und Digitale Elektronik ASM Relaitve branch out of reach???


von Sebastian Heyn (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich versuch gerade einen video generator zu basteln, das bild 
kommt aus dem flash des µcom,

ich lasse dazu einfach 2 zeilen aufbauen, jeweils mit lpm und out

(file im anhang)

dann lasse ich mit

cpi zeile,153 ; 153*2 +6zeilen vom sync
brne shift
jmp ausgabe

prüfen, ob das bild am ende ist´.. leider mag er das ned aus welchem 
grund auch immer

wie gesagt mein erstes ASM programm deshalb vielleicht etwas konfus ;-))

von Andi (Gast)


Lesenswert?

Hallo,

das problem ist, dass der BRNE nur relative Verzweigungen mit einem 
Offset von maximal +/- 64 Byte durchführen kann. Dein Label "shift" ist 
aber weiter entfernt.

Wenn Du die Folgenden Zeilen:

cpi zeile,153 ; 153*2 +6zeilen vom sync
brne shift
jmp ausgabe

So änderst:

cpi zeile,153 ; 153*2 +6zeilen vom sync
brne l_shift
jmp ausgabe
l_shift:
jmp shift

sollte es funktionieren.

viele Grüße,
Andi

von Axel R. (Gast)


Lesenswert?

This instruction branches relatively to PC in either direction (PC - 63 
≤ destination ≤ PC + 64). The parameter k is the offset from PC and is 
represented in two's complement form.

BRNE k             -64 ≤ k ≤ +63

"shift:" ist viiiiel zu weit weg.
Als Workaround könttest Du an eine Stelle im Programm springen(lassen) 
die nicht weiter als 64Byte weg ist und von dort mit "rjmp" nach 
"shift:".
Ist aber murks, oder?

AxelR.
Da war einer 'ne Minute schneller

von Sebastian Heyn (Gast)


Lesenswert?

naja hätte es auch ausgabe nennen können, oder wie auch immer.
das ganze programm ist murks :-))

von Sebastian Heyn (Gast)


Lesenswert?

falls jemand verbesserungsvorschläge hat, her damit!

danke für den tip. scheint wenigstens fehlerfrei zu compilieren. werde 
jetzt wohl mal schaltung aufbauen und testen

von Andi (Gast)


Lesenswert?

@Sebastian Heyn:

Nur nicht verzweifeln. In Assembler muss man halt einige Dinge selber 
beachten, die normalerweise ein Compiler übernimmt. Aber dafür lernst Du 
die CPU In- und Auswändig kennen. ;-)

viele Grüße,
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.