1、逻辑运算
逻辑与 AND (logic and)
指令的汇编格式:AND dst,src
指令的基本功能:(dst)<-(dst)与(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
指令对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0
逻辑或 OR (logic or)
指令的汇编格式:OR dst,src
指令的基本功能:(dst)<-(dst)或(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0
逻辑非 NOT (logic not)
指令的汇编格式:NOT orc
指令的基本功能:(dst)<-(opr)
指令支持的寻址方式:除立即数寻址方式以外的其余寻址方式
指令对标志位的影响:对标志位无影响
异或 XOR (exclusice or)
指令的汇编格式:XOR dst,src
指令的基本功能:(dst)<-(dst)异或(src)
指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0
测试指令 TEST
指令的汇编格式:TEST opr1,opr2
指令的基本功能:(opr1)与(opr2)
指令支持的寻址方式:两个操作数不能同时为存储器寻址,即为除源操作数为立即数的情况外,源操作数和目的操作数必须有一个寄存器寻址方式。
指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。
SF=1 指令执行后的结果为负数(符号位为1)
SF=0 指令执行后的结果为正数(符号位为0)
ZF=1 指令执行后的结果为零
ZF=0 指令执行后的结果不为零
PF=1 结果操作数中1的个数为偶数时置1
PF=0 结果操作数中1的个数为奇数时置0
2、移位指令
逻辑左移 SHL (shift logical left)
指令的汇编格式:SHL dst,cnt
指令的基本功能:SHL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
逻辑右移 SHR (shift logical right)
指令的汇编格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移动cnt次,每次逐位移动后,最高位用0来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
算术左移 SAL (shift arithmetic left)
指令的汇编格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
算术右移 SAR (shift arithmetic right)
指令的汇编格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移动cnt次,每次逐位移动后,最高位用符号位来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
循环左移 ROL (rotate left)
指令的汇编格式:ROL dst,cnt
指令的基本功能:ROL 对由dst指定的寄存器或存储器操作数左移循环移动cnt所指定的次数,每左移一次,把最高位同时移入CF和操作数最低位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
循环右移 ROR (rotate right)
指令的汇编格式:ROR dst,cnt
指令的基本功能:ROR 对由dst指定的寄存器或存储器操作数右移循环移动cnt所指定的次数,每右移一次,把最低位同时移入CF和操作数最高位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt>1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
OF=1 当cnt=1时,移动后最高位的值发生变化。
OF=0 当cnt=1时,移动时最高位的值未发生变化。
SF、ZF、PF根据移动后的结果设置。
带进位的循环左移 RCL (rotate left through carry)
指令的汇编格式:RCL dst,cnt
指令的基本功能:RCL 对由dst指定的寄存器或存储器操作数,连同进位标志CF左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位。
指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
OF=1 当cnt=1时,移动后最高位的值未发生变化。
OF=0 当cnt=1时,移动后最高位的值发生变化。
SF、ZF、PF标志位不受影响。
带进位的循环右移 RCR (rotate right through carry)
指令的汇编格式:RCR dst,cnt
指令的基本功能:RCR 对由dst指定的寄存器或存储器操作数,连同进位标志CF右循环移动,m所指定的次数,每右移一次,把操作数的最高低位移入CF,而CF中原有内容移入操作数的最高位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写入指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
OF=1 当cnt=1时,操作数最高位的值未发生变化。
OF=0 当cnt=1时,操作数最高位的值发生变化。
SF、ZF、PF标志位不受影响。