汇编语言的源程序的每个语句都有下面的格式
[name] operation operand [;comment]
[]中的内容需要时可加入,属可有可无项,其余两项必须设置,下面就来说一下每一项的具体情况;
1、名字项(name)
源程序中的名字项由下列字符组成:
字母:A~Z
数字:0~9
专用字符:?,·,@,-,¥
另外命名时第一个字符不能是数字,当使用·时必须是第一个字符;在语句中名字项有两种作用,标号和变量;
标号在代码段中定义,后面跟冒号:,也可以用LABEL或者EQU伪操作符定义;标号可以作过程名,在call指令和转移指令中出现用来表示转向地址;标号有三个属性:段、偏移和类型属性;段属性是指定义标号的段的起始地址,这个段的起始地址总是在CS段中,偏移属性是指定义标号的位置与段的起始地址之间的字节数,类型属性是指是否在本段内部引用还是在其它段中引用的,在本段内引用的属性为NEAR,在其它段内引用的属性为FAR;
变量是在数据段或者代码段中定义的,后面不需要加冒号,也可以用LABEL或者EQU符号定义,它也有三个属性段属性、偏移属性和类型属性;段属性是指定义变量的段地址,在一个段寄存器中;偏移属性是指定义标号的地址和段地址之间的字节数;类型属性是指定义变量的数据类型,如BYTE为类型为1,WORD类型为2;
2、操作项
这一项可以是指令、 伪指令和宏指令;对于指令,汇编程序把源程序把该部分翻译成机器指令;对于伪指令,翻译程序将根据要求进行处理,比如给数据分派存储空间等;对于宏指令,汇编程序将对其进行展开;
3、操作数
操作数可以是一个或者多个表达式组成,每个表达式之间以,隔开;
算术操作符
算术操作符有+、-、*、/和MOD(取余)操作;
逻辑与移位操作符
逻辑操作符如AND,OR,NOT,XOR;移位操作符如SHL,SHR等;
关系操作符
有六个EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)六种,比较的项为数字或者同一段内的偏移地址,结果为逻辑值,用0FFFFH表示真,用0表示假;
数值回送操作符
TYPE
格式:type expression
该指令返回expression的类型属性,如near返回-1,far返回-2,byte返回1等;
LENGTH
格式:length expression
该指令对于dup重复指令返回重复次数,其他情况返回1;
SIZE
格式:size expression
该指令返回LENGTH和TYPE的乘积;
OFFSET
该指令回送偏移地址值;
SEG
该指令返回段地址值;
属性操作符
PTR
格式:type ptr expression
该指令给expression赋予type属性
段操作符
格式:expression1:expression2
该指令用来表示expression2所在段是expression1