$21 $c9

Gast #355504
Lesenswert?
• ▲
▼
Hallo!

Ich bin gerade im AVR-Tutorial am arbeiten, und bin auf 2 kleine offnen
Frage gestoßen:

Im 4ten teil steht ldi Temp1, $21

Temp1 ist ja nichts anderes, als der name für einen register. aber was
bedeutet "$21" ? ist das ein eigenes Zahlensystem?

Wofür steht brne? aus der HTML Hilfe werde ich nicht schlau?!?!


danke für die Hilfe!!
Gast #355506
Lesenswert?
• ▲
▼
HI,

wenn ich das gerade richtig sehe, wird das $-Zeichen zur Kennzeichnung
von Hex-Werten verwendet. Ist also "mehr oder weniger" ein eigenes
Zahlensystem. Eher eine eigene Darstellung von Zahlen, wobei es hier
die Ziffern 0 bis F gibt (im Dezimalen entspricht das 0 bis 16).

brne müßte branch not equal heißen. also "Springe wen nicht gleich"
So ein Sprung bezieht sich immer auf einen direkt davor ausgeführten
Verleich, er wertet die hierbei gesetzten Flags aus.
Eigentlich ist die Hilfe im AVR-Studio doch ziemlich gut. Einfach den
Curser auf den Befehl stellen und F1 drücken. Da steht genau auf welche
Flags der Befehl "schaut" und was er dann tut.
Gast #355508
Lesenswert?
• ▲
▼
Hi Lukas,

$xx steht fuer ne Hexadezimalzahl. Kennzeichen ist das $. Basis ist
also 16. Buchstaben a-f stehen fuer 10-15.

brne - branch  when not equal wenn ich mich recht erinnere.
Bezieht sich auf der vorhergehenden Befehl, bzw um genau zu sein in
welchem Zustand er das Status Register hinterlaesst. Dort wird das
Ergebnis des Vergleichs in den jeweiligen Flags hinterlassen so das die
branch-Befehle reagieren koennen.

Eine gute Anleitung fuer erste Schritte in Assembler mit
Befehlsuebersicht und Erklaerung der wichtigsten findest du hier:
http://www.avr-asm-download.de/beginner_de.pdf

cu Tommi
Gast #355509
Lesenswert?
• ▲
▼
$21 oder auch 0x21

Der AVR Assembler akzeptiert beide Schreibweisen.

Zu brneq

ldi counter, 64
loop:
 eor checksum, data    ;checksumme aktualisieren (hier nur als
Beispiel)
 dec counter
brne loop

Der counter wird in jedem Durchgang decremntiert.
Solange counter nicht 0 ist, wird an das Label gesprungen.
#355513
Lesenswert?
• ▲
▼
> achos, also ganz einfach gesagt, "brne sprungziel" prüft, ob der
> register in der zeile dadrüber 0 ist.

Salopp gesagt: ja
Wenn mans genau nimmt: nein

brne benutzt einfach nur die Flags um zu entscheiden: Sprung oder
nicht Sprung.
Dem brne ist es völlig egal, wie die Flags zu ihrem Wert kommen.
Das kann durch einen Vergleich (cpi) sein, dass kann auch durch
eine Berechnung sein (inc, dec).

> achja, nochwas, kann ich auch einfach dezimal zaheln benutzen?

Sicher kann man das. Aber Hex-Zahlen sind in vielen Fällen
praktischer, da man mit etwas Übung sofort auf das zugrundeliegende
Bitmuster schliessen kann. Die Tabelle der einstelligen Hex-Zahlen
hat man schnell auswendig gelernt, zumal es da ein paar Eselsbrücken
gibt.
Mal ne Frage: Welche Bits sind in der Dezimal-Zahl 183 gesetzt.
Wenns dir so geht wie mir, dann musst du rechnen. Die gleiche Zahl
in Hex: B7. Das ist leicht: Das Bitmuster für B ist 1011 und das
Bitmuster für 7 ist 0111, also ist B7 in Binärschreibweise 10110111.
#355514
Lesenswert?
• ▲
▼
> kann ich auch einfach dezimal zaheln benutzen?

Ja aber selbstverständlich.

Ich nutze immer das Zahlenformat, was im jeweiligen Zusammenhang die
beste Aussagekraft hat.

- Schleifenzähler gebe ich meist dezimal an (ldi temp,234),
- Werte, bei denen es auf die einzelnen Bits ankommt in Hex oder Bin
  ($f7, 0b11110111, 0xf7),
- ASCII-Zeichen gebe ich als ASCII an (ldi temp,'a')...

Es kommt also immer darauf an, was man damit ausdrücken will. Es wäre
lächerlich, Schleifenzähler binär oder als ASCII anzugeben oder
ASCII-Zeichen in binär.

Wenn es um die Steuerregister der Hardwarefeatures geht (ADC
aktivieren, Timer-Betriebsart einstellen usw.) dann sollte man Register
und Bits beim Namen nennen.

 ldi temp,(1<<aden)|(1<<adsc)|(1<<adfr)
 out adcsr,temp

setzt z.B. im Register adcsr die Bits aden, adsc und adfr auf eins,
wobei alle anderen Bits auf null gesetzt werden.

...
#355516
Lesenswert?
• ▲
▼
Flags, Statusbits... sind die einzelnen Bits im Statusregister (SREG).

Jede Operation und jeder Vergleich beeinflusst diese Flags.
Bedingte Sprünge werten diese Flags aus.

Die gesamte Steuerung von Verzweigungen, aber auch einige Berechnungen
erfolgen über diese Flags.

In der Befehlsliste am Ende des Datenblatts des jeweiligen AVRs (und in
der Online-Hilfe zum AVR-Studio) erfährst du, welche Befehle welche
Flags beeinflussen.

Im Avr-Instruction-Set erfährst du weitere Einzelheiten zu den Flags
und zu den Befehlen.

Ohne dieses Wissen bist du in ASM aufgeschmissen.

...
Gast #355518
Lesenswert?
• ▲
▼
Flags wird so gesprochen, wie hier erklärt.
http://www.fein-schliff.de/Flex.gif
http://www.hen-mietpark.de/bilder/Flexboschgross.jpg
Hatte ich unserem Programmierer zum Geburtstag geschenkt. War ein
ziemlichen HALLOOO :-)).

Der hatte auch nur seine Flags im Kopf.

Flags heisst wohl sowas wie Fähnchen/Merker und sind Bits im
Statusregister der CPU, die einige Sachen klarstellen: obs einen
Überlauf gab, ob das Ergebnis der letzten Berechnung zB negativ wurde
usw. selbst der User hat hier noch die Möglichkeit, einen eigens für
ihn reservierten Merker (war es das T-BIT?) zu setzen oder zu löschen.
Den kann man dann auch abfragen, logisch :-))

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.