NOT指令对标志位无影响。
测试指令
格式:TEST DEST,SRC
功能:目的操作数和源操作数按位进行逻辑与操作,结果不回送目的操作数。源操作数可以为通用寄存器、存储器或立即数。目的操作数可以为通
用寄存器或存储器操作数。
TEST指令常用于测试操作数中某位是否为1,而且不会影响目的操作数。如果测试某位的状态,对某位进行逻辑与1的运算,其它位逻辑与0,然后
判断标志位。运算结果为0,ZF=1,表示被测试位为0;否则ZF=0,表示被测试位为1
移位指令
移位指令对操作数按某种方式左移或右移,移位位数可以由立即数直接给出,或由CL间接给出。移位指令分一般移位指令和循环移位指令。
一般移位指令
算术/逻辑左移指令
格式:SAL DEST,OPRD
SHL DEST,OPRD
当中的L 就是代表左
功能:按照操作数OPRD规定的移位位数,对目的操作数进行左移操作,最高位移入CF中。每移动一位,右边补一位0。
如图3 12(a)所示。目的操作数可以为通用寄存器或存储器操作数。
SAL,SHL指令影响标志位OF,SF,ZF,PF,CF。
逻辑左移是一样的 就相当于移多少位 就乘了2的多少次方
算术逻辑右移的最高位一直保持不变 其他位右移
逻辑右移的就是所有数挨个右移 这里的CF位只保存一位
算术右移指令。
格式:SAR DEST,OPRD SHR DEST,OPRD
功能:按照操作数OPRD规定的移位次数,对目的操作数进行右移操作,最低位移至CF中,最高位(即符号位)保持不变。
目的操作数可以为通用寄存器或存储器操作数。
SAR指令影响标志位OF,SF,ZF,PF,CF
无条件转移指令
格式:JMP TARGET
功能:使程序无条件地转移到指令规定的目的地址TARGET去执行指令。转移分为短转移、段内转移(近程转移)和段间转移 (远程转移)
控制转移类指令
条件转移指令包括四类:单标志位条件转移;无符号数比较条件转移;带符号数比较条件转移;测试CX条件转移。
格式:Jcc TARGET
功能:若测试条件‘CC’为真,则转移到目标地址TARGET处执行程序。否则顺序执行。
(1) 单标志位条件转移指令
JZ NEXT;若标志ZF=1则转移到标号NEXT处执行。
(2) 无符号数比较条件转移
JA NEXT;无符号数A与B比较,若A>B则转移到标号NEXT处执行程序