mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM7 Assembler: Carry-Flag mit weniger als 3 Befehlen "übertragen"


Autor: Peter Pippinger (uncle-sam7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo NG,

gibt es eine Möglichkeit, das Carryflag mit nur einem Befehl in ein 
Register-Bit zu übertragen? (flag_c ist in meinem Fall 0x01)

Momentan habe ich folgenden Code:

  lsrs r10, r10, #1       // shift right r10 (A)
  orrcs r9, r9, #flag_c    // carry set
  andcc r9, r9, #0xff - flag_c  // carry clear

Danke im vorraus!
Peter

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mov r0, r0, rrx   // oben reinschieben
-oder-
adc r0, r0, r0    // unten reinschieben
-oder-
mrs r0, cpsr

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Pippinger schrieb:

>   andcc r9, r9, #0xff - flag_c  // carry clear

Dabei gehen die Bits 8..31 über die Wupper. Besser:
   biccc r9, r9, #flag_c  // carry clear

Weniger als deine 2 Befehle geht m.W. nicht, wenn die übrigen Bits des 
Zielregisters unverändert bleiben sollen.

Autor: Peter Pippinger (uncle-sam7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Dabei gehen die Bits 8..31 über die Wupper.

Hallo. ja, das mit den restlichen Bits ist in diesem Fall Absicht, da 
ich in diesen Registern die Register des "alten 6502" abbilde. Die waren 
nur 8 Bit. Aber das ist dennoch eine sehr interessante Frage für mich 
als Anfänger. Könnte ich mit den restlichen Bits evtl. auch effizient 
arbeiten?

Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem 
r-register des ARM unterbringen würde. Gibts da direkt Befehle, um 
darauf zuzugreifen? Oder werden das dann zwangsweise mehrere Befehle im 
Programm?

MfG
Peter

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Pippinger schrieb:
> Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem
> r-register des ARM unterbringen würde.

Nein, das wäre ziemlicher Quatsch.

> Gibts da direkt Befehle, um darauf zuzugreifen?

Nicht im ARM7.

> Oder werden das dann zwangsweise mehrere Befehle im Programm?

In jedem Fall. Du musst die Inhalte zum Rechnen wieder rauspopeln.

--
Marcus

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus Harnisch schrieb:
> Peter Pippinger schrieb:
>> Das wäre natürlich richtig fein, wenn ich 4 8Bit-Register in einem
>> r-register des ARM unterbringen würde.
> Nein, das wäre ziemlicher Quatsch.

ja, wenns nicht geht ist´s natürlich Quatsch. Wusste nicht, ob es nicht 
sowas ähnliches wie bei x86 gibt: Register AL, AH, AX und EAX etc...;

>> Oder werden das dann zwangsweise mehrere Befehle im Programm?
>In jedem Fall. Du musst die Inhalte zum Rechnen wieder rauspopeln.

Hab sie ja alle in eigenen Registern, weil ich mir das "rauspopeln" 
sparen möchte. Ich dachte nur, wenns da vielleicht Möglichkeiten gibt um 
Register zu "sparen" dann mach ich das.

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.