对汇编程序中分段的理解
2022/6/22 1:22:27
本文主要是介绍对汇编程序中分段的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在8086处理器中包含各种段寄存器,如程序段寄存器cs、数据段寄存器ds、堆栈段寄存器ss等,这些寄存器分别存放着程序、数据和堆栈所在段的段地址,当取指令时,采用cs:ip进行寻址;当访问内存时,采用ds:[?]寻址;当进行堆栈操作时,采用ss:sp寻址,三者的实质都是指针。那为什么用3个而不是1个呢?答案当然是为了方便操作,虽然用一个也可以实现。
那么,为什么将一段程序的内容分为数据段、代码段和堆栈段呢?可不可以不分开而是放在一起?——在PC上可以,嵌入式系统上一般不行!原因如下:
PC中程序、数据和堆栈都存放在内存(RAM)中,即使三者混在一起也没关系,甚至相互穿插都行(当然堆栈不能被穿插),因为只要地址没错,程序流就不会乱序,同样,数据可以正确访问,堆栈可以正常使用。但嵌入式系统中,程序可以放在内存中也可以放在ROM中,但数据(全局变量)和堆栈必须放在内存(RAM)中才能正确进行访问(这里主要指能否正确执行对内存的修改)。当程序全部或部分存放在ROM中时,就必须将数据和堆栈挑出来放在内存中,因此通常将程序、数据和堆栈分成不同的段,以便于正确进行地址空间的安排。上面说到嵌入式系统“一般”不行,那什么时候“行”呢?——当全部程序都存放到RAM中运行的时候。
另外,即使是在PC上执行的程序,也最好进行分段而不要混在一起,这样便于在编写程序时定位数据所在的地址。
这篇关于对汇编程序中分段的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南