移位指令( shift) 将操作数移动一位或多位,分成逻辑移位和 算术移位,分别具有左移或右移操作 SHL reg/mem, 1/CL 演示 SHR reg/mem, 1/CL )sAL与5HL相同 SAL reg/mem, 1/CL SAR reg/mem, 1/CL 图示 ;算术右移,最低位进入CF,最高位不变
西 华 师 范 大 学 计 算 机 学 院 移位指令(shift) ➢ 将操作数移动一位或多位,分成逻辑移位和 算术移位,分别具有左移或右移操作 SHL reg/mem,1/CL ;逻辑左移,最高位进入CF,最低位补0 SHR reg/mem,1/CL ;逻辑右移,最低位进入CF,最高位补0 SAL reg/mem,1/CL ;算术左移,最高位进入CF,最低位补0 SAR reg/mem,1/CL ;算术右移,最低位进入CF,最高位不变 SAL与SHL相同 演示 图示
移位指令的操作数 >移位指令的第一个操作数是指定 的被移位的操作数,可以是寄存 器或存储单元 后一个操作数表示移位位数,该 操作数为1,表示移动一位;当移 位位数大于1时,则用CL寄存器值 表示,该操作数表达为cL
西 华 师 范 大 学 计 算 机 学 院 移位指令的操作数 ➢移位指令的第一个操作数是指定 的被移位的操作数,可以是寄存 器或存储单元 ➢后一个操作数表示移位位数,该 操作数为1,表示移动一位;当移 位位数大于1时,则用CL寄存器值 表示,该操作数表达为CL
移位指令对标志的影响 >按照移入的位设置进位标志cF 根据移位后的结果影响SF、zF、PF >对AF没有定义 如果进行一位移动,则按照操作数的 最高符号位是否改变,相应设置溢出 标志OF:如果移位前的操作数最高位 与移位后操作数的最高位不同(有变 化),则OF=1;否则OF=0。当移 位次数大于1时,OF不确定
西 华 师 范 大 学 计 算 机 学 院 移位指令对标志的影响 ➢按照移入的位设置进位标志CF ➢根据移位后的结果影响SF、ZF、PF ➢对AF没有定义 ➢如果进行一位移动,则按照操作数的 最高符号位是否改变,相应设置溢出 标志OF:如果移位前的操作数最高位 与移位后操作数的最高位不同(有变 化),则OF = 1;否则OF = 0。当移 位次数大于1时,OF不确定
例:移位指令 mov cl. 4 mov al. foh s al=foh shl al. 1 al=eoh ;CF=1,SF=1、ZF=0、PF=0,OF=0 shr al. 1 al=7oh ;CF=0,SF=0、ZF=0、PF=0、OF=1 sar al. 1 al=38h ;CF=0,SF=0、ZF=0、PF=0、OF=0 sar al. cl a1=03h ;CF=1,SF=0、ZF=0、PF=1
例:移位指令 mov cl,4 mov al,0f0h ;al=f0h shl al,1 ;al=e0h ;CF=1,SF=1、ZF=0、PF=0,OF=0 shr al,1 ;al=70h ;CF=0,SF=0、ZF=0、PF=0、OF=1 sar al,1 ;al=38h ;CF=0,SF=0、ZF=0、PF=0、OF=0 sar al,cl ;al=03h ;CF=1,SF=0、ZF=0、PF=1 西 华 师 范 大 学 计 算 机 学 院
循环移位指令( rotate) 将操作数从一端移出的位返回到另 端形成循环,分成不带进位和带进位, 分别具有左移或右移操作 图示 ROL reg/mem,1/L;不带进位循环左移 ROR reg/mem,1/L;不带进位循环右移 RCL reg/mem,1/CL;带进位循环左移 RCR reg/mem,1/C;带进位循环右移 图示
西 华 师 范 大 学 计 算 机 学 院 循环移位指令( rotate) ➢将操作数从一端移出的位返回到另一 端形成循环,分成不带进位和带进位, 分别具有左移或右移操作 ROL reg/mem,1/CL ;不带进位循环左移 ROR reg/mem,1/CL ;不带进位循环右移 RCL reg/mem,1/CL ;带进位循环左移 RCR reg/mem,1/CL ;带进位循环右移 图示 图示