www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 24-Bit Zahlen subtrahieren - wie Test auf negatives Ergebnis?


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich subtrahiere zwei 24-Bit Zahlen im Format H(igh):M(id):L(ow) wie 
folgt:

sub ZAHL1L,ZAHL2L
sbc ZAHL1M,ZAHL2M
sbc ZAHL1H,ZAHL2H

Wie und an welcher Stelle kann ich abfragen, ob das Ergebnis negativ 
ist?

Gruß

Thomas

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas (Gast)

>Wie und an welcher Stelle kann ich abfragen, ob das Ergebnis negativ
>ist?

Nach der Rechnung, die Statusbits sind ebenso gültig wie bei 8-Bit 
Operatioenen.

MFG
Falk

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachschaun ob der Subtrahend größer ist als der Minuend.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also zum Bsp. das Negativ-Flag auswerten:

sub ZAHL1L,ZAHL2L
sbc ZAHL1M,ZAHL2M
sbc ZAHL1H,ZAHL2H
brmi SPRUNGADRESSE ; branch if minus

O.K so?

Gruß

Thomas

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und beachten, das auch das Statusbit für signed überlauf getestet wird. 
dazu gibts branch befehle für signed operationen

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau das prüft nur das negative Flag aber nicht ob zweier-komplement 
überlauf. Auf Seite 1 Instruction Set sieht man die Flags: N für 
negatives ergebnis, S ist entweder N oder V, sprich entweder negativ 
oder überlauf (wobei das ergebnis in den 3 8 bit Register alleine nun 
positiv erscheint, wenn jedoch das Carry bit als 25. bit interpretiert 
wird, wird dieses zu 1 und stellt das richtige Sign dar. In dem Fall 
musst du wie es in deinem Fall geboten ist eine Fehlerbehandlung 
anfügen, oder das Ergebnis manuell auf den negativsten in 24 bit 
darstellbaren wert korrigieren.

auf Seite 10 zeigt sich, der branchbefehl für negativ oder überlauf ist 
"BRLT"

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas schrob:
> Wie und an welcher Stelle kann ich abfragen, ob das Ergebnis negativ
> ist?

Wie soll man das bitte beantworten, wenn nicht nicht mal die µC-Familie 
da steht, für die das sein soll?

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johann L. wrote:

>
> Wie soll man das bitte beantworten, wenn nicht nicht mal die µC-Familie
> da steht, für die das sein soll?

Meine Antwort bezieht sich auf die AVR 8bit Familie..

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.