一、伪指令详解
伪指令在百度百科中的定义为:
伪指令(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信息。例如,提供如下信息:哪些是指令、哪些是数据及数据的字长、程序的起始地址和结束地址等。
伪指令有2个特点:由于是伪“指令”,因而它只存在于汇编语言中。高级语言中不叫指令,叫语句;
由于是“伪”指令,也即“假”指令,因而不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。
与指令的区别::指令是在执行阶段发挥作用的,由CPU(Intel、AMD等)来执行。
伪指令是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。
二、数据定义伪指令为源程序中的数据和堆栈区分配数据存储单时,使用最多的伪指令。
数据定义伪指令格式如下:
常用的数据定义伪指令类型有:DB(定义字节,常用)一个字节数据占1个字节单元,读完一个,偏移量加1
DW(定义字,常用)一个字数据占2个字节单元,读完一个,偏移量加2
DD(定义双字)一个双字数据占4个字节单元,读完一个,偏移量加4
DQ(定义四字)一个四字数据占8个字节单元,读完一个,偏移量加8
DT(定义十字节,用于BCD码)
数据定义伪指令后面的初值表可以是常数、表达式、字符串。
例如:
D2 DW 110*230 ; 为D2分配1个字,存放表达式的值
D3 DB ‘GOOD!’ ; 为D3分配5字节,用来存放字符串‘GOOD!’
D4 DD 2.4E+3 ; 为D4分配2个字 ,存放一个浮点数
D5 DB ‘AB’ ; 为D5分配2字节,字符A在低字节,B在高字节
D6 DW ‘AB’ ;为D6分配1个字,字符A在高字节,B在低字节
S1 DB 5 DUP(?) ;为S1预留5字节的存储空间