前言
本次是该系列的的第0x04篇
实验环境:
- Windows10 + VS2022 + masm
0x04
代码片段链接:xorpd | xchg rax,rax 0x04
xor al, 0x20
代码分析
代码片段分析
al寄存器是8位宽度,
0x20的十进制是32,
xor操作可以给这个8位宽度的数字加上或者减去32
刚好,ASCII码英文字母A是65(0x41),a是97(0x61),中间的差值刚好是32(0x20)
本篇内容的含义是英文字母的大小写转换(真是巧妙,又学到了新知识)
测试代码:
#include<stdio.h>
int main()
{
char str[] = "hello WORLD";
for (int i = 0; str[i]; i++) str[i] ^= str[i] != ' ' ? 0x20 : 0;
printf("%s",str);
return 0;
}
输出:HELLO world