汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)
汇编语言
汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
XOR指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中:
XORdestination,source
XOR指令操作数组合和大小与AND指令及OR指令相同。两个操作数的每一对对应位都应用如下操作原则:如果两个位的值相同(同为0或同为1),则结果位等于0;否则结果位等于1。
下表描述的是布尔运算X㊉y:
x | y | x㊉y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
与0异或值保持不变,与1异或则被触发(求补)。对相同操作数进行两次XOR运算,则结果逆转为其本身。如下表所示,位x与位y进行了两次异或,结果逆转为x的初始值:
x | y | x㊉y | (x㊉y)㊉y |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
异或运算这种“可逆的”属性使其成为简单对称加密的理想工具。
标志位
XOR指令总是清除溢岀和进位标志位,并根据目标操作数的值来修改符号标志位、零标志位和奇偶标志位。
检查奇偶标志
奇偶检查是在一个二进制数上实现的功能,计算该数中1的个数;如果计算结果为偶数,则说该数是偶校验;如果结果为奇数,则该数为奇校验。
x86处理器中,当按位操作或算术操作的目标操作数最低字节为偶校验时,奇偶标志位置1。反之,如果操作数为奇校验,则奇偶标志位清0。一个既能检查数的奇偶性,又不会修改其数值的有效方法是,将该数与0进行异或运算:
moval,10110101b ;5个1,奇校验
xoral,0 ;奇偶标志位清0(奇)
moval,11001100b ;4个1,偶校验
xoral,0 ;奇偶标志位置1(偶)
VisualStudio用PE=1表示偶校验,PE=0表示奇校验。
16位奇偶性
对16位整数来说,可以通过将其高字节和低字节进行异或运算来检测数的奇偶性:
movax,64Clh ;0110010011000001
xorah,al ;奇偶标志位置1(偶)
将每个寄存器中的置1位(等于1的位)想象为一个8位集合中的成员。XOR指令把两个集合交集中的成员清0,并形成了其余位的并集。这个并集的奇偶性与整个16位整数的奇偶性相同。
那么32位数值呢?如果将数值的字节进行编号,从B₀到B₃那么计算奇偶性的表达式为:B₀XORB₁ XORB₂ XORB₃。
总结
以上所述是小编给大家介绍的汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。