Rotacje i przesunięcia logiczne oraz arytmetyczne


Rozkazy rotacji i przesunięć logicznych są bardzo ważnymi rozkazami operacji logicznych. Rozkazy rotacji, ROL, ROR, RCL, RCR, jak też rozkazy przesunięć SAL/SHL, SAR, SHR, przemieszczają bity rejestru lub komórki pamięci 8- lub 16-bitowej o 1 bit w prawo lub w lewo. Podczas przemieszczenia w lewo, bit nr 1 przekazuje swą wartość bitowi nr 2, natomiast sam przyjmuje wartość bitu nr 0, itd. Wynik rotacji lub przesunięcia wpisywany jest zawsze w miejsce argumentu (operandu). Rotacja różni się tym od przesunięć, iż w przesunięciach następuje utrata bitów w skrajnych bitach przesuwanych rejestrów lub komórek pamięci, natomiast w rotacjach nie ma tej utraty (szczegóły wyjaśnione zostaną podczas omawiania kolejnego rozkazu). Rozkazy przesunięć logicznych z uwagi na "pewne swoje pokrewieństwo w działaniu" do rozkazów mnożenia i dzielenia, używane są często w zamian za nie, tym bardziej, że wykonują się od nich o wiele szybciej. Należy dodać, iż rozkazy przesunięć cyklicznych, rozkazy rotacji, oddziałują na znaczniki (flagi) CF i OF.


podst.asemblera