Schiebeoperation negative Zahl

OP #2105756
Lesenswert?

Hallo,

ich hätte da mal eine Frage.

ich möchte mit meinem µController (MC68HC11) einen negativen Wert durch 
2 teilen.

Also lade ich mir z.b. -128 in den Akku A (1000 0000 entpricht $80)

Die Teilung möchte ich mit einer Schiebeoperation realisieren (logisches 
rechts schieben)

Und am Ende natürlich das Ergebnis speichern auf z.b Adresse $100


ldaa    #$80
lsra
staa    $100

Meine Frage ist, würde auf Adresse $100 dann -64 stehen? Also mir geht 
es um das MSB das bei negativen und positiven Zahlen das Vorzeichen 
bildet. Und ich weiß jetzt nicht ob aus diesem Vorzeichen Bit nach der 
Schiebeoperation ein Bit für den Zahlenwert wird.
#2105774
Lesenswert?

Christan K. schrieb:
> Die Teilung möchte ich mit einer Schiebeoperation realisieren (logisches
> rechts schieben)

Aus genau diesem Grund gibt es eigentlich immer 2 
nach-Rechts-Schiebeoperationen: eine logische, und eine arithmetische. 
Was Du suchst ist arithmetisches nach-rechts-schieben. (dabei wird das 
Vorzeichenbit "kopiert").

Kenne den Instructionset vom 68HC11 nicht auswending, deshalb weiss ich 
nicht wie die Instruktion heisst. Vielleicht "asra" ???

Zum Links-schieben gibt es logischerweise nur eine Operation.
OP #2105808
Lesenswert?

Hallo,

Danke für die schnellen Antworten.

2 Fragen hätte ich jedoch.

1) Kann ich das arithmetische Schieben auch bei positiven Zahlen 
Verweden?

Würde jetzt Denken ja, weil in dem Fall ja das MSB (0) kopiert wird.

2) ich möchte dann noch zu einer negativen Zahl ein Wert multiplizieren.

Für die Multiplikation gibt es nur den Befehl "Mul" und welcher die 
Zahlen in Akku A & B multipliziert. Leider steht in meiner Beschreibung 
zu den Befehl, das dieser Befehl vorzeichen los ist.

Wie sollte ich damit umgehen? Also vielleicht könnte hier meine Idee 
helfen

-negative Zahl negieren (Zahl ist positiv)
-Multiplikation durchführen
-positives Ergebnis negieren (Produkt ist negativ)
OP #2106016
Lesenswert?

Hallo, Ok das hab ich nun begriffen.

Könnte mir jemand mit meinem 2ten Problem helfen?

Also wie kann ich Zahlen multiplizieren (wenn eine z.b. negativ ist) 
wenn der einzige Assemblerbefehl (mul) vorzeichenlos ist?

Viele Grüße und Danke schonmal für die Antworten bei der 
Schiebeoperation.

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