Hallo, ich habe ein Problem und zwar muss ich in Asm einen BCD Wert um 1 erhöhen wie mache ich das?? Gruß
Ähm ich glaube ich bin falsch verstanden worden. Ich möchte eine BCD-Zahl um 1 erhöhen, und das geht nicht mit INC weil dann kommt quatsch raus.
Teile die BCD-Zahl in zwei Byte , INC das LOW-Byte, prüfe ob größer 9, falls ja, dann setze dieses Byte=0 und erhöhe das HIGH-Byte. Füge die beiden Bytes wieder richtig zu einem BCD-Byte zusammen. B.
Hallo schrieb: > Ich möchte eine BCD-Zahl um 1 erhöhen, und das geht nicht mit INC weil > dann kommt quatsch raus. Du musst danach noch den ggf. aufgetretenen Übertrag beachten und dann in die nächste Stelle befördern. Stichwort Half-Carry-Flag...
Du kannst aber auch das Byte einfach mit INC erhöhen. Prüfe ob die rechten 4 Bit >9. Falls ja, dann zähle noch 6 dazu.
Es liegt wohl eher daran, dass du uns über vieles im Unklaren lässt. Selbstverständlich funktioniert es mit "inc", solange die BCD-Stelle (Nibble) kleiner 9 ist. Über 9 muss ein Übetrrag auf die nächste Stelle erfolgen.
BCD sind eben nur 4 Bits eines Bytes. Es sein denn, Du meinst packed BCD. Das verwendet man heutzutage eigentlich nicht mehr. Die meisten Programmiersprachen rechnen direkt Dual und wandeln erst bei Eingabe bzw. Ausgabe nach dezimal (BCD oder ASCII). Der 8051 hatte noch eine DAA-Befehl, habe ich aber nie benötigt. Der AVR hat aber noch das H-Flag. Damit kannst Dir das ausgestorbene packed BCD basteln, wenns Dir Spaß macht. Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.