Przesunięcie logiczne (bajtu lub słowa) w prawo - SHR



Rozkaz SHR dokonuje przesunięcia logicznego lewego argumentu w prawo o liczbę bitów określoną prawym argumentem. Gdy dokonujemy przesunięcia o 1 bit, wówczas liczba l jest prawym argumentem, gdy dokonujemy przesunięcia o liczbę bitów większą niż 1, prawym argumentem jest rejestr CL, którego uprzednio należy załadować liczbą, określającą o ile bitów należy przesunąć lewy argument. W czasie przesuwania najmniej znaczące bity argumentu są wprowadzane do rejestru znaczników w miejsce znacznika CF, natomiast w miejsce najbardziej znaczącego bitu wpisywane jest 0; tracona jest poprzednia zawartość znacznika CF. Jeśli podczas przesuwania o 1 bit w lewo nie ulega zmianie zawartość bitu znaku, to wówczas znacznik OF jest zerowany, w przeciwnym razie znacznik ten przyjmuje wartość 1.

 


 

Uwaga! Rozkaz SHR używany może być w programach jako rozkaz zastępujący rozkaz dzielenia DIV, jak też w sytuacjach związanych z tablicami, z uzyskiwaniem dostępu do danego elementu tablicy.

Przykłady:

...
SHR AH,1
...
MOV CL,12
SHR BX,CL
SHR SHR DI,CL
...
MOV CL,3
SHR ZMIENNA,CL
...
SHR DX,1
 
;przesunięcie logiczne rejestru AH w prawo o 1 bit



;przesunięcie logiczne rejestru BX w prawo o CL bitów, CL=-12
;przesunięcie logiczne rejestru DI w prawo o CL bitów, CL=12



;przesunięcie logiczne komórki pamięci o nazwie ZMIENNA w prawo o CL bitów, CL=3


;przesunięcie logiczne rejestru DX w prawo o 1 bit, równoważne jest działaniu DX/2


cofnij