简答题
移位指令和循环移位指令在执行操作时,有什么差别?在编制乘除法程序中,为什么常用移位指令来代替乘除法指令?试编制一个程序段,实现CX中的数除以4,结果仍放在CX中。
正确答案
逻辑移位指令用于无符号数的移位,左移时,最低位补0,右移时,最高位补0。
算术移位指令用于对带符号数的移位,左移时,最低位补0,右移时,最高位的符号在右移的同时,且保持。
小循环移位指令ROL、ROR是只对目标操作数进行循环,即不含CF的左、右移循环移位。
大循环移位指令RCL、RCR是把标志位CF也包含在循环中的左、右移循环移位。
对于二进制数,左移一位相当于乘二,右移一位相当于除二,所以可以用移位指令来代替乘除法指令。
SAR CX,1;CX算术右移一位,除二
SAR CX,1;CX算术右移一位,除二