www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Division durch 2 mit Vorzeichen


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich eine Zahl im zweierkomplement vorliegen habe und sie durch 2
teilen will, dann muss ich doch vor dem rechtsshift beachten ob die
Zahl positiv oder negativ ist und das carry entsprechend setzen?!?

Stimmt meine Annahme so?

Danke für tips!

GRUß,

Peter.

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mich recht entsinne, dann musst du das nicht beachten, sondern
nach dem Verschieben dein MSB-1 in das MSB kopieren.

Gruß

Oliver

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im AVR-Assembler gibt es extra dafür einen Befehl:

ASR - Arithmetic Shift Right

Hier wird das MSB einfach so belassen, wie es ist.

Bei anderen Prozessoren/Mikrocontrollern gibt es was Ähnliches
möglicherweise auch.

Gruß
Ingo

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

erstmal Danke für die schnelle Antwort!

Ich denke wir meinen das gleiche. Ich hätte das MSB in das Carry
kopiert und dann den rechtsshift ausgeführt. Das carry wird dann zum
MSB. Kommt aufs gleiche raus so wie ich das sehe.

Gruß,

Peter.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ingo,

ebenfalls Danke für die Antwort!

ich "muss" leider auf einem 8051-Derivat programmieren. so einen
luxuriösen Befehl habe ich leider nicht    :-(


Trotzdem Danke!

Gruß,

Peter.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MOV C, ACC.7
RRC A

Dafür hat der 8051 andere "luxuriöse" Befehle (z.B. CPL Portpin,
DJNZ).


Peter

Autor: Ingo Henze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade, mußt Du es halt doch "zu Fuß" machen.

Hab mal grad so aus interesse nachgesehen, es gibt sowas auch schon bei
älteren Prozessoren :-)

Z80: SRA (Shift right arithmetical)
x86: SAR (Sift arithmetic right)

Wäre eventuell auch hilfreich, bei Fragen zumindest den
Prozessor-/Mikrocontrollertyp immer mit anzugeben.

Gruß
Ingo

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Teil doch einfach einmal -1 durch 2 und sieh Dir das Ergebnis an:
schieben reicht nicht. Runden sollte man zuvor auch noch !

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MOV C, ACC.7
ADDC A, #0
MOV C, ACC.7
RRC A


Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

klar, stimmt schon. der 8051 kann dafür anderes "besser".

habe leider den Sinn des letzten Beitrages von Dir nicht so ganz
verstanden. könntest du bitte erklären was du meinst? wo liegt hier der
Trick?


Danke!!

Gruß,

Peter.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bezieht sich auf Michaels Post.

Bein negativen Werten mußt Du noch 1 addieren, damit die Division
stimmt.
Sonst ist: -1 / 2 = -1


Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,hallo Michael,

vielen vielen Dank für den tipp!!! Da wäre ich sehr wahrscheinlich
reingefallen und hätte ewig nach Fehlern gesucht!!

Jetzt klappt es so wie es soll!


Danke!!!


Peter

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.