mikrocontroller.net

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


Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: melt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Angabe um welchen Prozessor/ssembler es geht wäre hilfreich...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

sorry.
Es ist für einen Atmel AVR.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn r25 das Highbyte ist und r24 da Lowbyte, dann sieht das Ganze für 
einen AVR so aus:
lsr r25      Highbyte rechts-schieben
ror r24      Lowbyte rechts-schieben mit carry
lsr r25      ...
ror r24      ...
lsr r25      ...
ror r24      ...

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

super danke so geht es:
$asm
lds R24, {Test}                                             '/4
lds R25, {Test+1}

lsr r25
ror r24
lsr r25
ror r24
lsr r25
ror r24

sts {Test} , R24
sts {Test+1} , R25
$end Asm

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Schnell" und "BASCOM" widerspricht sich irgendwie.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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... ;-)

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt der Chef rein und fragt: Was machen sie da mit BASCOM?

Autor: Trexis5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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... :-/

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.