【第六章】包含多个段的程序(2)

6.3 将数据、代码、栈放入不同的段

之前在编写程序时,我们将数据、栈和代码都放在了一个段中。这样做有两个问题:

  1. 把他们放入一个段中显得混乱
  2. 前面程序中处理的数据很少,用到的栈空间也小。但是如果数据、栈和代码所需要的空间超过64KB,就不能放在一个段中(64KB为8086CPU所规定)

那么我们如何定义多个段呢?

  1. 定义多个段的方法:定义一个段的方法与定义代码段没有任何区别,但是不同的段要有不同的命名

    stack segment
    	...
    stack ends
    
    code segment
    	...
    code ends
    
  2. 对段地址的引用

    现在有多个段了,那么如何访问段中的数据呢?我们要通过地址来访问,地址分为段地址和偏移地址。

    在程序中,段名就相当于一个标号,它代表了段地址。如指令“mov ax,data”的含义就是将名称为“data”的段的段地址送入ax。而偏移地址则要看数据在段中的位置

  3. “代码段”、“数据段”、“栈段”完全是我们的安排