| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7719 人关注过本帖
标题:关于王爽检测点6.1(2)栈的问题(求解惑)
取消只看楼主 加入收藏
Kristian_Tam
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-2-16
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:3 
关于王爽检测点6.1(2)栈的问题(求解惑)
要求:用内存0:0-0:15的内容改写程序中的数据,数据用栈传送并且栈空间设置在程序段。程序如下(来自答案)

assume cs:code
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h  ;这是要修改的内容(16个字节)
dw 0,0,0,0,0,0,0,0,0,0                              ;定义20个字节的栈空间
start: mov ax,cs
       mov ss,ax
       mov sp,36                                    ;设置cs:sp指向栈顶,这也是小弟的疑问所在,我自己的理解是:程序原来
                                                    ;的数据段和栈空间加起来一共是36个字节,不是应该0-35么?按照栈以字单
                                                    ;元存放来说,栈顶难道不是34么?即使栈能以字节存放,那栈顶应该是34吧
                                                    ;,为什么是36呢?我知道肯定是自己哪里理解错了,求各位指出,感激万分
       mov ax,0
       mov ds,ax
       mov bx,0
       mov cx,8

s:     push [bx]
       pop cs:[bx]
       add bx,2
       loop s

       mov ax,4c00h
       int 21h
code ends
end start
搜索更多相关主题的帖子: start 检测 空间 
2015-12-28 02:41
Kristian_Tam
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-2-16
收藏
得分:0 
回复 楼主 Kristian_Tam
错了,我的意思是说如果栈以字节存放,那栈顶应该也是35吧,到底我哪里理解错了?
2015-12-28 03:50
Kristian_Tam
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-2-16
收藏
得分:0 
回复 3楼 wmf2014
谢谢回复,我的理解是36个字节不是应该0-35么?当栈为空的时候,指针应该指向第35号单元啊,怎么是36呢?如果是0-36的话,那该程序的数据和栈空间加起来不是37个字节了么?
2015-12-28 08:51
Kristian_Tam
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-2-16
收藏
得分:0 
理解了,感谢楼上两位,正如八画小子说的,“设置ss:sp指向栈顶”本身就有问题。再如wmf2014所说,指针必须指向一个有效值,那么既然是空栈的状态指针必定是在栈空间外,否则也就没有“空栈”一说了。再次感谢两位赐教
2015-12-29 11:07
快速回复:关于王爽检测点6.1(2)栈的问题(求解惑)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013821 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved