通用寄存器

寄存器就是CPU内存区域,与内存里面的存储介质没有区别,但是CPU极其昂贵,运算速度非常快

三十二位通用寄存器

寄存器的用途不是固定的,就好像代码编写时候的命名规范一样,不按规范代码也是可以正常运行,但是约定俗成的规矩最好还是遵循相关规定,那样可以提高工作效率

1
2
3
4
5
6
7
8
EAX		0		累加器
ECX 1 计数
EDX 2 I/O指针
EBX 3 DS段指针
ESP 4 堆栈指针
EBP 5 SS段指针
ESI 6 源指针
EDI 7 目标指针

利用OD打开一个exe程序

image-20230414084722997

EIP也是一个寄存器,代表当前程序运行到哪个位置,我们用od打开exe程序的时候会停在某个位置,点击F8会向下一步执行

image-20230414085838463

image-20230414085954939

注意填入的数据不要超出32位,否则会丢弃高位数据

寄存器分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
16位寄存器
AX 0
CX 1
DX 2
BX 3
SP 4
BP 5
SI 6
DI 7

8位寄存器
AL
CL
DL
BL
AH
CH
DH
BH

注意,16位寄存器是32位寄存器的一部分,两者是包含关系

image-20230414092351678

image-20230414093144377

image-20230414093255723

image-20230414093359553

猜一下al的数值改变eax的值会有什么变化

注意事项

mov 目标操作数,源操作数

1、源操作数可以是立即数,通用寄存器,或者内存单元

2、目标操作数可以是通用寄存器或者内存单元

3、操作数的宽度必须一样

4、源操作数和目标操作数不能同时为内存单元