word -> 2*byte

Gast #62184
Lesenswert?

Hi!

Gibt's in Bascom eine Funktion um eine Word Variable in 2 Bytes
aufzuteilen? Oder  kann man während der Laufzeit herausfinden in
welchen Registern die Word Variable gespeichert ist und so nachher die
Register einzeln lesen? Ich müsste nämlich 16-Bittrig adressieren
können...(Ram)

MFG Nik

P.s. in der Hilfe hab ich schon nachgeschaut, aber nur string-byte und
umgekehrt gefunden :(
Gast #62186
Lesenswert?

Vielen Dank!

Ich habs nun mit einer kleinen Änderung hingekriegt und in ein
Testprogramm eingebaut;
$regfile "m16def.dat"
Dim wordvariable As Word
Dim lowbyte As Byte
Dim highbyte As Byte
Dim u As Single ' variable als zwischenspeicher

wordvariable = 500 ' als beispiel 500 für die wordvariable

lowbyte = wordvariable And 255
U = wordvariable / 256
highbyte = Int(u)

'folgendes kann weggelassen werden, dient aber zur anzeige auf dem
LCD
Disp:
Cls
Home
Lcd lowbyte
Lowerline
Lcd highbyte
End
Gast #62189
Lesenswert?

... bei einer solchen Division bietet sich doch wohl eine
Schiebe-Operation an, nicht? Wer weiß schon wie der Ausdruck
"U = wordvariable / 256" übersetzt wird? Eine Division könnte -je
nach µC- etwas ineffizient (Codeumfang, Laufzeit) sein.
Gast #62190
Lesenswert?

Ach so. Ich verwende einen Atmega16...
Für andere mag die Geschwindigkeit eine grössere Rolle spielen.
Bei mir in diesem Fall eben nicht :)
Aber wie meinst du das mit der Schiebeoperation?
Gast #62193
Lesenswert?

Danke :) geht auch :)

Ich habs vorher mal ähnlich versucht. Und zwar indem ich den Reg.
Inhalt per asm in das eine byte verschoben habe und das zweite byte vom
word ins zweite byte-variabel-register. Hat dann aber nicht
funktioniert. Kompilierungsfehler :'(
Gast #62194
Lesenswert?

... dass man eine Division durch bitweises Rechtsschieben erreichen kann
weißt du doch sicher? Auch in BASIC sollte das möglich sein (ich kenne
mich mit BASIC nicht aus). Soll heißen:
1 x nach rechts schieben => Division druch 2,
2 x nach rechts schieben => Division druch 4,
3 x nach rechts schieben => Division druch 8,
usw.
Gast #62196
Lesenswert?

... ja immer schön auf die Optimierung verlassen! Wird nur eine Frage
der Zeit sein bis du damit Schiffbruch erleidest. Nachdenken kann nicht
schaden; vielleicht kann man das aber von BASIC-"Programmierern"
nicht verlangen ;o)

-end of discussion-
Gast #62197
Lesenswert?

doch sehr wohl kann man nachdenken von Basic Programmierern erwarten.
Doch wenn ich keinen Platzsparen muss und die Geschwindigkeit keine
grosse Rolle spielt, kann ich das ja machen wie ich das möchte.
Ok, bei z.b. C müsste ich mehr Nachdenken. Nur schon wegen der Logik
dieser Sprache...nun ja du magst das selbe von Basic denken...
Ich muss auch nicht immer wieder bekannt geben das Basic besser sei als
irgendetwas anderes..Obwohl das MEINE Ansicht ist. Aber einige haben
Anscheinend nix besseres zu tun als andere Programmierer zu beleidigen.
Ich denke das bezieht sich auf diese die es in einer Sprache versuchen,
dabei nicht weiterkommen und ja nicht zugeben wollen, das sie nicht
weiterkommen...mag ja irre idiotisch klingen, aber mir scheint sowas
einem Minderwertigkeitskomplex zu ähneln...

-end of discussion- :)
Gast #62198
Lesenswert?

@Olaf

Kann es sein das du nur Streit suchst ?

Anstatt dich über Anfänger lustig zu machen kannste entweder Helfen
oder einfach die Klappe halten.

Rumhöhnen kannste bei deiner Alten und "end of discussion" ist erst
dann wenn entweder keiner mehr was dazu zu sagen hat oder alle einen
Konsens gefunden haben. ;-)

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