前言

语句格式

语句基本格式

格式

汇编语言程序格式

名字项

汇编语言程序格式
名字项可以是标号变量
名字是符号,汇编中所有的符号都是地址。
名字都是地址。
关于名字可以参考我写的另一篇精彩绝伦的博文汇编中的名字(标号和变量)
名字项可以由字母,数字,专用字符(?[email protected]_$)组成,除了数字以外,所有字符都可以放在源语句的第一个位置。
也就是说,数字不能开头
因为如果数字可以开头,那很有可能会混淆名字和数据。
看几个例子

3FBH 数字
FB3H 变量
0FB3H 数字

判断的依据就是:名字项(变量或标号)不能以数字开头!
所以看到3FBH,它是数字开头的,很明显这就是数字,因为变量不能以数字开头
另外还是为了区分,我们规定一个数据如果开头是字母,要在字母前面加0,和变量区分开
因此FB3H是我们起的一个变量名,而0FB3H一定是一个数字。
补充一下,人为书写的时候,为了避免0和O的混淆,写0的时候可以在0身上画一个\表示我写的这是数字0不是字母O,当然计算机中不存在这个问题,写0的时候也不是一定要画斜线,就当成一个趣味小知识了解吧。

名字中如果用到.则必须是第一个字符。名字项我们也很少加.

可以用很多字符来说明名字,但只有前面的31个字符能被汇编程序所识别。

标号

汇编语言程序格式
标号在代码段中定义,后面跟着冒号:
它可以作为过程名定义。
标号有三种属性:偏移类型

  • 段属性定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段总是在CS寄存器中。(因为标号就是在代码段中定义的嘛)
  • 偏移属性,标号的偏移地址是从段起始地址到定义标号的位置时间的字节数。
  • 类型属性,用来指出该标号是在本段内引用还是在其他段中引用的。如果是在段内引用的,则称为NEAR,否则为FAR

标号—指向—指令

变量

汇编语言程序格式
变量在数据段或附加数据段中定义,后面不跟冒号。变量经常在操作数字段出现。它也有偏移类型三种属性。

  • 段属性:定义变量的段起始地址,此值必须在一个段寄存器中。(没有规定一定要在哪个段寄存器里)
  • 偏移属性:变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。在当前段内给出变量的偏移地址等于当前地址计数器($)的值。
  • 类型属性:变量的类型属性定义该变量所保留的字节数,如BYTE(1个字节长)、WORD(2个字节长)、DWORD(4个字节长)

变量—指向—数据

注释项

汇编语言程序格式

数据定义及存储器分配伪操作

伪操作格式

汇编语言程序格式
操作数可以是常熟,或者是表达式
助记符字段说明所用伪操作的助记符,即伪操作,说明所定义的数据类型
变量字段是可选的,他用符号地址(比如X,Y)表示,其作用与指令语句前的标号相同,但它的后面不能跟冒号。如果语句中有变量,则表示第一个字节的偏移地址。

常量

汇编语言程序格式
汇编程序默认的数为10进制数
当使用其他进制表示的常数时,需要专门给予标记。

  • 二进制数:一定要跟B
  • 十进制数:可以加D,可以不加
  • 十六进制数:一定要跟H,这个数的第一个字符必须是0~9,所以如果第一个字符是A ~ F时,应该在其前面加上数字0,如0FFFFH(这样是为了和名字区分!这里要和前面的名字结合在一起看)

我们通常使用16进制,更短更简洁,所以1234H这种形式的数字在汇编程序中经常出现。
但是在某些情况下,使用二进制可以更好的表达我们的意思,比如说
AND AL,00110110D
一眼看过去就能知道我们要把第0,3,6,7位清零,如果你用16进制写,就没这么清楚了。
类似的还有TEST,一眼看过去就知道我们要对某几位进行判断,看他们是0还是1(TEST是做与操作)

还要注意在dos环境中默认16进制,就是debug时显示出来的那些数,都是16进制的。

可以参考我的博文汇编中的进制

助记符种类

汇编语言程序格式

汇编语言程序格式
汇编语言程序格式
汇编语言程序格式
汇编语言程序格式

用LABEL伪操作来定义指令

地址计数器与对准伪操作

地址计数器$

ORG伪操作

操作数项

算术操作符

逻辑与移位操作符

关系操作符

数值回送操作符

属性操作符

PTR

SHORT

THIS

HIGH和LOW/HIGHWORD和LOWWORD

操作符的优先级别

汇编源程序结构

段定义伪操作

完整的段定义伪操作

存储模型与简化段定义伪操作

过程定义伪操作

程序开始和结束伪操作

COM文件

相关文章: