www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR assembler: nur das Carry addieren


Autor: Ulf Rolf (roolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage zur AVR 8-Bit Assemblersprache.

Beim Runden von Zahlen ist es manchmal ganz praktisch, auf eine Zahl nur 
das Carry zu addieren.  Man würde dafür naheliegenderweise einen Befehl 
"add immediate with carry" nutzen, der 0 als Argument bekommt.  Leider 
scheint es einen solchen Befehl nicht zu geben?

Meine bisherigen Versuche:
; auf r16 das Carry addieren
      brcs 1f
      sec
      rjmp 2f
1:    clc
2:    sbci r16, 0
oder
; auf r16 das Carry addieren
      push r17
      clr r17
      adc r16, r17
      pop r17
oder
; auf r16 das Carry addieren
      brcc 1f
      sbci r16, 0xfe
1:    ...
Gibt es auch eine Lösung mit einer Instruktion, die ich übersehen 
habe?

Autor: Torsten B. (torty)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi temp,0

adc register,temp

so hast Du nur das Carry zu Deinem Register addiert ;-)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Gibt es auch eine Lösung mit einer Instruktion, die ich übersehen
habe?

Nein. Wenn du das häufiger brauchst, lohnt es sich evtl. ein Register im 
Bereich r0..r15 mit Null zu initialisieren und dafür zu benutzen.

MfG Spess

Autor: Ulf Rolf (roolf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ulf Rolf schrieb:

>
> ; auf r16 das Carry addieren
>       brcs 1f
>       sec
>       rjmp 2f
> 1:    clc
> 2:    sbci r16, 0
> 

Unfug.  Die letzte Zeile muss vermutlich
2:  sbci r16, 0xff

heißen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.