汇编语言中的段(通过段去理解代码执行,数据存储,栈)
我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的内存单元。我们想怎么定义就怎么定义。
1.我们可以定义一个段来存放数据,将他定义为“数据段”
2.我们可以定义一个段来存放代码,将他定义为“代码段”
3.我们可以定义一个段来当作栈,将他定义为段栈
对于数据段,我们通过普通寄存器AX,BX,CX,DX来给DS段存储器赋值,将我们定义的数据段的段地址存放在DS中,再通过偏移地址去访问数据段中的内存单元,CPU就将我们定义的数据段中的内容当作数据来访问。
对于代码段,将他的段地址存放在CS代码段寄存器中,将第一条指令的偏移地址存放在IP指令指针寄存器中,这样cpu就将执行我们的代码段中的指令。
对于栈段,将他的段地址存放在SS中,将栈顶单元的偏移地址放在SP中,这样CPU在需要进行入栈出栈操作的时候,就将我们定义的段栈当作栈空间来用。
由此,相信大家一下就彻悟了,我们之前在学习汇编语言的过程中,一段内存中存放的数据和指令其实都是二进制的形式没有区别,在于你把这些数据当作指令来用,还是当作数据来使用
1|0总结:
一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么都不是,就一段内存空间,之所以区分指令和数据,区分栈段,数据段,代码段,完全是因为CS,IP,SS,SP,DS寄存器的作用。
__EOF__
本文链接:https://www.cnblogs.com/tccjx/p/16155400.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:TCcjx,转载请注明原文链接:https://www.cnblogs.com/tccjx/p/16155400.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App