+ -
当前位置:首页 → 问答吧 → 段名到底代表什么?

段名到底代表什么?

时间:2010-12-31

来源:互联网

data segment para
 num dd 12h
 len=$-data ;此时的段名似乎是表示数据段的偏移地址
data ends

code segment
  assume cs:code,ds:data
start:
  mov ax,data ;此时段名似乎是表示数据段的段地址
  mov ds,ax  
  mov bx,len
  mov cx,offset data
  mov ax,4c00h
  int 21h
code ends
  end start


我看王爽的书里是说段名代表的是段地址,可是在我程序里len=$-data,因为$表示的是计数器的
值,也就是偏移地址,所以len=$-data似乎有矛盾,请问怎么解释?




作者: leetow2003   发布时间: 2010-12-31

还是用 len=$-NUM更清楚些。

个人觉得len=$-data 有点len=$-0的意思。

segment表示新申请一片空间构成一个段,段名主要表示这个段的段地址,同时也隐含着偏移地址从0开始算起的意思。

作者: shzhfu   发布时间: 2010-12-31

段值肯定是指的段边界了。也就是楼主说的段地址。所以可以直接mov ds,ax。
至$, 我觉得编译的时候有可能会将它转变成$-segment*16

作者: ydfivy   发布时间: 2010-12-31