Ax51为每个段保留一个位置计数器。位置计数器是一个指针,它指向活动段(当前段)的地址空间。对于普通段,它代表一个偏移量,对于绝对段,它代表实际地址。当一个段第一次被激活时,位置计数器被置为0。每经过一条指令,位置计数器就变化一次,变化的长度就是指令的长度。当存储空间初始化指令和预留伪指令(即
DS,
DB或
DBIT)在分配存储空间时,将改变位置计数器的值。
ORG伪指令为位置计数器设置一个新值。如果你改变活动段(罗亩按:即转到别的段),然后又返回到那个段,位置计数器将恢复到原先的数值。每当汇编器碰到一个标号,它就把位置计数器的当前值和当前段的类型赋给那个标号。
美元符号($)指示活动段中位置计数器的值。当我们使用$符时,一定要记住它的值随着每条指令变化,但只有当那条指令已经被评价(evaluated)完毕后才变化。如果我们在一条指令或伪指令的操作数中使用$,它代表那条指令首字节的地址。