4.3伪指令1.符号定义伪指令(1)等值伪指令EQUEQU不能给一个符号重复定义格式:〈符号名〉EQU〈表达式〉功能:给符号名定义一个值、别的符号名、表达式或助记符。CONSEQU128DAT1EQUCONS+128BEQUMULABEQU[BX][SI](2)等号伪指令=与EQU类似,但在同一个程序中,=可以对一个符号重新定义。伪指令在汇编期间告诉汇编程序,如何为数据项分配内存空间,如何设置逻辑段,段寄存器和各逻辑段的对应关系等。伪指令不产生相应的机器代码。注意(3)定义符号名伪指令LABELLABEL伪指令可以定义变量或标号。格式:符号名LABEL类型符号名可以是变量或标号。该伪指令的功能是指出所定义的变量或标号的类型。类型可以是BYTE、WORD、DWORD、NEAR、FAR。例如:DATWLABELWORDDATBDB32DUP(0)FLPTLABELFARNLPT:MOVAX,BX…(4)解除定义伪指令PURGE功能:可以解除指定符号的定义。格式:PURGE符号1,符号2,…符号nY1EQU23PURGEYIY1EQU562.数据定义伪指令格式:[变量]助记符操作数,…,操作数[;注释]DATASEGSEGMENTDAT1DB17H,21H,56HDAT2DW8976H,543HDAT3DD45673212HDATASEGENDS注:用DT定义的十进制数要加后缀D,否则默认为BCD数。助记符有:DB,DW,DD,DF,DQ,DT功能:为操作数分配存储单元,并将变量与存储单元相联系。DATASEGMENTVAR1DB10HVAR2DB10,11,12DB0FFH,0BUF1DW1234H,5678HBUF2DD12345678HDATAENDS10H0AH0BH0CHFFH00H34H12H78H56H78H56H34H12H……(a)操作数是常数或表达式例:DATA数据段中定义了字节、字和双字变量(b)操作数是?此时,只分配存储单元,不定义初值。例:NUM1DB5,?,7NUM2DW?,?VAR1DATAVAR2BUF1BUF2(c)操作数是字符串当定义的字符串中多于2个字符时,只能用DB定义。BUF2DW1,2,3DUP(6)等价于:BUF2DW1,2,6,6,6ARB1DB10DUP(2)ARB2DB10HDUP(’ABC’)ARB3DW20DUP(?)(d)带DUP的表达式变量名DBDWDD表达式1DUP(表达式2)如:STR1DB‘ABCD’3.段定义伪指令格式:段名SEGMENT[定位][组合][类型][段长度]……;段体段名ENDSDATASEGMENT;DATA段定义开始BUF1DB2DHDATAENDS;DATA段定义结束STAKSEGMENT;STAK段定义开始TOPDW50DUP(?)STAKENDS;STAK段定义(1)SEGMENT和ENDS(3)ASSUME段寄存器指派伪指令.格式:ASSUME段寄存器:段名[,段寄存器:段名,…](4)ORG移动地址指针的伪指令格式:ORG常量表达式例如:ASSUMECS:CODE,DS:DATA,SS:STAK,ES:EXTRAORG0100HORG1200H格式:过程名PROCNEAR/FAR(缺省为NEAR)……RET过程名ENDP4.过程定义伪指令PROC和ENDP5.程序标题伪指令TITLE格式:TITLE文本(不超过6个字符)6.地址计数器与对准伪操作(1)地址计数器$JNE$+8ARRAYDW34,$+8,25,$+2,78例如:TITLEFILE1在汇编过程中,用地址计数器保存当前正在汇编的指令的偏移地址.(2)ORG伪指令DATASEGMENTORG10;置$值为10VAR1DW1A0H,2FAHORG$+5;置$的值为14+5,即为19VAR2DB1,2,11,12NEQU$-VAR2;($)=23DATAENDS格式:ORG数值表达式功能:将数值表达式的值赋给汇编地址计数器。数值表达式的值须为0~65535之间的非负整数。【例】给汇编地址计数器赋值。7.基数控制伪指令RADIX16二进制数十进制数十六进制数八进制数