- CPU 是唯一能主动访问内存的设备,寄存器只是临时存储数据的中转站,不能独立操作内存。
- 访问内存需要:地址总线指定位置。控制总线发送读/写信号。数据总线传输数据。
- 汇编语言的核心就是通过指令直接操作寄存器,再通过寄存器与内存、外设交互。可以说,寄存器是汇编程序的“手和脚”,所有操作最终都落实到对寄存器的读写上
- 寄存器存储的内容可能是数据或地址,具体解释由指令决定。
[ ] 表示内存访问,括号内是地址表达式(如 [eax]、[0x1000])。无括号操作寄存器或立即数,直接处理值本身。
- 程序运行时,栈(Stack)向低地址增长,堆(Heap)和数据段(Data Segment)向高地址增长
- 大小端:多字节数据(如 int、float)在内存中的存储顺序。
- 大端(Big-Endian):高位字节在低地址(如网络协议、PowerPC)。
- 小端(Little-Endian):低位字节在低地址(如 x86、ARM)。
0x12345678 在内存中的存储
| 端序 | 地址增长方向 | 内存布局 | 0x1000 | 0x1001 | 0x1002 | 0x1003 |
|---|
| 大端 | 低地址 → 高地址 | 12 34 56 78 | 12 | 34 | 56 | 78 |
| 小端 | 低地址 → 高地址 | 78 56 34 12 | 78 | 56 | 34 | 12 |