AI摘要
本文介绍了内存地址、堆栈、寄存器窗口和汇编窗口的数据存放方式,以及寄存器的本质和显示逻辑。详细解释了五种内存寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址,并在OD中进行了演示。文章还展示了如何通过OD写一个堆栈的结构,包括堆栈的分配、压入数据、取出数据和弹出数据的过程。最后,提供了一些练习题目,帮助读者巩固对内存寻址和堆栈操作的理解。
寄存器窗口和汇编窗口的数据存放方式是由高到低
在数据窗口 数据是从低到高排列的 因为一般计算机都是小端存储
- 寄存器的本质:CPU 寄存器(如 eax、ebx)是 CPU 内置的高速存储单元,它们没有内存地址(内存地址是给内存单元用的),本身就是存储数据的 “容器”。
- 显示逻辑:OD 作为调试器,展示的是寄存器 “容器” 里装的内容,而非容器本身的标识(寄存器没有内存地址,只有名称)。
寻址公式4
reg+reg * {1,2,4,8} - 五种内存寻址方式在OD中的演示
- 直接寻址
mov 寄存器,内存编号//读值
mov 内存编号,寄存器//写值
lea 寄存器,内存编号//取内存编号的地址 下面其他寻址方式同理 - 寄存器间接寻址
[reg] - 寄存器相对寻址
[reg+固定偏移量] - 基址变址寻址
[reg + reg* {1,2,4,8}]
- 相对基址变址寻址
[reg + reg* {1,2,4,8}+固定偏移量]
- 自己通过OD写一个堆栈的结构
堆栈的分配是从高地址往低地址分配
- 压入数据
- 之后通过栈顶和栈底取出堆栈的数据
- 弹出数据
Push Pop
练习
题目1-3:
题目4-5:
题目6-7:
















