当前位置:文档之家› 单片机原理及其应用课件--第四章

单片机原理及其应用课件--第四章

12
单片机原理及其应用
扬州大学
4.2 汇编语言程序设计
4.2.1 汇编语言程序设计步骤
4.2.2 汇编语言程序的汇编
4.2.3 顺序程序 4.2.4 分支程序 4.2.5 循环程序 4.2.6 子程序
4.2.7 查找程序
4.2.8 码制转换程序
4.2.9 程序举例
13
单片机原理及其应用
扬州大学
4.2.1 汇编语言程序设计步骤
11
单片机原理及其应用
扬州大学
ORG 1600H ABC: DW 1234H, 4567H (1600h 12H 34H 45H 67H)
5.DS :定义存储区命令 从指定的地址单元开始,保留一定数量存储单元。 ORG 1000H BASE: DS 50H 6.BIT:位定义命令 赋字符名为某个位地址值。 EA: BIT 0AFH 7.END:汇编结束命令 告知汇编程序源程序结束
1000H A, 40H ; 取数 A, #0,NZEAR ; 非零,转 NEGT ;(A)=0,转存结果 ACC.7,POSI ; (A)>0,转 A, #81H(原码); A ← -1 NEGT A,#1H ;A←1 41H,A ; 存结果 $ ; 暂停
27
单片机原理及其应用
扬州大学
3.多向分支程序设计举例
7
单片机原理及其应用
扬州大学
2.汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令) 组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下:
标号: 操作码 START: MOV 操作数 A,30H ;注释 ;A←(30H)
8
单片机原理及其应用
扬州大学
MOV A, #0 ; 赋初值 (4-1) (p.69) MOV R1, #10 ;计数器赋初值 MOV R2, #00000011B LOOP: ADD A, R2 ;累加 DJNZ R1, LOOP HERE: SJMP HERE 标号:即符号地址,需要时加上。标号后加冒号;标号由 字母开头(1-8字符),标号不能与指令助记符、预定 义符号相同。 操作数:数值操作数,根据需要可用16进制 (后缀H)、10 进制、二进制 (后缀B) 表示。16进制数以A~F开头时, 前面要加’0’。 $符号的使用:程序最后一句可用 SJMP $ 代替。 注释:以分号开头,根据需要对于指令的作用加以解释。 9 START:
单片机原理及其应用
扬州大学
2.EQU :赋值命令 给标号赋予一个确定的数值。其它语句可以引用这 个标号 TTY: EQU 1080H
3.DB :定义数据字节命令 把数据以字节的形式存放在连续存储单元中。 ORG 1500H HERE: DB 56H,0A7H,35,‘A’ (1500h 56H A7H 23H 41H) 4.DW :定义数据字命令 按字的形式把数据存放在连续存储单元中。
17
单片机原理及其应用
扬州大学
4.2.3 顺序程序
顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一 条指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中(低位 在31H,高位在32H)。 程序流程如图4-1所示。
扬州大学
【例4.5】(4-14)根据(31H 30H)的内容决定程序流向 (31H)<80 (p.90) JMP6: MOV DPTR,#TAB6 ; 转移指令表首地址 MOV A,30H ; 取低字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成低字节转移偏移量 MOV R3, A ; 暂存 MOV A, B ; A←低字节偏移量高8位 ADD A, DPH MOV DPH, A ; 加到DPH中 MOV A, 31H ; 取高字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成高字节转移偏移量 ADD A, DPH ; 加入DPH MOV DPH, A
21
开始
取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 保存平方和
结束
图4-州大学
参考程序如下: ORG 2000H MOV A,30H MOV B,A MUL AB MOV R1,A MOV A,31H MOV B,A MUL AB ADD A,R1 MOV 32H,A SJMP $ END
1.分析问题 完成什么任务,解决什么问题;已知的数据,运算 精度和速度; 2.确定算法 用何种方法解决问题;多个算法的比较;怎样组织 数据;
3.设计程序流程图 把算法和解决问题的步骤具体化;通过流程图掌握 程序的总体结构;
14
单片机原理及其应用
扬州大学
4.分配内存单元和I/O端口地址 片内RAM划分:工作寄存器组;堆栈区;其它暂 存区和缓冲区等;片外RAM; 确定各I/O端口的地址 5.编写汇编语言源程序 按流程图编写源程序;程序通常由主程序、子程 序、中断服务程序等构成。 6.调试程序 对程序的各个部分分别调试;有些还要与硬件系 统连接后调试; 切记:编程不易,调试更难。 15 只有掌握了程序的调试、测试才算会编程。
单片机原理及其应用
扬州大学
4.1.3 伪指令
用汇编语言编写的程序必须经汇编(翻译)成机 器代码,单片机才可运行它。为了控制汇编程序如何 完成源程序的汇编过程并产生目标程序,需要在源程 序中加入汇编控制命令,即伪指令。 1.ORG :汇编起始地址命令 用来说明ORG指令以下程序段在存储器中存放的起 始地址。 例如 ORG 1000H START: MOV A,#20H MOV B,#30H ┇ 一个程序中可多次使用ORG指令,地址要由小到大 排列。 10

; 转移指令表首地址 取分支转移参量送A 乘数3送B (3字节指令) 形成转移偏移量 暂存偏移量低8位 A←偏移量高8位 加到DPH中 取回偏移量低8位 分支跳转[PC ← (A)+(DPTR)]
TAB5: LJMP LJMP

PRG0 PRG1
; 转移指令表
LJMP
PRGn
29
单片机原理及其应用
条件满足?
N
条件满足?
N B
Y A (a) A (b) K=? K=0 K=1 … K=n A0 A1 …… An
Y
(c)
图4-3 分支程序结构流程图
24
单片机原理及其应用
扬州大学
分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 2.双向分支程序设计举例 【例4.3】(4-12) 求符号函数的值 (p.88)
【例4.4】(4-13) 根据R2的值转向n个分支程序。(p.90) (R2)=0,转向PRG0; (R2)=1,转向PRG1;

(R2)=n,转向PRGN; 解:利用JMP @A+DPTR 指令直接给PC赋值,使程 序实现转移。
28
单片机原理及其应用
扬州大学
参考程序如下: JMP6: MOV DPTR,#TAB5 MOV A,R2 ; MOV B,#3 ; MUL AB ; MOV R6, A ; MOV A, B ; ADD A, DPH MOV DPH, A ; MOV A, R6 ; JMP @A+DPTR ;
单片机原理及其应用
扬州大学
单片机原理接口及其应用
(Principle and Application of Single Chip Microcomputer)
1
单片机原理及其应用
扬州大学
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章
概述 MCS-51单片机硬件结构 MCS-51寻址方式和指令系统 MCS-51汇编程序设计 中断系统 定时器/计数器及串行口 存储器扩展 接口电路扩展 应用举例
;取数 ;取低4位 ;转换成ASCII码 ;保存结果 ;取数 ;高4位与低4位互换 ;取低4位(原来的高4位) ;转换成ASCII码 ;保存结果
20
单片机原理及其应用
扬州大学
【例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结果存于 32H单元。
解:两数均小于10,故两数的平方和可存放于一个 字节,可利用乘法指令求平方。 程序流程如图4-2所示。
Y= 1 0 -1 X>0 X=0 X<0
解:X为有符号数,存在40H单元。Y存在41H单元。 程序流程如图4-4所示。
25
单片机原理及其应用
扬州大学
图4-4 例4.3程序流程图
26
单片机原理及其应用
扬州大学
参考程序如下: ORG MOV CJNE AJMP NZEAR: JNB MOV AJMP POSI: MOV NEGT: MOV SJMP END
30
单片机原理及其应用
扬州大学
MOV A , R3 JMP @A+DPTR ┇ TAB6: LJMP PRG0 LJMP PRG1 ┇ LJMP PRGn
18
开始 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
图4-1 拆字程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H ANL A,#0FH ADD A,#30H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,#30H MOV 32H,A SJMP $ END
2
单片机原理及其应用
扬州大学
第4章 MCS-51汇编程序设计
4.1 汇编语言基本概念
4.2 汇编语言程序设计
相关主题