如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
5.3伪指令语句5.3.1数据定义伪指令数据定义伪指令的用途:定义一个变量的类型,给变量赋初值;或者仅仅给变量分配存储单元,而不赋予特定的值。数据定义伪指令有DB,DW,DD,DF,DQ,DT等,而常用的是前三种。数据定义伪指令的一般格式为:[变量名]伪指令定义符操作数[,操作数…]其中方括号中的变量名为任选项,可以有,也可以没有。变量名后面不跟冒号。伪指令定义符后面的操作数可以不止一个。如有多个操作数,相互之间应该用逗号分开。1、字节变量的定义DB(DefineByte)字节变量定义实例2、字变量的定义DW(DefineWord)字变量定义实例3、双字变量的定义DD(DefineDoubleword)其他数据单元定义伪指令变量的应用问号“?”定义:除了常数、表达式和字符串外,问号“?”也可以作为数据定义伪指令的操作数,此时仅给变量保留相应的存储单元,而不赋予变量某个确定的初值。DUP定义:当同样的操作数重复多次时,可用重复操作符“DUP”表示,其形式为:nDUP(初值[,初值,…]);[,初值,…]?其中圆括号中为重复的内容,n为重复次数。如果用“nDUP(?)”作为数据定义伪指令定义符的惟一操作数,则汇编程序产生一个相应的数据区,但不赋任何初值。重复操作符“DUP”可以嵌套。下面是用问号或“DUP”表示操作数的几个例子:FILLERDB?SUMDW?DB?,?,?BUFFERDB10DUP(?)ZERODW30DUP(0)MASKDB5DUP('OK!')ARRAYDB100DUP(3DUP(8),6)其中MASK定义一个数据区,其中有5个重复的字符串'OK!'变量ARRAY定义为一个数据区,其中包含重复100次的内容:8,8,8,6,共占400个字节。试画出内存存储空间及初始化的数据值?定义时避免出现错误:下面是几个错误的数据定义伪指令语句:ERROR1:DW99;变量名后有冒号ERROR2DB25*90;DB的操作数超过255ERROR3DD‘1234’;DD的操作数超过2个字符的字符串,超过2个字符串必须使用DB来定义例:画图说明下列伪指令所定义的数据在内存中的存放形式。ARV1DB3+4,43H,-2ARV2DW474FH,1,?COUNTEQU2ARV3DB2DUP(1,COUNTDUP(2))ARV4DDARV3ARV5DB‘AB’ARV6DW‘AB’解:假设此数据段的段地址为1234H,即DS=1234H,则有:地址操作符5.3.2符号定义伪指令符号定义伪指令的用途:是给一个符号重新命名,或定义新的类型属性等。符号包括:汇编语言的变量名、标号名、过程名、寄存器名以及指令助记符等。常用的符号定义伪指令:EQU、=(等号)和LABLE。1.EQU格式:名字EQU表达式EQU伪指令将表达式的值赋予一个名字。以后可用这个名字来代替上述表达式。格式中的表达式可以是:一个常数、符号、数值表达式或地址表达式等。例如:2.=(等号)格式:名字=表达式含义:=(等号)伪指令的功能与EQU伪指令基本相同。与EQU主要区别:它可以对同一个名字重复定义。例如:3.LABLE(类型定义伪指令)格式:名字LABLE类型LABLE伪指令的用途:定义标号或变量的类型。变量的类型可以是BYTE、WORD、DWORD等;标号的类型可以是NEAR或FAR。利用LABEL伪指令可以使同一个数据区兼有BYTE和WORD两种属性,例:AREAWLABELWORD;变量AREAW的类型为WORDAREABDB100DUP(?);变量AREAB的类型为BYTEMOVAREAW,AX;AX送第1和第2字节中MOVAREAB[49],AL;AL送第50字节中LABEL伪指令的功能等同于“EQUTHIS”5.3.3段定义伪指令段定义伪指令的用途:在汇编语言源程序中定义逻辑段,常用的段定义伪指令有SEGMENT/ENDS和ASSUME等1、SEGMENT/ENDS伪指令段名SEGMENT[定位类型][组合类型][‘类名’]…段名ENDS定位类型。定位类型给出实际段起点的类型。它有PAGE(页类型)、PARA(节类型)、WORD(字类型)、BYTE(字节类型)四种类型1)定位(Align)类型定位类型任选项告诉汇编程序如何确定逻辑段的边界在存储器中的位置。定位类型共有以下四种:●BYTE(边界起始地址=××××××××××××××××B),可以从任何地址开始。●WORD(边界起始地址=×××××××××××××××0B)该类型表示逻辑段从字的边界开始。偶数开始●PAR