当前位置: 代码迷 >> 汇编语言 >> 新手提问?该如何处理
  详细解决方案

新手提问?该如何处理

热度:2467   发布时间:2013-02-26 00:00:00.0
新手提问?
Assembly code
assume ds:data,cs:codedata segment    db 'unIX'    db 'foRK'data endscode segment    start:    mov al,'a'        mov bl,'b'        mov ax,4c00h        int 21hcode endsend start

在debug中ds的地址为146C,为什么data段和段地址是147C呢?

------解决方案--------------------------------------------------------
操作系统决定的,加载可执行程序时会有一些初始设定
------解决方案--------------------------------------------------------
楼主疑惑的应该是这个吧,debug 这个程序刚载入后,看 ds 为 146C 但看内容 data 段又是在 147C 段?这中间有个 10h 段即 100h 自己的空间,这个空间是程序的 PSP (Program Segment Prefix),DOS 给每个程序都会建立这么个空间用来存放些信息,其具体内容可用参看书上的介绍;载入程序时,DS/ES 即指向程序的 PSP,所以需要程序自己将 DS 设置到 data 段。
  相关解决方案