大家好,又见面了,我是你们的朋友全栈君。
学习概要
格式
移位指令主要分四种
一、逻辑移位指令
1.逻辑左移指令SHL
2.逻辑右移指令SHR
3.逻辑移位指令的功能
二、算术移位指令
1.算术左移指令SAL
2.算术右移指令SAR
最高位不变的意思就是,最高位原来是1(0),右移过后最高位就补1(0)。
3.算术移位指令的功能
三、循环移位指令
1.循环左移指令ROL
2.循环右移指令ROR
四、带进位的循环移位指令
1.带进位的循环左移指令RCL
2.带进位的循环右移指令
移位指令对标志位的影响
1.算术、逻辑指令
- CF的影响比较明显,就看移位规则。
- SF、ZF看移位后的结果
- OF 当移位次数不为1时无定义。当移位操作改变了操作数的最高位时-符号位,OF=1,否则为0
2.循环移位指令
- CF看移位规则
- SF、ZF 不受影响
- OF 当移位次数不为1时无定义。当移位操作改变了操作数的最高位时-符号位,OF=1,否则为0
区别就在于SF和ZF ,算术、循环指令看结果,循环指令无影响
例
1.
分析,AX逻辑左移时,最高位应该移进DX。逻辑左移AX时最高位时保存在CF里边,所以要想DX的最低位是AX移动的最高位,对DX进行带进位的循环左移。
2.
分析:假设数据为无符号数,结果仍为16位,不溢出。 乘3可以换成2的幂加减。比如换成逻辑左移2位(相当于乘4),再减去一次。或者逻辑左移移位(相当于乘2),再加一次。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134648.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...