我在一段程序中定义了一个名为data的数据段,用debug加载查看data段中的内容,ds为0b2d,cs为0b3e
书上说因为ds=ob2d,所以程序从ob3dh开始,因为data为程序的第一个段,所以它的段地址为ob3dh,这是为什么
如果说因为cs=0b3e,所以data的段地址为ob3dh,这个我倒是明白,但上面的这个我确实搞不懂
希望高手赐教
------解决方案--------------------------------------------------------
是这样的,这里有个 dos 载入程序的做法的问题。dos/debug 在载入程序后将执行控制交予程序时,ds 指向了程序的 psp 空间,psp 区为 100h 字节的大小,即 10h 段的大小。所以用 debug 载入程序时看到的 ds 就是 psp 的段址,不是你程序的 data 段址;自己需要主动地将 ds 指向 data 段址以能正确地访问到其中的内容。若 ds(psp)=0b2d ,由于 psp 为 10h 段的大小,所以作为第一个程序的段的 data 的段址就是 0b2d+10=0b3d 了;cs 是多少,就看 data 段的大小了。