Forum: Mikrocontroller und Digitale Elektronik Assembler teilen durch 8 oder schiebe 3 nach rechts


von Trexis5 (Gast)


Lesenswert?

Hallo,

im Register R24 und R25 liegt eine Word Variable
Wie kann ich diesen Wert in Assembler 3 bits nach rechts schieben, das 
ist ja das gleiche wie Teilen durch 8

Danke.

von melt (Gast)


Lesenswert?

Eine Angabe um welchen Prozessor/ssembler es geht wäre hilfreich...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Trexis5 schrieb:
> Wie kann ich diesen Wert in Assembler 3 bits nach rechts schieben, das
> ist ja das gleiche wie Teilen durch 8
Wenn man das Thema signed und unsigned mal aussen vor lässt...

von Spess53 (Gast)


Lesenswert?

Hi

>Wie kann ich diesen Wert in Assembler 3 bits nach rechts schieben, das
>ist ja das gleiche wie Teilen durch 8

Einmal schieben:

  shr r25
  ror r24

>Wenn man das Thema signed und unsigned mal aussen vor lässt...

Warum? Bei signed wird es zu:

  asr r25
  ror r24

MfG Spess

von Trexis5 (Gast)


Lesenswert?

Hi,

sorry.
Es ist für einen Atmel AVR.

von Karl H. (kbuchegg)


Lesenswert?

Spess53 schrieb:

> Warum?

Weil bei signed und negativen Zahlen dann auch noch dazukommt, in welche 
Richtung das Ergebnis 'gerundet' werden soll.

-5 / 4   wird so zu -2

wenn das ok ist, dann spricht nichts dagegen. Aber eigentlich würde ich 
erwarten, dass -5 / 4 eine -1 ergibt.

von Oliver J. (skriptkiddy)


Lesenswert?

Wenn r25 das Highbyte ist und r24 da Lowbyte, dann sieht das Ganze für 
einen AVR so aus:
1
lsr r25      Highbyte rechts-schieben
2
ror r24      Lowbyte rechts-schieben mit carry
3
lsr r25      ...
4
ror r24      ...
5
lsr r25      ...
6
ror r24      ...

von Trexis5 (Gast)


Lesenswert?

Hi,

super danke so geht es:
1
$asm
2
lds R24, {Test}                                             '/4
3
lds R25, {Test+1}
4
5
lsr r25
6
ror r24
7
lsr r25
8
ror r24
9
lsr r25
10
ror r24
11
12
sts {Test} , R24
13
sts {Test+1} , R25
14
$end Asm

Die Frage ist jetzt ob das schneller ist als wenn ich in Bascom 3 nach 
rechts schiebe.
Was meinst ihr?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Trexis5 schrieb:
> Was meinst ihr?
Sieh dir doch mal das Listing (oder zur Not das Hex-File) von Bascom 
an...

Eine unglaubliche Altenative wäre Ausprobieren, wenn es nur um eine 
qualitative Aussage geht...

von Simon K. (simon) Benutzerseite


Lesenswert?

"Schnell" und "BASCOM" widerspricht sich irgendwie.

von Simon K. (simon) Benutzerseite


Lesenswert?

@Lothar: Bei BASCOM kann man kein Assembler Listing generieren lassen, 
soweit ich weiß. Wodurch meine vorherige Aussage unterstützt wird.

Wie soll man alleine die Geschwindigkeit ohne Assembler Listing 
feststellen?

von Karl H. (kbuchegg)


Lesenswert?

Simon K. schrieb:
> Wie soll man alleine die Geschwindigkeit ohne Assembler Listing
> feststellen?

Stoppuhr nehmen.
Die Operation in einer Schleife 5 Millionen mal machen und mitstoppen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Simon K. schrieb:
> @Lothar: Bei BASCOM kann man kein Assembler Listing generieren lassen,
> soweit ich weiß. Wodurch meine vorherige Aussage unterstützt wird.
Böse Sache....
Dann eben runter aufs Hex-File... ;-)

von Simon K. (simon) Benutzerseite


Lesenswert?

Na super! Kommt der Chef rein und fragt, was man da mit der Stoppuhr 
macht ;-)

Weiter gefragt: Wenn es zu langsam ist. Wie stellt man dann fest, woran 
es liegt?

von Heinz (Gast)


Lesenswert?

Kommt der Chef rein und fragt: Was machen sie da mit BASCOM?

von Trexis5 (Gast)


Lesenswert?

Danke an
Skript Kiddy
Karl heinz Buchegger
Spess53
melt

Die haben nämlich geholfen und nicht irgendwelche kranken Äußerungen
abgegeben.

Das ist schon unglaublich was es hier für Leute gibt. Ist mir schon oft
aufgefallen.
Entweder sind die Besoffen oder können nix für ihre Blödheit.
Sobald man Bascom schreibt setzt bei vielen das Gehirn aus.

Bloß wer sagt das ein selbergestrickter Assembler-code schneller ist,
als durchdachte von bestimmt 100mal schlaueren Köpfen gemachten Routinen
in Bascom oder C?

Hautsache einen Blöden Kommentar absetzten.
Ich bemitleide hier die Leute, die sich ehrlich Anstrengen echte
Hilfestellungen zu geben.

Also danke noch mal an die Leute von Oben, die mir geholfen haben den
Code umzusetzen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Trexis5 schrieb:
> Die haben nämlich geholfen und nicht irgendwelche kranken Äußerungen
> abgegeben.
Da ich nicht in deiner Liste stehe, fühle ich mich angesprochen und 
ziehe mich damit beleidigt zurück. Allerdings meine ich, keine kranken 
Äusserungen, sondern durchaus sinnvolle Tipps abgegeben zu haben. Nur 
wollte ich dir das Denken nicht komplett abnehmen...
Seis drum... :-/

von U.R. Schmitt (Gast)


Lesenswert?

Trexis5 schrieb:
> Das ist schon unglaublich was es hier für Leute gibt. Ist mir schon oft
> aufgefallen.

Mir auch, das sind vor allem die, die ausrasten und wild um sich 
beleidigen wenn man es wagt das heilige BASCOM anzuzweifeln.
Oder die, die zu faul sind einfach mal auszuprobieren was langsamer ist.

Trexis5 schrieb:
> Sobald man Bascom schreibt setzt bei vielen das Gehirn aus.

siehe oben

Trexis5 schrieb:
> nicht irgendwelche kranken Äußerungen
> abgegeben.

Meiner Meinung nach die einzig kranke Äusserung war die auf die ich mich 
hier beziehe.

Trexis5 schrieb:
> Ich bemitleide hier die Leute, die sich ehrlich Anstrengen echte
> Hilfestellungen zu geben.

Die haben hier meist kein Problem wenn mal eine Äusserung mit kleinem 
Augenzwinkern dazukommt. Kannst Du auch mal lächeln?
Dich hatte hierniemand angegriffen und auch nicht beleidigt, mit 
Äusserungen wie
"Entweder sind die Besoffen oder können nix für ihre Blödheit."
bist Du alleine hier im Thread.

von Oliver J. (skriptkiddy)


Lesenswert?

Trexis5 schrieb:
> irgendwelche kranken Äußerungen

Ich sehe hier keine einzige kranke Äußerung. Waren doch recht witzige 
Kommentare dabei:

> Na super! Kommt der Chef rein und fragt, was man da mit der Stoppuhr
> macht ;-)

> Kommt der Chef rein und fragt: Was machen sie da mit BASCOM?

Und es kam noch nicht mal mein persönlicher Favorit von Karl heinz 
Buchegger: "...die Tante mit aufs Klo geht Lulu machen..."

BTW: Ich kann BASCOM AVR auch nicht leiden. Aber jedem wie er es mag 
oder besser gesagt "versteht". Achja und die beleidigenden Kommentare 
hättesest du dir voll sparen können. Ich bereue es schon fast dir 
geholfen zu haben.

Skriptkiddy

von Spess53 (Gast)


Lesenswert?

Hi

>Bloß wer sagt das ein selbergestrickter Assembler-code schneller ist,
>als durchdachte von bestimmt 100mal schlaueren Köpfen gemachten Routinen
>in Bascom oder C?

Du kannst ja mal Rechnen. lsr und ror benötigen jeweils einen 
Prozessortakt. Schneller geht es nicht.

MfG Spess

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
Noch kein Account? Hier anmelden.