在目前单片机的开发应用中,经常采用C语言和汇编语言共同编写程序。要想很好地掌握和应用单片机首先要掌握汇编语言。
汇编语言是面向机器的程序设计语言,对于CPU不同的单片机,其汇编语言一般是不同的。用汇编语言编写的程序称为汇编语言源程序。
汇编语言源程序是由汇编语言语句构成的。汇编语言语句可分为两大类:指令性语句和指示性语句。
指令性语句是由指令组成的由CPU执行的语句。
指示性语句是由伪指令组成的,它不被CPU执行,用来告诉汇编程序如何对程序进行汇编的指令;由于它不能生成机器语言,故又被称为伪指令语句。
1.指令性语句格式
[标号:]操作码助记符[目的操作数][,源操作数][;注释]
①每条汇编语句一般由若干部分组成,每一部分称为一个字段。
②每个字段之间应该严格地用分界符加以分隔。
③分界符包括冒号、空格符、逗号、分号等。标号段与操作码之间要加冒号“:”;操作码与操作数之间要用空格相隔;各操作数之间要用逗号“,”相隔;操作数与注释段之间要加分号“;”相隔。
2.伪指令的指示性语句格式
[标号:]伪操作 操作数[,操作数,……][;注释]
①伪指令不是真正的指令,是在汇编时供汇编程序识别的指令,又称为汇编指令。
②它不属于指令系统,也无对应的机器码,只是用来对汇编过程进行某种控制。利用伪指令告诉汇编程序如何进行汇编,为编程提供方便。
3.常用的指示性语句
①ORG(Origin)汇编起始指令
功能:规定对汇编语言源程序进行汇编时,目的程序在程序存储器中存放的起始地址。
格式:[标号:]ORG 16位地址或标号
注意:在一个源程序中,可多次使用ORG指令,以规定不同程序段的起始位置,地址应从小到大顺序排列,不允许重叠。
例如:ORG 1000H
MOV A,#12H;该指令的机器码是74H、12H
ADD A,#34H;该指令的机器码是24H、34H
在上述源程序中,第一条指令的首字节74H存放到程序存储器的1000H地址单元中,其他字节和后续指令的数据顺序存放到后面的存储单元中。
②END(End)汇编结束指令
END是汇编语言程序结束伪指令。
功能:表示程序已结束,汇编程序对END后面的指令不再汇编。
格式:[标号:]END
注意:在一个源程序中,只能有一条END指令,而且必须放在整个程序的末尾。
③EQU(Equate)赋值指令。
EQU是赋值(也称等值)伪指令。
功能:把操作数段中的数据或地址赋值给标号字段中的字符名称。
格式:字符名称EQU数值或汇编符号
注意:字符名称必须先赋值后使用,故EQU指令通常放在源程序的开头。EQU可定义8位或16位的数据或地址,
例如:ABC EQU 30H;AB与30H等值
ACB EQU R3;AC与R3等值
MOV A,ABC;把片内RAM 30H单元中的数据送入A中
MOV A,ACB;把R3中的数据送入累加器A中
④DATA(Data)数据地址赋值指令
DATA是数据地址赋值伪指令。
功能:把操作数段中的表达式的值赋给标号字段中的字符名称。
格式:字符名称DATA表达式
注意:DATA指令功能与EQU指令类似,它们的主要区别如下:
①DATA定义的字符名称可以先使用后定义,DATA指令可以放在源程序的任何位置。
②DATA只能用来定义8位的数据或地址。
③EQU可以把汇编符号赋给字符名称,而DATA只能把数据赋给字符名称。
④DATA可以把表达式的值赋给字符名称,这个表达式是可以进行求值运算的。
⑤XDATA数据地址赋值指令。(www.xing528.com)
XDATA是数据地址赋值伪指令。
功能:把操作数段中的表达式的值赋给标号字段中的字符名称。
格式:字符名称XDATA表达式
注意:XDATA指令功能与DATA指令类似,它们的主要区别是XDATA可定义16位的数据或地址。
⑥BIT(Bit)位地址赋值指令
BIT是位地址赋值伪指令。
功能:把位地址赋给字符名称。
格式:字符名称BIT位地址
例如:AB BIT 30H;AB与30H等值
AC BIT P1.0;AC与P1.0等值
MOV C,AB;把位地址区30H单元中的数据送入位累加器C中
CLR AC;把P1.0中的内容清零
⑦DB(Define Byte)定义字节指令
DB是定义字节伪指令。
功能:从程序存储器指定地址单元开始存放若干个字节的数值或ASCII码字符。
格式:[标号:]DB字节数据或ASCII码字符
注意:多个字节数据或ASCII码字符之间要用逗号相隔,DB指令常用于定义8位的数据常数表。
例如:ORG 1000H
TAB:DB 50H,60,′A′
DB 01010111B,′6′
⑧DW(Define Word)定义字指令
DW是定义字伪指令。
功能:从程序存储器指定地址单元开始存放若干个字的数值。
格式:[标号:]DW字节数据或ASCII码字符
注意:多个字数据之间要用逗号相隔,DW指令常用于定义16位的地址表。
例如:ORG 1000H
TAB:DW 20H,50H,00H,60H
⑨DS(Define Space)定义存储空间指令
DS是定义存储空间伪指令。
功能:从程序存储器指定地址单元开始,保留表达式的值所规定的存储单元。
格式:[标号:]DS表达式
例如:ORG 1000H
TAB:DS 06H
DB 25H,35H
在上述源程序中,程序存储器从1000H单元开始保留6个单元,1006H单元存放25H,1007H单元存放35H。
4.汇编语言源程序的汇编
汇编语言源程序必须要转换为机器码(即目的程序),计算机才能执行,这个转换过程称为汇编。
汇编语言源程序的汇编可分为手工汇编和机器汇编两类。
①手工汇编是指用人脑通过查指令编码表把汇编语言源程序翻译成机器码的过程。
②机器汇编是用机器代替人脑并由专门的程序来进行的,这种程序称为汇编程序(不同的指令系统汇编程序不同)。机器汇编由计算机自动完成,汇编程序把用汇编语言编写的源程序翻译成由机器语言表示的目的程序。
③反汇编是在分析程序存储器已有的程序时,将机器语言翻译成汇编语言的转换过程。
源程序、汇编程序和目的程序之间的关系如图4-1所示。
图4-1 源程序、汇编程序和目的程序之间的关系
5.汇编语言源程序的编辑
汇编语言源程序一般在微机上借助编辑软件进行编写,可供使用的编辑工具有许多,如行编辑软件、屏幕编辑软件等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。