Jany 发表于 2012-10-13 09:12:36

检测点3.2问题再次奉上图片可见

大大们你们好,麻烦老师们帮我解决下一个问题,关于第三章3.2的检测点问题,请问下,我先告诉下我的操作步骤吧,我首先是在debug里给内存修改数据的,用E命令修改了10000----1000F这段的数据,这道题用不到CS段,我先附上debug截图吧
http://ww1.sinaimg.cn/mw690/64e0bb77gw1dxtb3xtpn6j.jpg
这里的ds=17b9,不管它,代码执行是cs=17b9   IP=0100,在这里我试了好几次,我把IP都改成0过,还是一样错误,
现在下面我看是编写汇编指令
http://ww4.sinaimg.cn/mw690/64e0bb77gw1dxtb3s25qmj.jpg
17B9:0105是指令开始执行的地方,跟CS和IP一样,可以用U来看下反汇编的指令,可是在这段汇编中
只给了DS,而没有给数据段一个adreess地址【偏移地址】,已经定义了栈段【20000---20010】,这里为什么是20010,
因为给内存规划了一个栈段【空栈】,大家应该知道sp-2,小甲鱼老师说过的,
在这里我用T命令来运行指令下图:
http://ww3.sinaimg.cn/mw690/64e0bb77gw1dxtb3tlkeoj.jpg
直到指令执行完毕,,我晕,debug窗口直接跳掉了,无语,再来,
http://ww1.sinaimg.cn/mw690/64e0bb77gw1dxtb3qonsjj.jpg
再执行又给OUT出去了,无语,对系统有害了,再继续,又跳了,天啊,难道要改下cs跟IP地址吗,,
哎,还是请老师看看吧,我执行所有指令后,用D命令查找了20000:0的内存单元数据,里面没有数据全部为0,
说明数据没有push进去,,这里我就不明白了,这里的为什么只给DS段地址,而没有偏移地址,这么让cpu知道要入栈的这个数据段的数据呢,请老师们指点迷津啊,我试了N次了,都没有实现,只好请老师们受教。谢谢。
这个书本的题目看图
http://ww3.sinaimg.cn/mw690/64e0bb77gw1dxtb3vyf9oj.jpg

补充内容 (2012-10-13 09:15):
不好意思第一张图片在最下面

补充内容 (2012-10-13 10:14):
不好意思,我无意中想起了这个问题,已经给DS一个偏移地址了,就是push 【0】,这里说明的将数据段DS=1000 偏移地址=0000的内存单元数据推入栈中,这道题我通了 可为什么不实现,用D命令找2000:10没有栈数据,why?
页: [1]
查看完整版本: 检测点3.2问题再次奉上图片可见