Bei den Schiebebefehlen gibt es zwei Varianten : Man unterscheidet zwischen einer arithmetischen und einer logischen Verschiebung. Der Unterschied liegt darin, daß bei einer logischen Verschiebung das Vorzeichen nicht beachtet wird, im Gegensatz zu der arithmetischen Verschiebung, wo \"durch das Vorzeichen hindurch\" verschoben wird.
Bei einer Verschiebung muß man sich den Inhalt des Operanden als eine Kette von 8 oder 16 Bits vorstellen. Durch einen entsprechenden Befehl wird die Kette nach links oder rechts verschoben. Dabei fällt am Ende ein Bit heraus (wird in das Carry-Flag abgelegt), während am Anfang eine Null hineingeschoben wird. Die einzelnen Schiebebefehle unterscheiden sich dadurch, wie das freigewordene Bit besetzt wird. Bei der logischen Rechtsverschiebung wird die Null in das höchstwertige Bit eingeschoben, bei der arithmetischen dagegen nicht, da hier das Vorzeichen ist und erhalten bleiben soll. Bei beiden Linksverschiebungen, also sowohl der logischen als auch der arithmetischen, rückt eine Null in die freigewordene Bit - Position Null.
|