| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1126 人关注过本帖
标题:王爽老师 汇编语言(第2版)第六章实验问题
只看楼主 加入收藏
powlin1991
Rank: 2
等 级:论坛游民
帖 子:51
专家分:22
注 册:2012-2-22
结帖率:100%
收藏
 问题点数:0 回复次数:14 
王爽老师 汇编语言(第2版)第六章实验问题
刚看了贴吧flat2010在2012-1-14 22:18:30发表的帖子,感觉还是有点疑问,在此麻烦下各位,先谢谢了。
首先,贴上书上的程序:
assume cs:code,ds:data,ss:stack

data segment
    dw 0123h,0456h
data ends

stack segment
    dw 0,0
stack ends

code segment

start:    mov ax,stack
    mov ss,ax
    mov sp,16

    mov ax,data
    mov ds,ax

    push ds:[0]
    push ds:[2]
    pop ds:[2]
    pop ds:[0]

    mov ax,4c00h
    int 21h
code ends
end start
(问题:)设程序加载后,code段的段地址为X,则data段的段地址为____,stack段的段地址为____。(答:X+3,X+4。这个我是看了好久都看不懂额)

对于以上这个问题,为什么答案是这样的呢?
另外,还想问一个问题:是不是code的段地址是CS,data的段地址是DS,stack的段地址是SS呢?(当然,我说的是在以上这个程序中)
搜索更多相关主题的帖子: start 
2012-03-21 13:45
powlin1991
Rank: 2
等 级:论坛游民
帖 子:51
专家分:22
注 册:2012-2-22
收藏
得分:0 
如果我的第二个问题是对的,那是不是以上的答案错了?一个是减X - 2,一个是减X - 1呢
2012-03-21 13:48
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
是不是code的段地址是CS,data的段地址是DS,stack的段地址是SS呢?(当然,我说的是在以上这个程序中)

对 严格来讲是code的段地址放在CS里 data的段地址放DS里 等等 当然放CS是操作系统弄的

设程序加载后,code段的段地址为X,则data段的段地址为____,stack段的段地址为____。(答:X+3,X+4。这个我是看了好久都看不懂额)

我也看不懂 你试试呗
2012-03-21 13:55
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


实践是检验真理的唯一标准 除了实践谁说的都不算 看图说话、、、
2012-03-21 13:59
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
DS=0C24  SS=0C25  CS=0C26

可能和文件格式有关系 DOS的东西不懂我能做的就是试试看 呵呵
2012-03-21 14:01
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
刚看了贴吧flat2010在2012-1-14 22:18:30发表的帖子,感觉还是有点疑问,在此麻烦下各位,先谢谢了。

贴吧人多热闹倒是真的 技术水平咋样我就不知道了 不过发代码很费劲倒是真事 动不动就吞 还是论坛自由
2012-03-21 14:05
powlin1991
Rank: 2
等 级:论坛游民
帖 子:51
专家分:22
注 册:2012-2-22
收藏
得分:0 
回复 3楼 zklhp
那就不管第2个问题先,我觉得我运行的结果应该没有问题,还想问一个很不解的问题啊。
我先把代码打到记事本里面去,然后用cmd来运行,然后输入debug p133.exe后,点了两次-u,然后分别用了两种执行方式。

第一种:-g0 22(以上那个代码在偏移地址为20的地方为int 21h,我执行到22就是使得程序结束)
然后 -r 一下,得到DS=1424,SS=1434,CS=1436

第二种:-g0 20(接下来应该执行的是int 21h这句)
然后 -p 、-r 一下,得到DS=1434,SS=1435,CS=1436

我思考了一下,是不是第一种方法我确实执行了程序,但是执行多了,所以导致DS和SS都变化了?
两种方法都会提示程序已经执行完,后来才发现其实是不一样的。
2012-03-21 14:08
powlin1991
Rank: 2
等 级:论坛游民
帖 子:51
专家分:22
注 册:2012-2-22
收藏
得分:0 
回复 4楼 zklhp
呵呵,我是试了一下发现跟那个答案有出入,所以有点怀疑调试的时候出了错误。
2012-03-21 14:11
powlin1991
Rank: 2
等 级:论坛游民
帖 子:51
专家分:22
注 册:2012-2-22
收藏
得分:0 
回复 6楼 zklhp
这个实在不好意思,以上这位是在论坛中的帖子,我之前也有找过贴吧,所以弄错了,先说声抱歉。
2012-03-21 14:12
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用powlin1991在2012-3-21 14:08:52的发言:

那就不管第2个问题先,我觉得我运行的结果应该没有问题,还想问一个很不解的问题啊。
我先把代码打到记事本里面去,然后用cmd来运行,然后输入debug p133.exe后,点了两次-u,然后分别用了两种执行方式。
 
第一种:-g0 22(以上那个代码在偏移地址为20的地方为int 21h,我执行到22就是使得程序结束)
然后 -r 一下,得到DS=1424,SS=1434,CS=1436
 
第二种:-g0 20(接下来应该执行的是int 21h这句)
然后 -p 、-r 一下,得到DS=1434,SS=1435,CS=1436
 
我思考了一下,是不是第一种方法我确实执行了程序,但是执行多了,所以导致DS和SS都变化了?
两种方法都会提示程序已经执行完,后来才发现其实是不一样的。

两个不一样 如果考虑你这个问题应该以程序加载也就是我帖的那个图里面的方法得到的准

至于两个的区别我就不知道了 进入int后变成DOS的代码了 这个我就说不明白了

会发现问题 会思考 是好事 祝成功。。
2012-03-21 14:16
快速回复:王爽老师 汇编语言(第2版)第六章实验问题
数据加载中...
 
   



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

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