. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于栈段,数据段,代码段在同一个地址的疑问  [待解决] 回复[ 4次 ]   点击[ 381次 ]  
wu136626
[帖 主]   [ 发表时间:2009-08-22 21:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
如果栈段 数据段 代码段在同一个地址重叠了  
执行代码的时候  是不是会发生不可意料的情况 比如 
代码段从  1000:0开始  栈段 ss=1000  sp=4
代码1000:0  push ax   
那么在ax写入10002-10003的同时  会改变了代码段  
我试过了  debug会发生错误退出  我不知道如果指令已经行使了  那么代码改变应该不会有问题的啊?为什么会发生错误

所以在设置这几个段的时候  是不是应该尽量不要重叠 
使内存地址各行使自己的作用    还是利用重叠的段达到特殊的目的?
高级语言在使用的时候  定义一个函数是不是会自动分配一个段??
tinyparticle
[第1楼]   [ 回复时间:2009-08-24 20:53 ]   [引用]   [回复]   [ top ] 
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
我不知道如果指令已经行使了  那么代码改变应该不会有问题的啊?为什么会发生错误
*********************************************
理论上指令行使后,覆盖数据不会有问题,发生错误可能是写入的数据更改了未执行的指令,倒至后续指令无法执行,或执行错误指令

所以在设置这几个段的时候  是不是应该尽量不要重叠  
*********************************************
没错,尽量不要重叠,也方便自己跟踪查找数据和问题

使内存地址各行使自己的作用    还是利用重叠的段达到特殊的目的? 
*********************************************
个人经验发现栈段和数据段部份重叠使用可以达到特殊作用

高级语言在使用的时候  定义一个函数是不是会自动分配一个段??
*********************************************
只学习了汇编,目前还没学完,对高级语言一窍不通:(
wu136626
[第2楼]   [ 回复时间:2009-08-24 23:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
使内存地址各行使自己的作用    还是利用重叠的段达到特殊的目的?  
********************************************* 
个人经验发现栈段和数据段部份重叠使用可以达到特殊作用 
**********************************************
怎么样的特殊效果?
tinyparticle
[第3楼]   [ 回复时间:2009-08-25 00:23 ]   [引用]   [回复]   [ top ] 
荣誉值:188
信誉值:4
注册日期:2009-07-05 19:26
栈段和数据重叠可以省略部分入栈操作,关键还是要看程序,一般不这么做
wu136626
[第4楼]   [ 回复时间:2009-08-25 09:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-22 07:47
栈段和数据重叠可以省略部分入栈操作,关键还是要看程序,一般不这么做
*********************
给了我点启发  谢谢  但是栈底在中断的时候产生的代码  怕是会把数据覆盖了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved