汇编语言中利用and和or进行大小写转换

通过上图可以看出abcd、ABCD在内存中的字节数据为:

a -> 61    b -> 62    c -> 63    d -> 64

A -> 41    B -> 42    C -> 43    D ->44

我们发现小写字母和大写字母之间的16进制表示相差20H,也就是:

小写 - 20H = 大写

大写 + 20H = 小写

再看下图:


从图中我们可以看出,小写字母和大写字母的二进制表示形式中,只有第6位(从左往右数是第3位)是不同的,小写是1,大写是0,这样我们就能得出结论,小写转成大写,就是将第6位的1变成0,其他位保持不变,也就是and 1101 1111B;大写转小写,就是将第6位的0变成1,其他位保持不变,也就是or 0010 0000B。

从以上结论我们还能得出:

1、一个数or零,还等于这个数本身。

2、一个数(需确定这个数的长度,比如byte、short、int、long)and这个数相同长度位数的1,还等于这个数本身。例:byte b = 100,

100 and 255 = 100。255的2进制表示形式为1111 1111B。

最终,得出结论,利用and和or进行大小写转换:

大写字母 = 小写字母 and 1101 1111            //其他位数保持不变,第6位从1变成0

小写字母 = 大写字母 or 0010 0000             //其他位数保持不变,第6位从0变成1

你可能感兴趣的:(汇编语言中利用and和or进行大小写转换)