调整偏移量伪指令
调整偏移量伪指令是在内存变量定义时用来调整内存变量起始偏移量的,它们是在把源程序汇编成目标文件时起作用。常用的调整偏移量伪指令有:EVEN、ALIGN和ORG,它们的主要目的是:为了更有效地读取内存单元的内容。
------------------
偶对齐伪指令格式:
EVEN
伪指令的作用是:告诉汇编程序(Assember),本伪指令下面的内存变量从下一个偶地址单元开始分配。
如果下一个偏移量是偶地址,那么,该伪指令不起作用,否则,汇编程序将空出一个字节,从下一偶地址开始为其后变量分配内存单元。
-------------
对齐伪指令格式:
ALIGN Num
其中:Num必须是2的幂,如:2、4、8和16等。
伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量必须从下一个能被Num整除的地址开始分配。
如果下一个地址正好能被Num整除,那么,该伪指令不起作用,否则,汇编程序将空出若干个字节,直到下一个地址能被Num整除为止。
--------------------
调整偏移量伪指令格式:
ORG 数值表达式
伪指令的作用是:告诉汇编程序,本伪指令下面的内存变量从该“数值表达式”所指定的地址开始分配。
-----------------
在以上三个伪指令EVEN、ALIGN和ORG中,伪指令EVEN的使用频率较高。
===============
偏移量计数器的值
前面,我们介绍了几种改变偏移量计数器之值的方法,但在程序中还无法引用其值。汇编语言提供了一个特殊的符号“$”来引用偏移量计数器的值。
例如:
W1 DW $, $
ORG $+3 ;从当前地址开始空3个字节
B1 DB 43h
于是,变量W1后面第一个“$”代表数值2,第一个字分配后,此时偏移量计数器$的值就为4,所以,第二个“$”就代表数值4。
在分配完二个字之后,偏移量计数器的值变为6,$+3的值为9,所以,伪指令“ORG $+3”就表示下一个变量从偏移量为9的单元地址开始分配。