![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
汇编语言用DEBUG 运行前后数据段地址发生变化为什么
1个回答
展开全部
不带命令行参数运行debug时,码段、数据段、附加数据段、堆栈段的段地址均相同。
当加载com格式的执行文件时仍然如此(但运行的代码中有改变数据段地址的指令时,数据段地址当然会改变);
当加载exe格式的文件时,CS:IP指向程序开始执行的第一条指令,SS:SP指向堆栈段,DS和ES并不是指向程序数据段,而是指向程序前100H位置(这部分是该程序的段前缀
PSP),所以,DS和ES应该在程序当中进行设置(通常用mov ax,data 和mov ds,ax指令所完成)。
当加载com格式的执行文件时仍然如此(但运行的代码中有改变数据段地址的指令时,数据段地址当然会改变);
当加载exe格式的文件时,CS:IP指向程序开始执行的第一条指令,SS:SP指向堆栈段,DS和ES并不是指向程序数据段,而是指向程序前100H位置(这部分是该程序的段前缀
PSP),所以,DS和ES应该在程序当中进行设置(通常用mov ax,data 和mov ds,ax指令所完成)。
![](https://ecmc.bdimg.com/public03/b4cb859ca634443212c22993b0c87088.png)
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询