汇编语言程序格式小剖析

汇编语言的源程序的每个语句都有下面的格式

[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

推荐阅读更多精彩内容