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


von Thomas H. (Gast)


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

von Kai G. Schwebke (Gast)


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

von Siegfried (Gast)


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

von Thomas H. (Gast)


Lesenswert?

Das ist ja supereinfach! Vielen Dank fuer den Tipp!

Ade,

Thomas

von Thomas H. (Gast)


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

von Kai G. Schwebke (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.