逻辑指令

逻辑指令包含逻辑或、逻辑与、逻辑异或、逻辑非等操作逻辑运算的指令即。

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标志位不受影响。

与肝胆人共事,无字句处读书。——周恩来
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号