汇编地址计数器用符号$表示,它用来记录正在被汇编程序翻译的语句的地址,即$的内容标示了汇编程序当前的工作位置。
在一个源程序中往往包含多个段。汇编程序在将该源程序翻译成目标程序时,每遇到一个新的段,就为该段分配一个初置为0的汇编地址计数器,然后,再对该段中 的语句汇编。在汇编过程中,对凡是需要申请分配存储单元的语句和产生目标代码的语句,汇编地址计数器则按该语句目标代码的长度增值。因此,段内定义的所有标号和变量的偏移地址就是翻译该语句时当前汇编地址计数器$的值。
DATA SEGEMENT USE16
BUF DB '12345ABCD'
COUNT EQU $-BUF;COUNT的值就是BUF数据区所占字节数
DATA ENDS
汇编地址计数器的值可以用伪指令ORG设置。
ORG 数值表达式
将汇编地址计数器设置成数值表达式的值。其中,数值表达式的值应为非负整数,其值可在0~65535之间或0~4G之间。
DATA SEGMENT USE16
ORG 10;设置$为10,此段目标代码从偏移地址10处开始产生,即空出10个字节的空间
BUF DB 'ABCD';BUF偏移地址为10
ORG $+5;$增5,即空出5个字节的空间
NUM DW 50;NUM的偏移地址为19
DATA ENDS
...
;内存:_,_,_,_,_,_,_,_,_,_,A,B,C,D,_,_,_,_,_,50
;A偏移地址为10,50为19