汇编-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 @ 2023-12-05 13:46  天子骄龙  阅读(321)  评论(0编辑  收藏  举报