首页 技术资料正文

汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(el表达式)

piaodoo 技术资料 2022-08-27 06:28:48 1142 0

汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(el表达式)

汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作

XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中:

XOR destination, source

XOR 指令操作数组合和大小与 AND 指令及 OR 指令相同。两个操作数的每一对对应位都应用如下操作原则:如果两个位的值相同(同为 0 或同为 1),则结果位等于 0;否则结果位等于 1。下表描述的是布尔运算 X㊉y:
xyx㊉y
000
011
101
110
与 0 异或值保持不变,与 1 异或则被触发(求补)。对相同操作数进行两次 XOR 运算,则结果逆转为其本身。如下表所示,位 x 与位 y 进行了两次异或,结果逆转为 x 的初始值:
xyx㊉y(x㊉y)㊉y
0000
0110
1011
1101
异或运算这种“可逆的”属性使其成为简单对称加密的理想工具。

标志位

XOR 指令总是清除溢岀和进位标志位,并根据目标操作数的值来修改符号标志位、零标志位和奇偶标志位。

检查奇偶标志

奇偶检查是在一个二进制数上实现的功能,计算该数中 1 的个数;如果计算结果为偶数,则说该数是偶校验;如果结果为奇数,则该数为奇校验。x86 处理器中,当按位操作或算术操作的目标操作数最低字节为偶校验时,奇偶标志位置 1。反之,如果操作数为奇校验,则奇偶标志位清 0。一个既能检查数的奇偶性,又不会修改其数值的有效方法是,将该数与 0 进行异或运算:

mov al,10110101b              ;5 个 1,奇校验xor al, 0                               ;奇偶标志位清 0 (奇)mov al, 11001100b             ;4 个 1,偶校验xor al, 0                               ;奇偶标志位置 1(偶)z开头的英文单词

Visual Studio 用 PE=1 表示偶校验,PE=0 表示奇校验。

16 位奇偶性

对 16 位整数来说,可以通过将其高字节和低字节进行异或运算来检测数的奇偶性:

mov ax,64Clh    ;0110 0100 1100 0001xor ah, al            ;奇偶标志位置1 (偶)

将每个寄存器中的置 1 位(等于 1 的位)想象为一个 8 位集合中的成员。XOR 指令把两个集合交集中的成员清 0,并形成了其余位的并集。这个并集的奇偶性与整个 16 位整数的奇偶性相同。那么 32 位数值呢?如果将数值的字节进行编号,从 B₀ 到 B₃ 那么计算奇偶性的表达式为:B₀ XOR B₁  XOR B₂  XOR B₃。

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119656.html

搜索