文档介绍:第4章 80C51单片机汇编语言程序设计
单片机程序设计语言概述
汇编语言程序的基本结构形式
80C51 单片机汇编语言程序设计举例
单片机汇编语言源程序的编辑和汇编
80C51 单片机汇编语言伪指令
单片机程序设计语言概述
机器语言和汇编语言
1、机器语言
用二进制代码“0”和“1”表示指令和数据的程序设计语言,是计算机能直接识别并执行的指令。
优点:执行速度快、占用内存少。
缺点:识别难、记忆难。
2、汇编语言
用助记符和专门的语言规则表示指令的功能和特征。
优点:助记符与机器指令一一对应。比机器语言直观、
易懂、易记。非常适合于实时控制的需要。
缺点:难以记忆和使用,程序设计的技巧性较高,编程
难度较大。要求使用者必须精通单片机的硬件系
统和指令系统。缺乏通用性,程序不易移植。
单片机使用的高级语言
对于8051单片机,现有4种语言支持,即汇编、PL/M、C和BASIC。
C语言最终得到广泛应用。
可以大大提高单片机应用系统研制的开发效率。移植性好。
高级语言的不足:生成的目标代码较长,导致应用程序运行速度较慢。
80C51 单片机汇编语言的语句格式
80C51汇编语言的语句格式如下:
[<标号>] : <操作码> [<操作数>]; [<注释>]
1. 标号
是语句地址的标志符号,标号的几点规定:
1~8个ASCII字符组成,第一个字符必须是字母。
不能使用本汇编语言已经定义的符号作为标号。
标号后面必须跟以冒号“:”。
同一标号在一个程序中只能定义一次。
标号可有可无。
错误的标号正确的标号
1BT : BT1
BEGIN BEGIN :
TA+TB: TATB:
ADD: ADD1:
2. 操作码
用于规定语句执行的操作内容,用指令助记符表示。不能空缺。
3. 操作数
操作数用于为指令操作提供数据。可以是空白,也可
能有1~3个操作数,各操作数之间以逗号分隔。
4. 注释
不属于语句的功能部分,只是对语句的解释说明,以
“;”开头。
5. 分界符(分隔符)
用于把语句中的各部分隔开,以便于区分。分界符包
括空格、冒号、分号或逗号等符号。
汇编语言程序的基本结构形式
三种基本结构形式:顺序程序结构,分支程序结构,
循环程序结构。
顺序程序结构
顺序结构程序是最简单的程序结构。程序既无分支、循环,也不调用子程序,程序执行时一条接一条地按顺序执行指令。
(1)分析任务
(2)确定算法
(3)画流程图
(4)编写程序
(5)上机调试
2、程序设计的一般步骤
当接到程序设计的任务后,首先对任务进行详尽的分析,搞清楚已知的数据和想要得到的结果,程序应该完成何种的功能。明确在程序设计时应该“做什么”。
根据实际问题的要求和指令系统的特点,确定解决问题的具体步骤。根据任务要求,对不同的计算方法进行比较,选择最适宜的算法。解决“怎样做”的问题。
将解决问题的具体步骤用一种约定的几何图形、指向线和必要的文字说明描述出来,用图形的方法描绘解决问题的思路。
用指令的形式将程序流程图实现出来。
查错、改错,对程序进行优化。
50H
51H
52H
53H
54H
55H
N1高字节
N1中字节
N1低字节
N2高字节
N2中字节
N2低字节
(1)分析任务
(2)确定算法
(3)画流程图
(4)编写程序
(5)上机调试
例:3字节无符号数相加:其中被加数在内部RAM的50H、
51H和52H单元中;加数在内部RAM的53H、54H和55H单元
中;要求把相加之和存放在50H、51H和52H单元中,进位存
放在位寻址区的20H位中。
MOV R0, #52H;被加数的低字节地址
MOV R1, #55H;加数的低字节地址
MOV A, ***@R0
ADD A, ***@R1 ;低字节相加
MOV ***@R0, A ;存低字节相加结果
DEC R0
DEC R1
MOV A, ***@R0
ADDC A, ***@R1;中间字节带进位相加
MOV ***@R0, A ;存中间字节相加结果
DEC R0
DEC R1
MOV A, ***@R0
ADDC A, ***@R1;高字节带进位相加
MOV ***@R0, A ;存高字节相加结果
CLR A
ADDC A, #00H;进位送00H位保存
MOV R0, #20H;存放进位的单元地址
MOV ***@R0, A
分支结构也称为选择结构。为分支需要,程序设计时
应给程序段的起始地址赋予一个地址标号,以供选择分支
使用。分支结构又可分为单分支结构和多分支结构。
1. 单分支程序结构
单分支程序结构即二中选一,是通过条件判断实现
的。一般都使用