1 .算术左移和逻辑左移指令 sal ( shl )
语句格式: sal opd , 1 或 shl opd , 1
sal opd , cl 或 shl opd , cl
功能:将( opd )向左移动 cl 指定的次数,最低位补入相应的0, cf 的内容为最后移入位的值。
2 .算术右移指令 sar
语句格式: sar opd , 1 或 sar opd , cl
功能:将( opd )向右移动 cl 指定的次数且最高位保持不变; cf 的内容为最后移入位的值。
【例】算术右移运算。
mov bh , 0f 4h ; (bh)= 0f 4h,1111 0100b
mov cl , 2 ;( cl ) =2
sar bh , cl ;( bh ) =0fdh ,( cf ) =0
该例语句“ sar bh , cl ”实际上完成了( bh )/4→ bh 的运算,所以,用 sar 指令可以实现对有符号数除 2n 的运算( n 为移位次数)。
3 .逻辑右移指令 shr
语句格式: shr opd , 1 或 shr opd , cl
功能:将( opd )向右移动 cl 规定的次数,最高位补入相应个数的0, cf 的内容为最后移入位的值。
4 .循环左移指令 rol
语句格式: rol opd , 1 或 rol lpd , cl
功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向左移动 cl 规定的次数。 cf 的内容为最后移入位的值。
5 .循环右移指令 ror
语句格式: ror opd , 1 或 ror opd , cl
功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向右移动 cl 规定的次数, cf 的内容为最后移入位的值。
6 .带进位的循环左移指令 rcl
语句格式: rcl opd , 1
或 rcl opd , cl
功能:将目的操作数连同 cf 标志一起向左循环移动 cl 规定的次数。
7 .带进位的循环右移指令 rcr
语句格式: rcr opd , 1
或 rcr od , cl
功能:将目的操作数连同 cf 标志一起向右循环移动所规定的次数。