. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
包含多个段的程序
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
程序6.4编译执行,发现的一个问题,想请教一下,谢谢
[待解决]
回复[
2
次 ] 点击[
306
次 ]
longphui
[帖 主]
[ 发表时间:2012-10-02 00:44 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-08-31 19:01
程序6.4,我自己练习编译连接后debug,然后-r查看得:
-r
AX=0000 BX=0000 CX=005C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B8E ES=0B8E SS=0B9E CS=0BA1 IP=0000 NV UP EI PL NZ NA PO NC
0BA1:0000 B89F0B MOV AX,0B9F
发现DS和SS的值相差10h
而按书上4.9《程序执行过程的追踪》上所讲应该是DS和CS相差10h
longphui
[第
1
楼]
[ 回复时间:2012-10-02 00:48 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2012-08-31 19:01
我再看了一下4.9,上面最后是CS:IP指向程序的入口。这样可以解释了DS和CS为什么不是相差10h了。
但为什么DS和SS总是相差10h呢,而且查看自己所有的debug截图记录,发现,debug后DS和ES总是相同的,CS和SS大部分相同(有入口的时候可能不同)而且总是相差10h,这是为什么呢?
fpamc
[第
2
楼]
[ 回复时间:2012-10-02 09:06 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
ds是程序的入口地址。也就是程序段前缀(PSP)。由于PSP的大小是100h(放入段寄存器就是10h)。
ss是定义的数据的起始地址。所以与ds相差10H。
cs就是程序将要运行的第一条指令的地址。也就是开始标号指向的指令的地址。
es嘛,忘了。
自己debug哈,多多观察,多多实验就会明白了。
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved