ATtiny Assembler cp brlo

OP #3108494
Lesenswert?
• ▲
▼
Hallo,

momentan versuche ich mir gerade Assembler an einem ATtiny13A 
beizubringen.
Dabei habe ich mich über Folgendes gewundert:
Bei der CP Anweisung steht im Instruction Set, dass das Carrybit 1 wird, 
wenn Rr größer ist als Rd (bzw. Rd kleiner gleich Rr).
Nun steht aber bei BRLO: "the branch will occur if and only if the 
unsigned binary number represented in Rd was smaller than the unsigned 
binary number represented in Rr" -> kleiner und nicht wie erwartet 
kleiner gleich.
(Im DB des ATtiny13A steht bei BRLO if(c=1).)
Meine Frage lautet daher:
Ist das ein Fehler in der Beschreibung oder ein Missverständnis 
meinerseits (und wenn ja, welches)?

Ich hoffe, meine Problembeschreibung ist einigermaßen verständlich ;)
Vielen Dank für eure Hilfe.

Thomas
Gast #3108515
Lesenswert?
• ▲
▼
Das ist in der Tat ein wenig tricky.

Zunächst: Ich nehme an Du beziehst Dich auf das "Instruction Set Manual" 
0856I–AVR–0 zu finden hier: http://www.atmel.com/images/doc0856.pdf
Falls nicht, dann bitt einen Link auf das Dokument posten, auf das Du 
Dich beziehst. (Ist sowieso immer erforderlich bei Fragen zu Dokumenten 
von denen es mehrere Revisionen geben kann).

Auf Seite 10 findest Du in der Fussnote zu BRLO den Hinweis, das bei dem 
vorhergehenden CP die Operanden vertauscht werden müssen. Das sollte die 
Diskrepanz erklären.
Persönliche Seite #3108528
Lesenswert?
• ▲
▼
CP Rd, Rr ---> Rd - Rr

"the branch will occur if and only if the
unsigned binary number represented in Rd was smaller than the unsigned
binary number represented in Rr"´

Wenn Rd kleiner ist als Rr, kommt es zum Überlauf und Carry wird 
gesetzt. Ist C gesetzt, springt BRLO.

Sind Rd und Rr gleich groß, ist das Ergebnis Null - aber kein Überlauf. 
Deshalb wird das Zero-Flag gesetzt (siehe BREQ und BRNE), aber das 
Carry-Flag wird gelöscht - und BRLO springt nicht.


Gruß
Jonathan
OP #3108597
Lesenswert?
• ▲
▼
Erstmal danke für die Antworten.

@Uwe
In diesem Dokument fehlt der Satz, der mich irritiert. So gesehen ist 
das wirklich eindeutiger für mich. Dennoch interessierte mich, was ich 
genau missverstanden habe.

@Hmm
Das sollte keinen Unterschied machen, oder? Man kann ja auch den Test 
"Rd < Rr" verwenden.

@Jonathan
OK, das hat mich überzeugt.

Letztendlich war es ein dummer Leichtsinnsfehler von mir (umso mehr 
danke für eure Mühe):

Thomas W. schrieb:
> Rr größer ist als Rd (bzw. Rd kleiner gleich Rr)

Das muss natürlich "bzw. Rd kleiner Rr" heißen.

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.