汇编语言编写方法及程序分析
1. 汇编语言程序的编写方法
(1) 汇编语言源程序以.asm为其扩展名。
(2) 汇编语言源程序的每一行都可以由4个部分组成,句法如下:
[标号][:] 助记符 [操作数] [;注释]
其中可用空格或TABS键隔开
标号――供本程序的其他部分或其他程序调用。标号是任选项,标号后面可以加也可以不加冒号“:”。标号必须从第一列写起,标号最多可达到32个字符(A~Z ,a~z ,0~9 ,_ ,以及$),但第1个字母不能以数字开头。引用标号时,标号的大小写必须一致。标号的值就是SPC(段程序计数器)的值。如果不用标号,则第一个字母必须为空格、分号或信号(*)。
助记符――助记符指令、汇编指令、宏指令和宏调用。作为助记符指令,一般用大写;汇编命令和宏指令,以句号“.”开始,且为小写。汇编命令可以形成常数和变量,当用它控制汇编和连接过程时,可以不占用存储空间。指令和汇编命令都不能写在第1列。
操作数――指令中的操作数或汇编命令中定义的内容。操作数之间必须用逗号“,”分开。有的指令操作无操作数,如NOP、RESET。
注释――注释从分号“;”开始,可以放在指令或汇编命令的后面,也可以放在单独的以行或数行。注释是任选项。(如果注释从第1列开始,也可以用“*”。)
(3) 常用的汇编命令如表所示。
汇编命令 |
作用 |
举例 |
.title |
紧随其后的是汇编语言程序正文 |
.title “example.asm” |
.end |
结束汇编命令 |
放在汇编语言程序的最后 |
.text |
紧随其后的是汇编语言程序正文 |
经汇编后,紧随.text后的是可执行程序代码 |
.data |
紧随其后的是已初始化数据 |
有两种数据形式:.int和.word |
.int |
.int用来设置一个或多个16位无符号整型量常数 |
table: .word 1,2,3,4 .word 6,8,4,2 |
.word |
.word 用来设置一个或多个16位符号整型量常数 |
表示在程序存储器标号为table开始的8个单元中存放初始化数据1,2,3,4,6,8,4,2 |
.bss |
.bss为未初始化变量保留存储空间 |
.bss x,4 表示在数据存储器中空出4个存储单元存放变量x1,x2,x3和x4 |
.sect |
建立包含代码和数据的自定义段 |
.sect “vectors”定义向量表,紧随其后的是复位向量和中断向量,名为vectors |
.usect |
为未初始化变量保留存储空间的自定义段 |