SAR A,n 等价于 └ A/2^n ┘ (当 A>=0 时 , 等价于 A/2^n )
C 语言是向 0 取整 向下取整是向负无穷找最接近本身的整数 .
对于除法结果为负数的情况
,
不能直接用移位来替代
.
调整方法 :
定理 :
x/y 当 x<0,y=2^n, 可以用 (x+y-1) >>n 来替代
8086 对于逻辑移位和算术移位的限制
SHL,SHR,SAL ,SAR 当移位不止一次的时候 ,CL 用来保存移位的次数
对于标志的影响 :
按照移入的位设置进位标志 CF , 根据移位后的结果影响 SF 、 ZF 、 PF , 对 AF 没有定义 ,
如果进行一位移动,则按照操作数的最高符号位是否改变,相应设置溢出标志
OF
:如果移
位前的操作数最高位与移位后操作数的最高位不同(有变化),则
OF = 1
;否则
OF = 0
。
当移位次数大于 1 时, OF 不确定 .
循环移位指令
不带进位循环左移
ROL reg/mem,1/CL 如图 7
图 7
11110000, 不带进位的循环左移一位 , 得到 11100001 ,则 BL=E1,CF=1, 如图 8
图 8
评论0
最新资源