鱼C论坛

 找回密码
 立即注册
查看: 2045|回复: 12

关于栈、psp问题求助

[复制链接]
发表于 2014-5-18 11:45:43 | 显示全部楼层 |阅读模式
1鱼币
assume cs:code ,ds:data ,ss:stack
data segment
      dw  0123h ,0456h ,0789h ,0abch ,0defh ,0fedh ,0cbah ,0987h
data ends
stack segment
      dw  0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0           1。 为什么程序加载完后(执行到  mov sp ,14h),ds段的 前20个字节不全是0?
stack ends
图片21.png
2.不是说程序的物理地址是SA+10H:0吗?也就是说CS==SA+10H,而SA==DS,那么用debug的R命令查看时,为什么CS不等于DS+10H,而是等于DS+12H,倒是SS==DS+10H?
图片1.png
code segment
start: mov ax ,stack
        mov ss ,ax
        mov sp ,14h
        mov ax ,data
        mov ds ,ax
        mov bx ,0
        mov cx ,8
  s:  push [bx]
      add bx ,2
      loop s
   
      mov bx ,0
      mov cx ,8
s0:    pop [bx]
       add bx ,2
  
       loop s0

      mov ax ,4c00H
      int 21H
code   ends
end     start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-18 19:07:47 | 显示全部楼层
QQ图片20140518185904.jpg
以我的为例 ds 075a,程序从076a 开始  符合你 ds+10h的逻辑
076a:0 到后面16个字节存放的是你的data段数据
076a:10 到后面32个字节你已经设为栈段
所以程序从076d 开始
至于你的第一个问题。 由于个人内存使用情况不同是会出现不同现象。 我的就是都为0.





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-18 19:14:33 | 显示全部楼层
1、晕哦,你的ds是13FF,再说写的stack segment堆栈段没啥意思吧,push一下会更简单。
2、物理地址=段地址×10H+偏移地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-18 22:04:40 | 显示全部楼层

答非所问,物理地址=段地址X10H+偏移地址,我岂会不知?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-5-18 22:08:04 | 显示全部楼层
传说。 发表于 2014-5-18 19:07
以我的为例 ds 075a,程序从076a 开始  符合你 ds+10h的逻辑
076a:0 到后面16个字节存放的是你的data段 ...

没道理啊,我不是把栈初始化为0了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-19 18:17:26 | 显示全部楼层
恩恩!支持楼上的回答!由于内存使用情况的不同!内存中的数据是不一样的,至于另一个问题,我和传说。的观点是一样的。{:2_27:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-20 19:21:28 | 显示全部楼层
风神翼龙 发表于 2014-5-18 22:08
没道理啊,我不是把栈初始化为0了吗?

如果你你电脑中已经有程序用到了那一段内存你的操作没有用的。看起来改了而已。就像有的内存空间是只读的一样。你根本改不了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-20 22:10:04 | 显示全部楼层
嗯和传说观点一模一样:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-27 14:19:03 | 显示全部楼层
回顾一下:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-10 19:39:58 | 显示全部楼层
楼主为什么是 sp指向14h  不应该是23h吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-7-12 15:17:29 | 显示全部楼层
↘_vIp`|家族_流 发表于 2014-7-10 19:39
楼主为什么是 sp指向14h  不应该是23h吗

dw  0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0    ,栈空间为20个字节,偏移地址是0~13h,栈指针起初是要指向栈底的下一个单元的,即14h。指向23h不久严重越界了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-8 10:42:07 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-11 11:23:17 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 14:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表