单片机汇-编语言程序设计.ppt
《单片机汇-编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《单片机汇-编语言程序设计.ppt(65页珍藏版)》请在冰豆网上搜索。
4-1汇编程序约定汇编程序约定4-2汇编程序设计步骤汇编程序设计步骤4-3顺序程序顺序程序4-4分支程序分支程序4-5循环程序循环程序4-6算术运算程序算术运算程序2022/11/1114-14-1汇编程序约定汇编程序约定汇编语言程序:
汇编语言程序:
用汇编语言编写的、完成特定功能的指令序列。
用汇编语言编写的、完成特定功能的指令序列。
汇编程序:
汇编程序:
能能将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程程序序的系统软件。
的系统软件。
汇编语言程序到机器语言程序的转换过程称为汇编。
汇编语言程序到机器语言程序的转换过程称为汇编。
11、手工汇编:
、手工汇编:
人工查指令表汇编。
用于设计短小程序或调试人工查指令表汇编。
用于设计短小程序或调试程序的场合。
程序的场合。
22、机器汇编:
、机器汇编:
用汇编程序进行汇编。
用汇编程序进行汇编。
2022/11/112源程序使用机器汇编要考虑汇编程序的约定:
源程序使用机器汇编要考虑汇编程序的约定:
11)按指令格式和语法规则编写程序。
按指令格式和语法规则编写程序。
常数的表示:
常数的表示:
十进制数:
十进制数:
2020十六进制数:
十六进制数:
8787HH,0F0H0F0H二进制数:
二进制数:
0101100101011001BB字符:
字符:
HH字符串:
字符串:
“Hello”Hello”。
22)使用伪指令提供汇编信息。
使用伪指令提供汇编信息。
2022/11/113汇编的主要任务:
汇编的主要任务:
11)确定程序中每条汇编语言指令的指令机器码。
)确定程序中每条汇编语言指令的指令机器码。
22)确定每条指令在存储器中的存放地址。
)确定每条指令在存储器中的存放地址。
33)提供错误信息。
)提供错误信息。
44)提供目标执行文件()提供目标执行文件(*.*.OBJOBJ/*./*.HEX)HEX)和和列表文件(列表文件(*.*.LSTLST)。
)。
汇编语言的言的语句格式句格式语句行由四个字段句行由四个字段组成成:
标号:
号:
操作操作码操作数操作数;注;注释括括号号内内的的部部分分可可以以根根据据实际情情况况取取舍舍。
每每个个字字段段之之间要要用用分分隔隔符符分分隔隔,可可以以用用作作分分隔隔符符的的符符号号有有空空格格、冒冒号号、逗逗号号、分分号号等。
等。
如:
如:
LOOPLOOP:
MOVAMOVA,#7FH#7FH;A7FHA7FH2022/11/114一、标号一、标号标标号号是是语语句句地地址址的的标标志志符符号号,用用于于引引导导对对该该语语句句的非顺序访问。
的非顺序访问。
有关标号的规定有关标号的规定为:
为:
标标号号由由1188个个ASCIIASCII字字符符组组成成。
第第一一个个字字符符必必须须是是字字母,其余字符可以是字母、数字或其他特定字符;母,其余字符可以是字母、数字或其他特定字符;不不能能使使用用该该汇汇编编语语言言已已经经定定义义了了的的符符号号作作为为标标号号。
如指令助记符、寄存器符号名称等;如指令助记符、寄存器符号名称等;标号后边必须跟冒号。
标号后边必须跟冒号。
二、操作码二、操作码操操作作码码用用于于规规定定语语句句执执行行的的操操作作。
它它是是汇汇编编语语句句中唯一不能空缺的部分。
它由指令助记符表示。
中唯一不能空缺的部分。
它由指令助记符表示。
2022/11/115三、操作数三、操作数操操作作数数用用于于给给指指令令的的操操作作提提供供数数据据或或地地址址。
在在一一条条汇汇编编语语句句中中操操作作数数可可能能是是空空缺缺的的,也也可可能能包包括括一一项项,还还可可能能包包括括两两项项或或三三项项。
各各操操作作数数间间以以逗逗号号分分隔隔。
操作数字段的内容可能包括以下几种情况:
操作数字段的内容可能包括以下几种情况:
(11)工作寄存器名;)工作寄存器名;(22)特殊功能寄存器名;)特殊功能寄存器名;(33)标号名;)标号名;(44)常数;)常数;(55)符号)符号“$”$”,表示程序计数器,表示程序计数器PCPC的当前值;的当前值;(66)表达式。
)表达式。
2022/11/116四、注释四、注释注注释释不不属属于于汇汇编编语语句句的的功功能能部部分分,它它只只是是对对语语句句的的说说明明。
注注释释字字段段可可以以增增加加程程序序的的可可读读性性,有有助助于于编编程程人人员员的的阅阅读读和和维维护护。
注注释释字字段段必必须须以以分分号号“;”开开头头,长长度度不不限限,当当一一行行书书写写不不下下时时,可可以以换换行行接接着着书书写写,但但换换行行时时应应注注意意在在开开头头使使用用分分号号“;”。
汇编语言指令类型:
汇编语言指令类型:
1.1.机器指令:
机器指令:
指令系统中的全部指令,每条指令有对应的机器代码。
指令系统中的全部指令,每条指令有对应的机器代码。
2.2.伪指令:
伪指令:
汇编控制指令,仅提供汇编信息,没有指令代码。
汇编控制指令,仅提供汇编信息,没有指令代码。
2022/11/11733.宏指令:
宏指令:
宏汇编功能:
将需要多次反复执行的程序段定义成一个宏指令宏汇编功能:
将需要多次反复执行的程序段定义成一个宏指令名(宏定义),编程时,可在程序中使用宏指令名(宏定义),编程时,可在程序中使用宏指令名来替代一段程序(宏调用)。
名来替代一段程序(宏调用)。
宏定义过程宏定义过程:
宏指令名宏指令名MACRO形式参数形式参数;定义程序段;定义程序段ENDM宏调用过程:
宏调用过程:
宏指令名宏指令名实际参数实际参数宏指令名宏指令名实际参数实际参数2022/11/118二、汇编控制指令二、汇编控制指令(伪指令伪指令):
伪指令是放在汇编语言源程序中用于指示汇伪指令是放在汇编语言源程序中用于指示汇编程序如何对源程序进行汇编的指令,它不同编程序如何对源程序进行汇编的指令,它不同于指令系统中的指令,指令系统中的指令在汇于指令系统中的指令,指令系统中的指令在汇编程序汇编时能够产生相应的指令代码,而伪编程序汇编时能够产生相应的指令代码,而伪指令在汇编程序汇编时不会产生代码,只是对指令在汇编程序汇编时不会产生代码,只是对汇编过程进行相应的控制和说明。
汇编过程进行相应的控制和说明。
伪指令通常在汇编语言源程序中用于定义数伪指令通常在汇编语言源程序中用于定义数据、分配存储空间、控制程序的输入输出等。
据、分配存储空间、控制程序的输入输出等。
MCS-51MCS-51汇编语言源程序相对于一般的微型计算汇编语言源程序相对于一般的微型计算机汇编语言源程序结构简单,伪指令数目少,机汇编语言源程序结构简单,伪指令数目少,常用的伪指令只有几条。
常用的伪指令只有几条。
2022/11/1191.1.ORGORG起始地址指令:
指明程序和数据块起始地址。
起始地址指令:
指明程序和数据块起始地址。
该该指指令令的的功功能能是是向向汇汇编编程程序序说说明明下下面面紧紧接接的的程程序序段段或或数数据据段段存存放放的的起起始始地地址址。
表表达达式式通通常常为为1616进进制制地地址址,也可以是已定义的标号地址。
也可以是已定义的标号地址。
常用伪指令及其功能:
常用伪指令及其功能:
ORG8000HORG8000HSTARTSTART:
MOVAMOVA,#30H#30H此此时时规规定定该该段段程程序序的的机机器器码码从从地地址址8000H8000H单单元元开开始始存存放。
放。
在在每每一一个个汇汇编编语语言言源源程程序序的的开开始始,都都要要设设置置一一条条ORGORG伪伪指指令令来来指指定定该该程程序序在在存存储储器器中中存存放放的的起起始始位位置置。
若若省省略略ORGORG伪伪指指令令,则则该该程程序序段段从从0000H0000H单单元元开开始始存存放放。
在在一一个个源源程程序序中中,可可以以多多次次使使用用ORGORG伪伪指指令令规规定定不不同同程程序序段段或或数数据据段段存存放放的的起起始始地地址址,但但要求地址值由小到大依序排列要求地址值由小到大依序排列,不允许空间重叠。
,不允许空间重叠。
2022/11/11102DB伪指令伪指令格式:
格式:
标号:
标号:
DB项或项表项或项表DB伪指令用于定义字节数据,可以伪指令用于定义字节数据,可以定义一个字节,也可定义多个字节,字义定义一个字节,也可定义多个字节,字义多个字节时,两两之间用逗号间隔,定义多个字节时,两两之间用逗号间隔,定义的多个字节在存储器中是连续存放的。
定的多个字节在存储器中是连续存放的。
定义的字节可以是一般常数,也可以为字符,义的字节可以是一般常数,也可以为字符,还可以是字符串,字符和字符串以引号括还可以是字符串,字符和字符串以引号括起来,字符数据在存储器中以起来,字符数据在存储器中以ASCII码形式码形式存放。
存放。
在定义时前面可以带标号,定义的标号在定义时前面可以带标号,定义的标号在程序中是起始单元的地址。
在程序中是起始单元的地址。
【例例3-19】ORG3000HTAB1:
DB12H,34HDB5,A,abc汇编后,各个数据在存储单元中的存放汇编后,各个数据在存储单元中的存放情况如下:
情况如下:
12H34H35H41H61H62H63H3000H3001H3002H3003H3004H3005H3006H2022/11/11113DW伪指令伪指令格式:
格式:
标号:
标号:
DW项或项表项或项表这条指令与这条指令与DB相似,但用于相似,但用于定义字数据。
项或项表指所定义的一定义字数据。
项或项表指所定义的一个字在存储器中占两个字节。
汇编时,个字在存储器中占两个字节。
汇编时,机器自动按低字节在前,高字节在后,机器自动按低字节在前,高字节在后,即低字节存放在低地址单元,高字节即低字节存放在低地址单元,高字节存放在高地址单元。
存放在高地址单元。
【例例3-20】ORG3000HTAB2:
DW1234H,5678H汇编后,各个数据在存储单元中的汇编后,各个数据在存储单元中的存放情况如下:
存放情况如下:
34H12H78H56H3000H3001H3002H3003H2022/11/11124DS伪指令伪指令格式:
格式:
标号:
标号:
DS数值表达数值表达式式该伪指令用在存储器中保留该伪指令用在存储器中保留一定数量的字节单元。
保留存贮一定数量的字节单元。
保留存贮空间主要为以后存放数据。
保留空间主要为以后存放数据。
保留的字节单元数由表达式的值决定。
的字节单元数由表达式的值决定。
【例例3-21】ORG2000HTAB1:
DB12H,34HDS4HDB5汇编后,存储单元中的分配情况汇编后,存储单元中的分配情况如下:
如下:
12H34H-35H3000H3001H3002H3003H3004H3005H3006H2022/11/11135EQU伪指令伪指令格式:
符号格式:
符号EQU项项该伪指令的功能是将指令中的项的值赋予该伪指令的功能是将指令中的项的值赋予EQU前前面的符号。
项可以是常数、地址标号或表达式。
以后可面的符号。
项可以是常数、地址标号或表达式。
以后可以通过使用该符号使用相应的项。
以通过使用该符号使用相应的项。
【例例3-22】TAB1EQU1000HTAB2EQU2000H汇编后汇编后TAB1、TAB2分别等于分别等于1000H、2000H。
程序。
程序后面使用后面使用1000H、2000H的地方就可以用符号的地方就可以用符号TAB1、TAB2替换。
替换。
用用EQU伪指令对某标号赋值后,该符号的值在整个程伪指令对某标号赋值后,该符号的值在整个程序中不能再改变。
序中不能再改变。
2022/11/11147END伪指令伪指令格式:
格式:
END该指令放于程序最后位置,用于指明汇编语言源程该指令放于程序最后位置,用于指明汇编语言源程序的结束位置,当汇编程序汇编到序的结束位置,当汇编程序汇编到END伪指令时,汇编结伪指令时,汇编结束。
束。
END后面的指令,汇编程序都不予处理。
一个源程序后面的指令,汇编程序都不予处理。
一个源程序只能有一个只能有一个END命令,否则就有一部