器或存储器操作数。SHR指令影响标志位OF,SF,ZF,PF,CF。例350SHRBYTEPTRSI3SHREDXCL算术逻辑左移,只要结果未超出目的操作数所能表达的范围,每左移一次
f相当于原数乘2。算术右移只要无溢出,每右移一次相当于原数除以2。2循环移位指令格式:ROLDEST,OPRDRORDEST,OPRDRCLDEST,OPRDRCRDEST,OPRD功能:循环左移指令ROL,见图313a所示,目的操作数左移,每移位一次,其最高位移入最低位,同时最高位也移入进位标志CF。循环右移指令ROR见图313b所示,目的操作数右移,每移位一次,其最低位移入最高位,同时最低位也移入进位标志CF。带进位循环左移指令RCL,见图313c所示,目的操作数左移,每移动一次,其最高位移入进位标志CF,CF移入最低位。带进位循环右移指令RCR,见图313d所示,目的操作数右移,每移动一次,其最低位移入进位标志CF,CF
移入最高位。图313循环移位指令
目的操作数可以为通用寄存器或存储器操作数。循环移位指令影响标志位CF,OF。其它标志位无定义。例351ROLAL,CLRORBX,5RCLECX,3RCRBYTEPTRSI,CL将一个2位数压缩的BCD码转换成二进制数。例352MODELSMALLDATABCDDB01011001BBINDBCODESTARTUPMOVAL,BCDMOVBL,AL
fANDBL,0FHANDAL,0F0HMOVCL,4RORAL,CLMOVBH,0AHMULBHADDAL,BLMOVBIN,ALEXITEND3双精度移位指令格式:SHLDDEST,SRC,OPRDSHRDDEST,SRC,OPRD功能:对于由目的操作数DEST和源操作数SRC构成的双精度数,按照操作数OPRD给出的移位位数,进行移位。SHLD是对目的操作数进行左移,如图314a所示,SHRD是对目的操作数进行右移,如图314b所示。先移出位送标志位CF,另一端空出位由SRC移入DEST中,而SRC内容保持不变。目的操作数可以是16位或32位通用寄存器或存储器操作数。源操作数SRC允许为16位或32位通用寄存器。操作数OPRD可以为立即数或CL。目的操作数和源操作数SRC数据类型必须一致。
图314
双精度移位指令
SHLD,SHRD指令常用于位串的快速移位、嵌入和删除等操作,影响标志位为SF,ZF,PF,CF,其它标志位无定义。
80x86汇编指令详解(下)2008年01月15日星期二1505三、位操作指令位操作指令包括位测试和位扫描指令,可以直接对一个二进制位进行测试,设置和扫描。
f1位测试和设置指令格式:BTDEST,SRCBTCDEST,SRCBTRDEST,SRCBTSDEST,SRC功能:按照源操作指定的位号,测试目的操作数,当指令执行时,被测试位的状态被复制到进位标志CF。BT将SRC指定的DEST中一位的数值复制到CF。BTC将SRC指定的DEST中一位的数值复制r