www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Von 10 Bit subtrahiere 8 Bit


Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe einen 10-Bit-Wert in zwei Registern (2 und 8 Bit) und moechte 
von diesem einen 8-Bit-Wert (auch in Register) subtrahieren.

Wie kann ich dies am geschicktesten machen?
Kann ist feststellen ob ein negativer Wert heraus kommt?
Muss ich hierzu bestimmte Teile zusaetzlich initialisieren?

Vielen Dank und tschau,

Thomas

Autor: Kai G. Schwebke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

hängt jetzt von der Architektur ab, aber bei
Atmel AVR geht das so:

10-Bit-Wert < 16-Bit, passt also in zwei Register (AL, AH)
Der zweite Wert passt in ein Register (B), dann am
besten noch ein Register vorhalten, wo immer
nur Null drinsteht (N).

sub al, b
sbc ah, n

sbc setzt dann eine Reihe von Flags, an denen
man sehen kann ob das Ergebnis > oder < Null
ist, ein Überlauf auftrat usw.


Gruss,
Kai

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Jetzt kenn ich den AVR-Assembler nicht so gut. Aber fehlt da nicht 
noch ein Carry-Set oder Carry-Clear vor der dem
SUB al,b ?!

Siegfried

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ja supereinfach! Vielen Dank fuer den Tipp!

Ade,

Thomas

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Siegfried,

da kann ich dir leider auch keine Antwort geben. Ich habe es auf jeden 
Fall versucht und es funktioniert soweit.

Viele Gruesse,

Thomas

Autor: Kai G. Schwebke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Siegfried,

vor dem SUB al,b braucht man das Carry nicht Löschen,
da SUB ohne Carry subtrahiert. Erst SBC zieht
das Carry mit ab.

Man könnte aber erst das Carry löschen und dann zwei
mal SBC verwenden - ist aber umständlicher.


Gruss,
Kai

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.