DWORD Zahl in einzelne Stellen zerlegen

1985zottel

Level-1
Beiträge
90
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen

Ich hab folgendes Problem.
Ich hab eine Zahl als DWORD (0-999999), nun muss ich diese Zahl zerlegen, sodass ich jede Stelle der Zahl
als einzelnes WORD oder BYTE habe.

z.B.
Eingang = 987654

Ausgang1=4
Ausgang2=5
Ausgang3=6
Ausgang4=7
Ausgang5=8
Ausgang6=9

Ich hoffe ihr versteht was ich genau will und könnt mir helfen.

Danke
 
Gib mal im Programm DTB ein, dann mit der Maus drauf und 'F1'.
Nach Ausführung von DTB hast du jeweils eine Zahl in 4 Bit stehen (BCD-Format).
Diese 4 Bit kannst du über Ausmaskieren und Schieben separieren und dann in Byte oder Word kopieren.
 
L L# 1234567 // Im Akku steht 1234567 dezimal oder 12d687 hex
DTB // Im Akku steht jetzt 19088743 dezimal oder 1234567 hex
T #zwischenspeicher // jetzt kannst du die einzelnen Stellen nach rechts "herausschieben"
L dw#16#0f // Maske letzte Stelle
UD // Ergebnis 00000007
T #letzteStelle
L #zwischenspeicher //
SRW 4 // eine Stelle schieben
T #zwischenspeicher //
L dw#16#0f // Maske letzte Stelle
UD // Ergebnis 00000006
T #vorLetzteStelle
//usw.
 
L L# 1234567 // Im Akku steht 1234567 dezimal oder 12d687 hex
DTB // Im Akku steht jetzt 19088743 dezimal oder 1234567 hex
T #zwischenspeicher // jetzt kannst du die einzelnen Stellen nach rechts "herausschieben"
L dw#16#0f // Maske letzte Stelle
UD // Ergebnis 00000007
T #letzteStelle
L #zwischenspeicher //
SRW 4 // eine Stelle schieben
T #zwischenspeicher //
L dw#16#0f // Maske letzte Stelle
UD // Ergebnis 00000006
T #vorLetzteStelle
//usw.


Danke für die schnelle Hilfe.

Leider funktioniert die Lösung von Zottel nur bis zur voeletzten Stellle.
Danach hab ich in den anderern 4 Stellen immer eine Null drin stehen.

Kann mir vielleicht einer sagen wie der Code bis zur ersten Stelle weitergeht.

Danke
 
Dann setz mal dein Programm rein. Vielleicht hast du nur ein Tippfehler oder dir fehlt ne Zeile.
Hast du denn verstanden was dein Namensvetter dir aufgeschrieben hat?

Gruß wolder
 
Dann setz mal dein Programm rein. Vielleicht hast du nur ein Tippfehler oder dir fehlt ne Zeile.
Hast du denn verstanden was dein Namensvetter dir aufgeschrieben hat?

Gruß wolder

Ich muss zugeben, so ganz bin ich da noch nicht durchgestiegen.

Hier mein Programm:

L L#123456 // Im Akku steht 1234567 dezimal oder 12d687 hex
DTB // Im Akku steht jetzt 19088743 dezimal oder 1234567 hex
T #Zwischenspeicher // jetzt kannst du die einzelnen Stellen nach rechts "herausschieben"
L DW#16#F // Maske letzte Stelle
UD // Ergebnis 00000007
T #Stelle6
L #Zwischenspeicher //
SRW 4 // eine Stelle schieben
T #Zwischenspeicher //
L DW#16#F // Maske letzte Stelle
UD
T #Stelle5
L #Zwischenspeicher //
SRW 4 // eine Stelle schieben
T #Zwischenspeicher //
L DW#16#F // Maske letzte Stelle
UD
T #Stelle4
L #Zwischenspeicher //
SRW 4 // eine Stelle schieben
T #Zwischenspeicher //
L DW#16#F // Maske letzte Stelle
UD
T #Stelle3
L #Zwischenspeicher //
SRW 4 // eine Stelle schieben
T #Zwischenspeicher //
L DW#16#F // Maske letzte Stelle
UD
T #Stelle2
L #Zwischenspeicher //
SRW 4 // eine Stelle schieben
T #Zwischenspeicher //
L DW#16#F // Maske letzte Stelle
UD
T #Stelle1



Wo liegt der Fehler?????
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry, mein Fehler! Beim Schieben muß es SRD 4 anstatt SRW 4 heißen! Sonst schiebt die CPU nur 16 Bit, also eine Hälfte des 32-Bit-Akkus! Müßte man auch durch Beobachten sehen können.
 
Sorry, hat sich erledigt, funktioniert.

Ich hatte meine Lokalvariable "Zwischenspeicher" als Word und nicht als DOppelword deklariert.

Danke an Alle für die schnelle Hilfe!!!!
 
Zurück
Oben