初学者对于DS寄存器与程序段前缀(PSP)的两个疑惑...?从王爽老师《汇编语言》想到的....
时间:2010-11-09
来源:互联网
小弟我初学汇编语言,在阅读王爽老师的那本《汇编语言》(第二版),在第四章92页“EXE文件中程序的加载过程”处,我有两个地方一直想不清楚...
1: 关于DS数据寄存器,应为DS的值我们是可以在写程序的时候就已经赋值完毕的(当然也可以不赋值),而且DS:0000H可以直接确定程序在内存中的位置, 但是我在写程序的时候不知道内存DS:0000H处的情况,我自己的代码在加载入内存之后,将本来内存DS:0000H处有用的数据给覆盖了怎么办... 没有什么保护措施么.......?
2: 关于程序段前缀PSP,它占据了DS:0000H段的前256个字节,王爽老师说“DOS要利用PSP来和被加载程序进行通信”但是我记得我在写程序的时候,我是有过把DS:0000H往后的一段内存给存入了数据的啊...(比如可以存入 字符串 常量什么的)并且我的程序也没有问题啊.......... 按说这样子应该就会把PSP开始的那一部分的内容给改变了才对......
非常费解...
恳请各位前辈们能给予小弟我指导...
小弟我先谢谢各位啦!!!!!!!!
1: 关于DS数据寄存器,应为DS的值我们是可以在写程序的时候就已经赋值完毕的(当然也可以不赋值),而且DS:0000H可以直接确定程序在内存中的位置, 但是我在写程序的时候不知道内存DS:0000H处的情况,我自己的代码在加载入内存之后,将本来内存DS:0000H处有用的数据给覆盖了怎么办... 没有什么保护措施么.......?
2: 关于程序段前缀PSP,它占据了DS:0000H段的前256个字节,王爽老师说“DOS要利用PSP来和被加载程序进行通信”但是我记得我在写程序的时候,我是有过把DS:0000H往后的一段内存给存入了数据的啊...(比如可以存入 字符串 常量什么的)并且我的程序也没有问题啊.......... 按说这样子应该就会把PSP开始的那一部分的内容给改变了才对......
非常费解...
恳请各位前辈们能给予小弟我指导...
小弟我先谢谢各位啦!!!!!!!!
作者: bigshady 发布时间: 2010-11-09
这就是为什么所有定义了数据段的程序,如
data segment
a dw ?
data ends
在代码段中,最开始执行的语句一般都是
mov ax,data
mov ds,ax
在没有给DS重新赋值前,DS:0000是PSP的首地址。但在这两句后,DS:0000就指向你的数据段了。
data segment
a dw ?
data ends
在代码段中,最开始执行的语句一般都是
mov ax,data
mov ds,ax
在没有给DS重新赋值前,DS:0000是PSP的首地址。但在这两句后,DS:0000就指向你的数据段了。
作者: shzhfu 发布时间: 2010-11-09
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
作者: rrrfff 发布时间: 2010-11-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28