汇编-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运算的这种“可逆转”性质使其成为简单加密(对数据进行编码使其成为密文)的理想工具。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!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操作