程序分为数据段DS,代码段CS,堆栈段SS,附加段ES
每一个程序都可以分成这几个部分(有时只有数据段和代码段,甚至只有代码段)。
比如下面程序,在结构上就是一个完整的程序:
DATA SEGMENT
……
DATA ENDS
EATA SEGMENT
……
EATA ENDS
SATA SEGMENT
……
SATA ENDS
CODE SEGMENT
ASSUME DS:DATA,ES:EATA,SS:SATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,EATA
MOV ES,AX
MOV AX,SATA
MOV SS,AX
……
……
……
CODE ENDS
END START
DATA,EATA,SATA都是自定义的段名字,这几个段 存在你的计算机上,因而每个段都对应一个内存地址。
我们把DATA在内存中的地址送入AX中,再从AX中送到段寄存器DS,这样程序就会“明白”你给它的数据段放在了哪里,要用到的时候它就“知道”该到哪里去找。
因此,所谓的段地址,就是DS,CS,ES,SS中的数值,也就是DATA,EATA,SATA,CODE这几个名字在计算机内存中的地址。
其他段也是如此,这样讲希望你能够明白。