Frage von CallMeLeonardo, 46

Kennt sich jemand bei Assembler mit rotieren aus?

Hallo Zusammen :)

Sollte ich bei Assembler den Befehl RL A ausühren, rotieren alle Bits nach Links. Also stimmt folgende Aussage:

00010000

--> RL A (rotiere nach links)

00100000

Danke LG Leonardo

Antwort
von PWolff, 24

Assembler welchen Prozessors? (Die Assemblerbefehle unterscheiden sich etwas, und ihre Notation unterscheidet sich z. T. so sehr, dass man ihre Bedeutung manchmal nicht mal erraten kann, auch wenn man im Assembler eines anderen Prozessors zuhause ist.)

Manche Prozessoren haben zwei Rotationsbefehle pro Richtung - einmal nur die Bits des Registers, einmal unter Hinzuziehung des Carry-Flags.

Prozessoren, die nur einen Rotationsbefehl pro Richtung haben, verwenden (soweit ich weiß) immer das Carry-Bit mit.

D. h., falls in der Doku zu diesem Assembler nicht ausdrücklich steht, dass das Carry-Bit nicht mitverwendet wird, hängt das Ergebnis vom Inhalt des Carry-Bits vor dem Befehl ab.

d. h.

Carry-Bit = 0 ==> 00100000  (und Carry-Bit = 0)

Carry-Bit = 1 ==> 00100001  (und Carry-Bit = 0)

Wenn du sicher sein willst, dass von rechts eine 0 hereingeschoben wird, nimm den entsprechenden Shift-Befehl.

Antwort
von Herb3472, 32

Ja, das stimmt, wobei vielleicht ein Beispiel mit einer 1 an erster Stelle eindrucksvoller gewesen wäre:

1001000

RL A

0010001

Kommentar von Herb3472 ,

Sorry, hab' irrtümlich nur 7 bits dargestellt, aber das Prinzip ist klar ersichtlich.

Keine passende Antwort gefunden?

Fragen Sie die Community