汇编语言源程序格式.ppt

第2章 汇编语言程序格式;2.1 汇编语言语句格式;2.1.1 汇编语言语句类型 ;2.1.2 汇编语言语句格式;1.名字项 名字是用户按照一定规则定义的标识符,可由下列符号组成: 字母 A~Z、a~z 数字 0~9 特殊字符 ?、.、@、_、$ 数字不能作名字项的第一个字符。而圆点仅能用作第一个字符,可以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所识别。为了便于记忆,名字的定义应该能够见名知义,如用BUFFER表示缓冲区、SUM表示累加和等。 名字有两种形式:标号或变量。指令语句中的名字通常用???号表示,而伪指令语句中的名字通常用变量名、段名和过程名表示,多数情况下用变量名表示。;(1) 标号 标号在代码段中定义,也可以用EQU或LABEL伪指令来定义,标号与其所代表的指令之间用冒号分开,用来代表一条指令所在单元的地址。标号也可以作为过程名定义。标号经常在转移指令的操作数字段出现,用以表示转向的目标地址。标号在命名时,应尽量取有意义的字符,以便程序的阅读和理解。;标号有3种属性:段属性、偏移属性和类型属性。 段属性:标号所代表指令单元的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存器中。 偏移属性:标号所代表指令单元的段内偏移地址,标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。对于16位段是16位无符号数。 类型属性:用来指出标号是在本段内引用还是在其他段中引用的。如是在段内引用的,则称为NEAR,转移源和转移目标在同一个代码段中,转移时,只改变IP值,不改变CS值;如在段外引用,则称为FAR,转移源和转移目标在不同的代码段中,转移时,既改变IP值,又改变CS值。;(2) 变量 变量在除代码段以外的其它段中定义,后面不跟冒号。它也可以用EQU或LABEL伪指令来定义。变量是一个可以存放数据的存储单元的名字,即存放数据的存储单元的地址符号名。变量用DB、DW、DD定义,此时变量名仅表示该数据区或存储区的第一个数据单元的首地址。变量经常在操作数字段出现。;变量也有3种属性:段属性、偏移属性和类型属性。 段属性:变量所代表数据单元的段起始地址,此值必须在一个段寄存器中(DS、ES或SS中)。 偏移属性:变量所代表数据单元的段内偏移地址,变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。对于16位段是16位无符号数。在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的值可以用$来表示。 类型属性:变量的类型属性定义该变量所保留的字节数,如BYTE(1个字节长),WORD(2个字节长),DWORD(4个字节长)。这一点,将在数据定义伪指令中说明。 在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会指示出错。;2.操作码项;3.操作数项 ;操作数可以是常数、寄存器、标号、变量或由表达式组成。在这里,将专门对表达式加以说明。表达式是常数、标号、变量、寄存器与一些操作符相组合的序列,可以有数字表达式和地址表达式两种。数字表达式由汇编程序根据优先级规则计算得到一个常数值。地址表达式由汇编程序计算得到一个地址或一个常数值(地址间的距离长度)。 组成表达式的操作符有算术、逻辑、关系、数值返回、属性操作符。 ;常用的操作符 ;算术操作符 算术运算符包括:+、-、*、/、MOD(取余)。 运算符MOD是作除法操作,取余数,如10 MOD 3 = 1。 算术运算符可以用于数字表达式或地址表达式中。但当它用于地址表达式时,只有当其结果有明确的物理意义时才是有效的结果,例如,两个地址相乘或相除是无意义的。在地址表达式中,可以用+或-,但也必须注意其物理意义,例如把两个不同段的地址相加也是无意义的。经常使用的方法是“地址±常量”来描述指针的移动,例如,SUM+1是指SUM字节单元的下一个字节单元的地址(注意:不是指SUM单元的内容加1),而SUM-1则是指SUM字节单元的前一个字节单元的地址。 ;【例2.1】将首地址为ARRAY的字数组的第6个字传送到DX寄存器中。 MOV DX,ARRAY+(6-1)*2 【例2.2】数组ARR定义如下,试写出把数组长度(字数)存入CX寄存器的指令。 ARR DW 1,2,3,4,5,6,7 ARREND DW ? 其中,ARREND是为计算数组长度而建立的符号地址,则指令如下: MOV CX,(ARREND-ARR)/2 汇编程序在汇编期间将计算出表达式的值而形成指令: MOV CX,7;(2) 逻辑与移位运算符 ① 逻辑运算符 逻辑运算符包括:AND(逻辑与)、OR(逻辑或)、XOR(逻辑异或)、NOT(逻辑非)。 逻辑运算符是按位操作的,它的操作数只能是数字,且结果也为数字

文档评论(0)

1亿VIP精品文档

相关文档