Von 10 Bit subtrahiere 8 Bit

Gast #2282
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
Gast #2283
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
Gast #2287
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren