Zitat Zitat von Bruno Pisarek
Hallo Hanni & Sebastian,

ich finde die Subtraktionsmethode wunderbar!
Im mikrocontroller.net hat ja z.B. der Peter Dannegger in diesem Thread LINK zwei schöne Beispiele in Assembler gegeben.
Einmal für 32Bit und einmal für 16Bit - prima.

Ich habe versucht, diese Beispiele in Bascom mit dem Inline-Assembler in bestehende Programme einzufügen. Leider meckert der Compiler an mehreren Stellen.

Weil es in Bascom keine BIN2BCD Wandlung gibt, hab ich dann ein wenig mit Schleifen-Konstrukten gearbeitet. Geht auch wunderbar, aber bläht leider den Code im Endeffekt noch mehr auf, also die Modulo-Lösung.

Hehe, Peter Dannegger steht nunmal für sehr effizienten Code. Such in der Codesammlung von mikrocontroller.net mal nach "Tasten entprellen - bullet proof" (3. oder 4. Seite) dann weisst du was ich meine.

Um den größeren Code zu erklären müsste man das sehen, was Bascom aus deinen Zeilen macht (also den Assembler Output). Ich tippe aber jetzt schon mal drauf, das a) so einige überflüssiger Vergleiche und b) so einige überflüssige Speicheroperationen darin versteckt sein werden.

Ansonsten könnte es meiner Meinung nach übrigens eine gute Idee sein, derartige Funktionen via Libs selbst zu erstellen und ggf hier zu veröffentlichen.

Wie man allerdings Libs in Bascom erstellt, kann ich dir nicht verraten (ich progge nunmal lieber etwas Hardwarenäher).

PS: Respekt, das du dir die Arbeit gemacht hast diesen Gedankenanstoß nachzuvollziehen.

Nachtrag:
vom Prinzip her sollte es aber mit inlineassembler recht einfach zu realisieren sein.

1. die Register die du verwenden willst auf den Stack sichern.
2. Die Ausgangswerte in diese laden
3. Peter Dannegger Methode anwenden (muss nur etwas angepasst werden)
4. die Ergebnisse ins RAM schreiben
5. die Register wiederherstellen
6. fertig.

Vielleicht hilft dir ja das etwas weiter.

Grüße,
da Hanni.