鱼C论坛

 找回密码
 立即注册
查看: 2070|回复: 3

特殊的栈段

[复制链接]
发表于 2013-6-18 22:04:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 阳光影子 于 2013-6-18 22:11 编辑

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,0,0,0,0,0,0
stack ends
code segment
start:mov ax,data
       mov ds,ax
    mov ax,stack
       mov ss,ax
    mov sp,20h     ;将设置栈顶ss:sp 指向cs:30
   
    mov bx,0
    mov cx,8
  s:push [bx]
    add bx,2
    loop s        ;以上将代码0~15单元抵中的8个字型数据依次入栈
   
    mov bx,0
    mov cx,8
    s0:pop [bx]
       add bx,2
    loop s0         ;以上依次出栈8个字型数据到代码段0~15单元中
   
    mov ax,4c00h
    int 21
code ends
end start     ;指明程序的入口在start处

奇怪了,明明SS栈段是等于13d4呀,怎么成了13d5了?难道是数据段和栈段不是同一个段?如果是这样的话13d4-13d5就等于65535了,数据段就有24KB存储数据。这里求一个解释?

下一个问题是当这个程序一条一条执行到一半的时候居然又有不可思议的事发生了

3

3

这明明pushl了呀,数据段的数据应该存在栈段里面呀,可是栈段的段地址是13d5,不是13d4。这里给个解释

2

2


在看一下栈段里的数据

1

1

这里就真确了。

求解释?


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

使用道具 举报

发表于 2013-6-19 07:08:44 | 显示全部楼层
无回帖,不论坛,这才是人道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-19 16:03:56 | 显示全部楼层
SS不是等于13d5吗,没有问题啊而且你数据段中数据也push了栈中了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 20:24:49 | 显示全部楼层

要说明清楚,应该是数据段的范围是1024KB  而用13d4减去13d5刚好等于1024KB
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 07:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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