单片机汇编语言与程序设计

上传人:第*** 文档编号:61114723 上传时间:2018-11-24 格式:PPT 页数:84 大小:5.90MB
返回 下载 相关 举报
单片机汇编语言与程序设计_第1页
第1页 / 共84页
单片机汇编语言与程序设计_第2页
第2页 / 共84页
单片机汇编语言与程序设计_第3页
第3页 / 共84页
单片机汇编语言与程序设计_第4页
第4页 / 共84页
单片机汇编语言与程序设计_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《单片机汇编语言与程序设计》由会员分享,可在线阅读,更多相关《单片机汇编语言与程序设计(84页珍藏版)》请在金锄头文库上搜索。

1、第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.2 MCS-51指令系统简介 3.3汇编语言的编程方法,第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.1.1 汇编语言指令格式 3.1.2 描述操作数的简记符号 3.2 MCS-51指令系统简介 3.3汇编语言的编程方法,第3章单片机的汇编语言与程序设计,汇编语言(Assembly Language)用助记(字)符代替操 作码,用地址符号代替地址码的一种面向机器的程序 设计语言;,本章学习目标: 了解汇编语言的一般规则,借助指令手册能读懂汇编程序。,汇编语言特点代码精炼、执行速度快,但不便于编写 较复杂的程序;,汇编程序处理

2、过程输入源程序检查语法正确性(如有 语法错误,输出错误信息)翻译成二进制目标程序。,一条汇编语言指令中最多包含4个区段,其一般格式为: 标号: 操作码 操作数 ;注释,第3章单片机的汇编语言与程序设计,标号(标识符)当前指令行的符号地址,其值为 该指令的机器码首字节在ROM中的存放地址; 标号由英文字母开头的16个字符组成, 不区分大小写; 标号与(英文)冒号可以同时省略。,标号: 操作码 操作数 ;注释,标号: 操作码 操作数 ;注释,第3章单片机的汇编语言与程序设计,操作码是指令的操作行为,由操作码助记字符表征; 51单片机共有42种操作码助记符,不区分大小写。,MOV A,#12H ;

3、move (传送) SETB P1.0 ; set bit (置位) CJNE A,R0, START ;compare and jump if not equal (比较跳转),举例:,标号: 操作码 操作数 ;注释,第3章单片机的汇编语言与程序设计,操作数是指令的操作对象,用操作数简记符表示,不区分大小写; 操作数可以是3个、2个、1个或没有操作数; 操作数大于1时要用(英文)逗号隔开。,CJNE A,R0, START ;若AR0,转START ADD A,#10H ; A + 10H A CRL A ; A0 RET ;子程序返回,举例:,标号: 操作码 操作数 ;注释,第3章单片机的

4、汇编语言与程序设计,注释是对指令的解释性说明,用以提高程序的可读 性; 可用任何文字或符号描述,可以省略; 由(英文)分号开始,无需结束符号。,MOV A,#12H ;立即数12HA SETB P1.0 ; P1.01 CJNE A,R0, START ;若AR0,转START,举例:,第3章单片机的汇编语言与程序设计,汇编语言中标示符/十六进制地址/立即数的区别方法: 标示符标号或汇编符号统称为标识符,由英文字母 开头的16个字符组成。 例如 EAH,或C6A 16进制地址若存储单元地址的最高位值9时,应加 前缀“0 ” ,以区别标识符。 例如 0EAH,或 5AH 立即数出现在指令中的常数

5、叫做立即数,应加前缀 “ # ”以区别于地址 。 例如 #0EAH,或 #5AH,第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.1.1 汇编语言指令格式 3.1.2 描述操作数的简记符号 3.2 MCS-51指令系统简介 3.3汇编语言的编程方法,指令手册中,每条指令的操作数却是以简记符号表示的。,第3章单片机的汇编语言与程序设计,掌握简记符号规则便于阅读源程序(查指令手册),真实指令中一般都含有具体的操作数,例如: MOV A, R3 或 MOV A, #35H,第3章单片机的汇编语言与程序设计,第3章单片机的汇编语言与程序设计,简记符号的使用练习 MOV 20H,#34H 以d

6、irect取代20H,以#data取代#34H 指令原型为 MOV direct, #data, MOV R0,A 以Ri取代R0,A保持不变 指令原型为 MOV Ri, A, SJMP 30H 以rel取代30H 指令原型为 SJMP rel,第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.2 MCS-51指令系统简介 3.2.1 数据传送与交换类指令 3.2.2 算术运算类指令 3.2.3 逻辑运算及移位类指令 3.2.4 控制转移类指令 3.2.5 寻址方式 3.2.6 伪指令 3.3汇编语言的编程方法,指令系统计算机中全部指令的集合 51单片机共有111条指令,按功能可划分为

7、四大类:,第3章单片机的汇编语言与程序设计,数据传送与交换类(31条) 算术运算类(24条) 逻辑运算类(34条) 转移控制类(22条),*也可将分散于上述四类之中的位操作类指令汇总为第 五大类指令,指令CPU用于指挥功能部件完成某一指定动作的指示 和命令,可实现RAM、SFR和ROM之间的数据互传或交换,第3章单片机的汇编语言与程序设计,数据传送与交换类指令,(31条),第3章单片机的汇编语言与程序设计,第3章单片机的汇编语言与程序设计,数据传送与交换类指令共有8种操作码: MOV用于访问片内RAM MOVX用于访问片外RAM MOVC用于访问程序存储器 XCH和XCHD用于字节交换 SWA

8、P用于A内半字节交换 PUSH和POP用于堆栈操作,数据传送类指令的基本通式为: , 表示将源操作数(src)的内容传送给目的操作数 (dest) ,传送后源操作数中内容不变。 transfer具有三种具体形式:,第3章单片机的汇编语言与程序设计,MOV数据在片内RAM范围内传送 MOVX数据在A与片外RAM之间传送 MOVC数据在A与ROM之间传送,第3章单片机的汇编语言与程序设计,单向箭头表示只能从源到目的 双向箭头表示源和目的可以互换位置 弧线箭头表示源和目的相同(唯一) 箭头线旁边的文字是相应的操作码,基本规律: 立即数和ROM地址只能作为源操作数(单向箭头); 内外ROM与A的数据传

9、送只能用MOVC操作码助记符; 片外RAM与A的数据传送只能用MOVX操作码助记符; PUSH、POP、SWAP只有1个操作数(弧线箭头); 位数据传送只能在C(即Cy标志位)与bit间进行。,数据传送目的和源的快捷记忆法,实例1: 试分析并指出以下程序段运行后,21H单元的结果如何? MOV R1, #35H MOV A ,R1 MOV 21H,A,【解】分析思路如下: 将具体操作数还原为操作数简记符; 根据指令表查出相应指令功能; 推算出指令的执行结果。,答案:21H单元的结果为#35H,第3章单片机的汇编语言与程序设计,关注: MOV A,R1 (机器码E9H),工作原理,利用通用寄存器

10、查找操作数的做法称为寄存器寻址 通用寄存器:Rn,A,B,CY和DPTR五种类型 (一般不考虑A的作用,除非A是指令中唯一的操作数),根据机器码E9H先找到片内RAM中R1里存放的35H,然后将35H传送给A,即 操作结果是通过寄存器R1得到的。,第3章单片机的汇编语言与程序设计,实例2: 已知片内RAM44H单元为07H,试分析并指出以下程序运行后,21H单元的结果如何? MOV R0, #44H MOV A , R0 MOV 21H,A,【解】仿照上例的分析过程:,答案:上述程序段执行后,21H单元的结果为#07H。,第3章单片机的汇编语言与程序设计,关注:MOV A,R0(机器码E6H)

11、,工作原理: 根据机器码E6H先找到片内RAM中R0里存放的内容44H,然后以44H为RAM地址将其保存的内容07H传送给A。,R0里存放的是操作数的地址,而不是操作数结果。 利用寄存器作为地址指针间接查找操作数的做法称为寄存器间接寻址 可以进行间接寻址的寄存器称为间址寄存器 R0、R1和DPTR是51单片机仅有的三个间址寄存器,第3章单片机的汇编语言与程序设计,第3章单片机的汇编语言与程序设计,属于寄存器间接寻址方式的传送类指令,第3章单片机的汇编语言与程序设计,实例3: 已知ROM 2040H内容为27H,试分析如下程序段并指出其功能。,MOV DPTR,#2010H MOV A,#30H

12、 MOVC A,A+DPTR MOV 30H,A,第3章单片机的汇编语言与程序设计,【解】仿照上例的分析过程:,答案:将ROM 2040H单元的内容送到片内RAM 30H单元中。,第3章单片机的汇编语言与程序设计,关注:MOVC A,A+DPTR(机器码93H),第3章单片机的汇编语言与程序设计,工作原理: 根据机器码93H先找出A中存放的内容30H,再找出DPTR中存放的内容2010H,然后以这两项内容之和2040H为ROM地址,将其存放的内容27H交给A。,第3章单片机的汇编语言与程序设计,第3章单片机的汇编语言与程序设计,利用两个寄存器内容之和进行间接查找操作数的做法称为变址寻址; A为

13、变址寄存器,DPTR为基址寄存器; PC也可作为基址寄存器,相应指令为MOVC A,A+PC,可实现A(A+PC)的功能。,MOVC A,A+DPTR也具有寄存器间接寻址功能,但该操作数的地址是利用A与DPTR两个寄存器内容之和间接取得的,A(A+DPTR),第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.2 MCS-51指令系统简介 3.2.1 数据传送与交换类指令 3.2.2 算术运算类指令 3.2.3 逻辑运算及移位类指令 3.2.4 控制转移类指令 3.2.5 寻址方式 3.2.6 伪指令 3.3汇编语言的编程方法,第3章单片机的汇编语言与程序设计,算术运算类指令,可实现加、

14、减、乘、除和增1、减1等运算功能,(24条),第3章单片机的汇编语言与程序设计,算术运算类指令共有8种操作码: ADD用于不带进位加法 ADDC用于带进位加法 SUBB用于带借位减法 INC和DEC用于加1和减1 MUL用于乘法 DIV用于除法 DA用于十进制加法调整,第3章单片机的汇编语言与程序设计,特点: 除加1和减1外,都需以累加器A为目的操作数; 一般都会影响PSW中的CY、AC、OV和P四个标志位。,AC,算术运算类指令快捷记忆法,第3章单片机的汇编语言与程序设计,实例4:试解读如下程序并说明其实现的主要功能,MOV A,#34H ADD A,#0E7H MOV 40H,A MOV

15、A,#12H ADDC A,#0FH MOV 41H,A,【解】指令分析过程如下:,答案:实现两个16位数(1234H与0FE7H)的加法运算,并将结果221BH存入片内RAM 40H41H单元。,第3章单片机的汇编语言与程序设计,关注:MOV A,#34H(机器码7434H),工作原理: 根据机器码7434H将指令中包含的立即数34H送到累加器A中。,这类指令的操作数就存在于指令自身之中; 这种以指令中存在的立即数(#data或#data16)作为操作数的做法称为立即寻址。,第3章单片机的汇编语言与程序设计,实例5:试解读如下程序并说明其功能,MOV A,#17H MOV B,#68H MU

16、L AB MOV 30H,A MOV 31H,B,【解】分析过程如下:,答案:实现两个8位数(17H与68H)的乘法运算,并将乘积958H的高8位和低8位分别存入片内RAM 31H和30H单元。,第3章单片机的汇编语言与程序设计,3.1汇编语言概述 3.2 MCS-51指令系统简介 3.2.1 数据传送与交换类指令 3.2.2 算术运算类指令 3.2.3 逻辑运算及移位类指令 3.2.4 控制转移类指令 3.2.5 寻址方式 3.2.6 伪指令 3.3汇编语言的编程方法,第3章单片机的汇编语言与程序设计,逻辑运算及移位类指令,可实现与、或、异或、求反、置1、清0、移位等功能,(34条),第3章单片机的汇编语言与程序设计,逻辑运算及移位类指令共有10种操作码: AN

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号