Kleine AVR Assembler Frage

M

Michael Dreschmann

Guest
Hallo,

ich bin gerade dabei ein Stück Assembler-Code für einen AT90S8515 zu
debuggen. Dabei gibt es folgenden Programmteil, von dem ich nicht
sicher weiss, ob er auch das tut, was ich will:

cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
breq PC_EQU
cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
brlo PC_INC
cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
brsh PC_DEC

In ACT_PAN_POS und TEMP liegt jeweils ein 16 Bit word. Diese beiden
möchte ich nun vergleichen und abhänig vom Ergebniss (gleich, kleiner,
grösser) an 3 verschiedene Stellen springen.
Nun bin ich mir nicht sicher, ob die Variante mit erst Compare (cp)
Low-byte und dann Compare with Carry (cpc) High-byte auch mit allen
drei verwendeten Sprungbefehlen (breq, brlo und brsh) richtig
funktioniert.
Vielleicht weiss da einer Bescheid und kann mir das kurz beantworten.

Michael
 
Michael Dreschmann schrieb:
cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
breq PC_EQU
cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
brlo PC_INC
cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
brsh PC_DEC
Hallo,

das müsste viel einfacher gehen:

cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
breq PC_EQU
brlo PC_INC
brsh PC_DEC

Schau mal nach wann die Flags bei den Compare Befehlen gesetzt und
gelöscht werden, die Branch Befehle sollten eigentlich die Flags nicht
löschen, dann ist aber eine Wiederholung der Compare Befehle nicht nötig.
Bei den Add und Add with Carry Befehlen ist evtl. die Verwendung des
Carry Bits genauer erläutert, aber 16 statt 8 Bit sollte so bei Addieren
und Vergleichen gehen, aber beim AVR kenne ich es nicht.

Bye
 
Hi!

das müsste viel einfacher gehen:

cp ACT_PAN_POS_L,TEMP_L
cpc ACT_PAN_POS_H,TEMP_H
breq PC_EQU
brlo PC_INC
brsh PC_DEC
Ok, stimmt, da stand ich bischen aufm Schlauch, als ich das
geschrieben habe...

Bei den Add und Add with Carry Befehlen ist evtl. die Verwendung des
Carry Bits genauer erläutert, aber 16 statt 8 Bit sollte so bei Addieren
und Vergleichen gehen, aber beim AVR kenne ich es nicht.
Ja, scheind schon so richtig zu sein, jedenfalls habe ich den Fehler
jetzt woanders gefunden. :)

Danke für deine Antwort.

Michael
 

Welcome to EDABoard.com

Sponsor

Back
Top