设定段寄存器伪指令-ASSUME
设定段寄存器伪指令-ASSUME
一般格式 : ASSUME 段寄存器:段名 [ ,段寄存器:段名,……
功能 :通知汇编程序,哪一个段寄存器是该段的段寄存器,以便对使用变量或标号的指令汇编出正确的目的代码。在段名中, CODE 表示代码段, DATA 表示数据段, STACK 表示堆栈段。
由于 ASSUME 伪指令只指明某一个段地址应存于哪一个段寄存器中,并没有包含将段地址送入该寄存器的操作。因此要将真实段地址装入段寄存器还需用汇编指令来实现。这一步是不可缺少的。
例如, CODE SEGMENT
ASSUME CS : CODE , DS : DATA , SS : STACK
MOV AX , DATA ; DATA 段值送 AX
MOV DS , AX ; AX 内容送 DS , DS 才有实际段值
CODE ENDS
当程序运行时,由于 DOS 的装入程序负责把 CS 初始化成正确的代码段地址, SS 初始化为正确的堆栈段地址,因此用户在程序中就不必设置。但是,在装程序中 DS 寄存器由于被用作其它用途,因此,在用户程序中必须用两条指令对 DS 进行初始化,以装入用户的数据段地址。当使用附加段时,也要用 MOV 指令给 ES 赋段地址。