基本概念
移位操作指令:移位操作指令是一組經常使用的指令,屬於匯編語言邏輯指令中的一部分,它包括移位指令(含算術移位指令、邏輯移位指令),循環移位指令(含帶進位的循環移位指令),雙精度移位指令三大類。其功能為將目的操作數的所有位按操作符規定的方式移動1位或按寄存器CL規定的次數(0~255)移動,結果送入目的地址。目的操作數是8位(或16位)的寄存器數據或存儲器數據。
基本格式
格式為:xxx oper1,CL/1
移位次數只能是1或者存放在CL里面。
移位指令
一、算術移位指令
1、算術左移指令SAL
功能:左移一次,最低位補0,最高位送入CF標志位,如圖:
意義:左移n次,等於x2的n次冪。所以可用於有符號操作數做x2的n次冪運算。
2、算術右移指令SAR
功能:右移一次,最高位保持不變,最低位送入CF標志位,如圖:
意義:右移n次,等於/2的n次冪。所以可用於有符號操作數做/2的n次冪運算。
二、邏輯移位指令
1、邏輯左移指令SHL
功能:同SAL,如圖:
意義:同SAL
2、邏輯右移指令SHR
功能:右移一次,最高位補0.區別!最低位送入CF標志位。如圖:
意義:用於實現無符號數/2的n次冪操作。
三、循環移位指令
1、循環左移指令ROL
功能:左移一次,左移前的最高位送入最低位以及CF.如圖:
2、循環右移指令ROR
功能:右移一次,右移前的最低位送入最高位以及CF.如圖:
3、帶進位的循環左移指令RCL
功能:左移一次,左移前的最高位送入CF,CF的內容送入最低位.如圖:
4、帶進位的循環右移指令RCR
功能:右移一次,右移前的最低位送入CF,CF的內容送入最高位.如圖:
四、雙精度移位指令
1、雙精度左移指令SHLD
2、雙精度右移指令SHRD