微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt
7.3伪指令语句伪指令无论表示形式或其在语句中所处的位置,都与指令相似。但二者之间有着重要的区别。首先,指令是给CPU的命令,在运行时由CPU执行,每条指令对应CPU的一种特定的操作,例如传送、加法等;而伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理,例如定义数据、分配存储区、定义段以及定义过程等。其次,汇编以后,每条指令产生一一对应的目标代码;而伪指令则不产生与之相应的目标代码。7.3伪指令语句根据其功能,伪指令大致可以分为以下几类:数据定义伪指令(DB,DW,DD)符号定义伪指令*(EQU)段定义伪指令(SEGMENT/ENDS,ASSUME)过程定义伪指令(过程名PROC,过程名ENDP)宏处理伪指令*模块定义与连接伪指令*处理器选择伪指令*条件伪指令*列表伪指令*其它伪指令*7.3.1数据定义伪指令7.3伪指令语句数据定义伪指令的用途是定义一个变量的类型,给变量赋初值,或者仅仅给变量分配存储单元,而不赋予特定的值。数据定义伪指令有DB,DW,DD,DF,DQ,DT等,而常用的是前三种。数据定义伪指令的一般格式为:[变量名]伪指令定义符操作数[,操作数…]其中方括号中的变量名为任选项,可以有,也可以没有。变量名后面不跟冒号。伪指令定义符后面的操作数可以不止一个。如有多个操作数,相互之间应该用逗号分开。定义变量的类型为字节(BYTE),给变量分配字节或字节串。DB伪指令定义符后面的操作数每个占有1个字节。(1)DB(DefineByte)定义变量的类型为字(WORD)。DW伪指令定义符后面的操作数每个占有1个字,即2个字节。在内存中存放时,低位字在前,高位字在后。(2)DW(DefineWord)定义变量的类型为双字(DWORD)。DD后面的操作数每个占有2个字,即4个字节。在内存中存放时,低位字在前,高位字在后。(3)DD(DefineDoubleword)7.3伪指令语句7.3伪指令语句65HF0H17H ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘!’41H42H42H41H42H41H00H00H …数据定义伪指令举例1:数据定义伪指令定义符后面的操作数可以是常数、表达式或字符串,但每项操作数的值不能超过由伪指令定义符所定义的数据类型限定的范围。例如,DB伪指令定义数据的类型为字节,则其范围为无符号数:0~255;带符号数:?128~+127,等等。字符串必须放在单引号中。另外,超过两个字符的字符串只能用DB伪指令定义。 DATADB101,0F0H;存入65H,F0H EXPRDB2*8+7;存入17H STRDB‘Hello!;存入6个字符的ASCII码值 ABDBAB;存入41H,42H BADWAB;存入42H,41H ABDDDDAB;存入42H,41H,00,00 OFABDWAB;存入变量AB的偏移地址ADRSDWSTR,STR+3,STR+5;存入3个偏移地址TOTALDDDATA;先存DATA的偏移地址;再存段地址 数据定义伪指令举例2:7.3伪指令语句除了常数、表达式和字符串外,问号“?”也可以作为数据定义伪指令的操作数,此时仅给变量保留相应的存储单元,而不赋予变量某个确定的初值。当同样的操作数重复多次时,可用重复操作符“DUP”表示,其形式为:nDUP(初值[,初值,…])其中圆括号中为重复的内容,n为重复次数。如果用“nDUP(?)”作为数据定义伪指令定义符的惟一操作数,则汇编程序产生一个相应的数据区,但不赋任何初值。重复操作符“DUP”可以嵌套。通常把用DUP作为惟一操作数而定义的变量称为数组。7.3伪指令语句FILLERDBSUMDW DBBUFFERDBZERODWMASKDBARRAYDB???,?,?10DUP(?)