文章目录
- 各种段
- 三种段
- 具体案例截图
- 数据段、栈段、代码段同时使用不同段地址
- 数据段、栈段、代码段同时使用一个段地址![在这里插入图片描述](https://img-blog.csdnimg.cn/45c299950ad949e3a90b7ed012b3a9ee.png)
各种段
1、基础
物理地址 = 段地址 x 16 + 偏移地址
2、做法
- 编程时,可以根据需要将一组内存单元定义为一个段;
- 可以将起始地址为一个16的倍数,长度为N(N<=64K,因为段长度为16位)的一组地址连续的内存单元,定义为一个段;
- 讲一个段内定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。在程序中完全由程序员安排。
三种段
1、数据段
- 将段地址放入DS寄存器中
- 使用mov, add, sub等访问内存单元指令时,CPU将我们定义的数据段中的内容当作数据段来访问;
2、代码段
- 将段地址放在CS寄存器中,将段中第一条指令的偏移地址放在IP寄存器中;
- CPU将执行我们定义的代码段中的指令;
3、栈段
- 将段地址放在寄存器SS中,将栈顶单元的偏移地址放在寄存器SP中
- CPU在需要进行栈操作push, pop时,九江我们定义的栈段当作栈空间来使用。