为什么这个汇编程序是从地址0B3D:0000加载的?

发布于 2024-12-17 18:57:59 字数 709 浏览 1 评论 0原文

我在一本关于汇编的书上看到过一个汇编程序:

assume cs:code
   code segment 
   dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
   mov bx,0
   mov ax,0

   mov cx,8
s: add ax,cs:[bx]
   add bx,2
   loop s

   mov ax,4c00h
   int 21h
 code ends
 end

这个程序的功能是把八个数字相加。笔者在

DOS中编译了这个程序,并使用DEBUG来看看这个程序是如何被加载的。

作者使用R命令得到了

DS = 0B2DH ES = 0B2D SS = 0B3D CS = 0B3D IP = 0000

然后作者说这个程序是从地址0B3D:0000加载的。

我很困惑为什么这个程序是从地址 0B3D:0000 加载的?

这是因为程序段前缀(PSP)的存在吗?

如果答案是PSP的存在,那么PSP里有什么?

I have seen a assembly program written from a book about assemble:

assume cs:code
   code segment 
   dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
   mov bx,0
   mov ax,0

   mov cx,8
s: add ax,cs:[bx]
   add bx,2
   loop s

   mov ax,4c00h
   int 21h
 code ends
 end

This program's function is to add eight numbers. The author compiled this program in the

DOS and use the DEBUG to see how this program be loaded.

The author use the R command and got that

DS = 0B2DH ES = 0B2D SS = 0B3D CS = 0B3D IP = 0000

And then the author said that this program is loaded from the address 0B3D:0000.

I'm a confused that why this program is loaded from the address 0B3D:0000?

Is this because the existence of the Program Segment Prefix(PSP)?

If the answer is the existence of the PSP, what is in the PSP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千笙结 2024-12-24 18:57:59

事实上,DOS 为每个程序创建一个所谓的程序段前缀,并且当程序启动时,DS 和 ES 段寄存器会加载其 PSP 的段地址。

在 PSP 中,有许多对 DOS 本身以及潜在的应用程序有用的东西。最有用的是程序的命令行。我从未使用过任何其他 PSP 字段,只使用过命令行。

您可以此处查看 PSP 内部的内容,此处此处此处 以及许多其他地方。

Indeed, for every program DOS creates a so-called Program Segment Prefix and when a program starts, the DS and ES segment registers are loaded with the segment address of its PSP.

In the PSP there are a number of things useful to DOS itself and potentially to the application. The most useful one is the program's command line. I've never used any other PSP fields, just the command line.

You can see what's inside the PSP here, here, here, here and in many other places.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文