BYTE 字节 8bit
WORD 字 16bit
DWORD 双字 32bit
计算机只认识0,1
计算机只会做逻辑运算
1.CPU是如何计算2+3=?
def logical_add(n1, n2):
a = n1 ^ n2
b = n1 & n2
b <<= 1
if b == 0:
return a
else:
return logical_add(a, b)
2.如果想获取某个值的笫N位的值是多少?
def n_binary(num, n):
if n < 0:
return -1
else:
return int((num & 1 << n) > 0)
3.最简单的加密算法异或(要加密的数据0x2015, 密钥0x54):
加密
0010 0000 0001 0101
0101 0100 0101 0100
0111 0100 0100 0001
0x7441
解密
0111 0100 0100 0001
0101 0100 0101 0100
0010 0000 0001 0101
0x2015
1.八进制数2-5, 在计算器中的的结果是:1 777 777 777 777 777 777 775为什么?
本质:计算机只管存储二进制, 其他进制只是表现形式
64bit
2 - 5
-3
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111101
1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 111 111 111 11 1 111 111 1 11 111 101
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
2.使用异或对87AD6进行加密后再进行解密,加解密密钥:5
87AD6
5
加密
1000 0111 1010 1101 0110
0101 0101 0101 0101 0101
^
1101 0010 1111 1000 0011
D 2 F 8 3
0xD2F03
解密
1101 0010 1111 1000 0011
0101 0101 0101 0101 0101
^
1000 0111 1010 1101 0110
8 7 A D 6
0x87AD6
3.只用逻辑运算计算2-3=?(涉及内容:逻辑运算、移位、数据宽度)
2-3
0010
1101
^
1111
&
0000
1111
-1
1.使用DTDebug打开一个EXE程序(F3),并找到寄存器窗口
2.使用DTDebug打开一个EXE程序(F3),单步执行程序(F8)
3.记住这8个通用寄存器的名称,按照顺序
4.使用DTDebug打开一个EXE程序(F3),使用MOV指令修改8个寄存器的值,单步执行,观察修改后的结果。