汇编-xor异或

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

两个操作数的每一对对应位都应用如下操作原则:如果两个位值相同(同为0或同为1),则结果位等于0;否则结果位等于1。下标描述的是布尔运算x⊕y:

 与0异或值不变,与1异或则被触发(求补)。对相同操作数进行两次XOR运算,则结果逆转为其本身。如下表所示,位X与位Y进行了两次异或,结果逆转位X的初始值:

标志位

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

 

实例:检查奇偶标志

一个位若与0异或则值保持不变,若与1异或则被改变(取反)

一个既能检察数的奇偶性,又不会修改其数值的有效方法是,将该数与0进行异或运算:

复制代码
.386  
.model flat,stdcall 
option casemap:none
.stack 4096

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    
    mov al,10110101b        ;5个1,奇校验
    xor al,0                ;奇偶标志位清0(奇)   PE = 0
    mov al,11001100b        ;4个1,偶校验
    xor al,0                ; 奇偶标志位置1 (偶)    PE = 1
    
 
    INVOKE ExitProcess,0  
main ENDP   
END main
复制代码

 

某数若与相同的操作数进行两次XOR运算, 则结果仍为该数本身

下面的真值表显示, 当位x与位y进行了两次异或运算,结果仍为x的初始值:

 

XOR运算的这种“可逆转”性质使其成为简单加密(对数据进行编码使其成为密文)的理想工具。

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(465)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-12-05 qt5-右键菜单
2019-12-05 python---win32gui、win32con、win32api:winAPI操作
点击右上角即可分享
微信分享提示

目录导航