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

 更新时间:2020年01月14日 11:37:27   作者:Java入门基础教程  
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。这篇文章主要介绍了汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作,需要的朋友可以参考下

汇编语言

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

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

XOR destination, 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 进行异或运算:

mov al,10110101b              ;5 个 1,奇校验
xor al, 0                               ;奇偶标志位清 0 (奇)
mov al, 11001100b             ;4 个 1,偶校验
xor al, 0                               ;奇偶标志位置 1(偶)

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

16 位奇偶性

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

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

将每个寄存器中的置 1 位(等于 1 的位)想象为一个 8 位集合中的成员。XOR 指令把两个集合交集中的成员清 0,并形成了其余位的并集。这个并集的奇偶性与整个 16 位整数的奇偶性相同。

那么 32 位数值呢?如果将数值的字节进行编号,从 B₀ 到 B₃ 那么计算奇偶性的表达式为:B₀ XOR B₁  XOR B₂  XOR B₃。

总结

以上所述是小编给大家介绍的汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 汇编语言系列之汇编实现字符串操作

    汇编语言系列之汇编实现字符串操作

    本文列出了字符串匹配和字符串输入显示的代码,对汇编语言系列之汇编实现字符串操作相关知识感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 汇编用串检测scasb寻找数的位置实现

    汇编用串检测scasb寻找数的位置实现

    这篇文章主要介绍了汇编用串检测scasb寻找数的位置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 汇编语言:x86汇编指令大全及其注意事项

    汇编语言:x86汇编指令大全及其注意事项

    用最精炼的语言,记录汇编语言中所有常用或不常用或极其重要的汇编指令及其注意事项,以方便自己和读者进行查阅,如有错误和不足请在评论区指出
    2021-10-10
  • 汇编语言基础理解计算机底层技术原理

    汇编语言基础理解计算机底层技术原理

    这篇文章主要为大家介绍了汇编语言基础,理解计算机底层原理,想要成为高级程序员,我们必须要学会汇编语言,汇编语言是非常重要的计算机底层技术,一般用于底层的编写
    2021-11-11
  • 详解汇编语言MOV指令

    详解汇编语言MOV指令

    在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,这篇文章主要介绍了汇编语言MOV指令,需要的朋友可以参考下
    2020-01-01
  • ARM汇编判断之如何用汇编判断数组中正负数个数

    ARM汇编判断之如何用汇编判断数组中正负数个数

    这篇文章主要介绍了ARM汇编判断之如何用汇编判断数组中正负数个数,在汇编语言中程序的基本框架是不变的,这里我们可以直接把正向遍历的程序给贴过来,然后我们思考怎么运用判断后缀把数组中正数和负数分开,进行判断个数和分别求和,需要的朋友可以参考下
    2022-04-04
  • 一位数乘法的汇编语言实现方法

    一位数乘法的汇编语言实现方法

    这篇文章主要介绍了一位数乘法的汇编语言实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • VScode配置8086汇编环境的过程解析

    VScode配置8086汇编环境的过程解析

    这篇文章主要介绍了VScode配置8086汇编环境的过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 汇编指令-状态寄存器、cmp、test、jz等指令详细说明

    汇编指令-状态寄存器、cmp、test、jz等指令详细说明

    这篇文章主要介绍了汇编指令-状态寄存器、cmp、test、jz等指令详细说明,需要的朋友可以参考下
    2020-01-01
  • 8086汇编开发环境搭建和Debug模式介绍(图文详解)

    8086汇编开发环境搭建和Debug模式介绍(图文详解)

    这篇文章主要介绍了8086汇编开发环境搭建和Debug模式介绍,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论