什么是寄存器
寄存器就是CPU内存区域,与内存里面的存储介质没有区别。
寄存器的功能是存储二进制代码。
三十二位通用寄存器
寄存器的用途不是固定的,但是通常使用如同命名规范一般约定俗成的使用方法,这样可以提高工作效率并且不容易出错。
对于初学者来说不容易记住,所以建议在实践过程中按照规范使用慢慢记住。
EAX | 0 | 累加器 |
ECX | 1 | 计数 |
EDX | 2 | I/O指针 |
EBX | 3 | DS段指针 |
ESP | 4 | 堆栈指针 |
EBP | 5 | SS段指针 |
ESI | 6 | 源指针 |
EDI | 7 | 目标指针 |
十六位寄存器与八位寄存器
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寄存器的一部分,8位寄存器是16位寄存器的一部分
8位寄存器的L意为low(低位),H意为high(高位)
案例
利用OD打开一个exe程序
我们可以看到右侧8个通用寄存器与他们所存储的数据
下面的EIP也是一个寄存器,代表当前程序运行到哪个位置,点击F8会运行到下一个位置。
尝试输入汇编语言向寄存器EAX输入数据
注意到右侧EAX数值变为1
在输入指令mov eax,0xAAAAAAAA后,EAX变为AAAAAAAA
在输入指令mov ax,0xBBBB后,EAX变为AAAABBBB
在输入指令 mov ah,0xCC后,EAX变为AAAACCBB
在输入指令mov al,0xDD后,EAX变为AAAACCDD