《任务八学习、应用位操作指令》由会员分享,可在线阅读,更多相关《任务八学习、应用位操作指令(21页珍藏版)》请在金锄头文库上搜索。
1、下午9时32分,单片机应用技术,1,任务八 学习、应用位操作指令,1. 位传送指令(2条) MOV C, bit ;(bit)Cy MOV bit, C ;(Cy)bit 2. 位置位、清零、取反指令(6条) SETB C ; 1Cy CLR bit ; 0bit CPL C ; cy SETB bit ; 1bit CLR C ; 0Cy CPL bit ;bit 3. 位运算指令(4条) ANL C, bit ;(Cy)( bit)Cy ANL C, /bit ;(Cy)Cy ORL C, bit ;(Cy)( bit)Cy ORL C, /bit ;(Cy)Cy,下午9时32分,单片机应
2、用技术,2,4、位控制转移指令(5条) JC re ; 若(Cy)=1,则PC+2+relPC,程序转移执行; 若(Cy)=0,则PC+2PC,程序顺序执行 JNC rel ;若(Cy)=0,则PC+2+relPC,程序转移执行; 若(Cy)=1,则PC+2PC,程序顺序执行 JB bit, rel ;若(bit)=1,则PC+3+relPC,程序转移执行; 若(bit)=0,则PC+3PC,程序顺序执行 JNB bit, rel; 若(bit)=0,则PC+3+relPC,程序转移执行; 若(bit)=1,则PC+3PC,程序顺序执行 JBC bit, rel;若(bit)=1,则PC+3+
3、relPC,程序转移执行 且 0bit; 若(bit)=0,则PC+3PC,程序顺序执行,任务八 学习、应用位操作指令,下午9时32分,单片机应用技术,3,【例3-29】试编程实现将内RAM中以BUF开始的一批有符号数,将正数送外RAM的正数区,负数送外RAM的负数区,遇到0中止。(设正数区起点地址是30H,负数区起点地址是60H) 源程序: MOV R0, #BUF ; 将数据块的首地址送到R0中 MOV R1, #30H ;将正数的首地址送到R1中 MOV DPTR, #0060H ;将负数的首地址送到DPTR中 MP3: MOV A, R0 ; 将数据读到累加器A中 JNZ MP4 ;判
4、断A中数据不是0 SJMP $ ; 累加器A中数据是0中止 MP4: JB ACC.7 ,MP5 ; 累加器A中数据是负数? MOVX R1, A ;将正数送正数区 INC R0 ;指向数据块的下一个数据 INC R1 ;指向正数区的下一个单元 MP5: MOVX DPTR, A ;将负数送负数区 INC R0 ;指向数据块的下一个数据 INC DPTR ;指向负数区的下一个单元 AJMP MP3 ;返回继续 END,任务八 学习、应用位操作指令,下午9时32分,单片机应用技术,4,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,伪指令又称指示性指令,具有和指令类似的形
5、式,但汇编时伪指令并不产生可执行的目标代码,只是对汇编过程进行某种控制或提供某些汇编信息。 定位伪指令ORG 定义字节数据伪指令DB 定义字数据伪指令DW 定义空间伪指令DS 符号定义伪指令EQU或 数据赋值伪指令DATA 数据地址赋值伪指令XDATA 汇编结束伪指令END,下午9时32分,单片机应用技术,5,1. 定位伪指令ORG 格式:标号: ORG 地址表达式 功能:规定程序块或数据块存放的起始位置 例如: ORG 1000H ; MOV A,#20H 存放于1000H开始的单元。 表示下面指令MOV A,#20H存放于1000H开始的单元。 说明:程序中可以出现多个ORG指令。 2.
6、定义字节数据伪指令DB 格式:标号: DB 字节数据表 功能:字节数据表可以是多个字节数据、字符串或表达式,它表示将字节数据表中的数据从左到右依次存放在指定地址单元。 例如: ORG 1000H TAB:DB 2BH,0A0H,A,2*4 ; 表示从1000H单元开始的地方存放数据2BH,0A0H,41H(字母A的ASCII码),08H。,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,下午9时32分,单片机应用技术,6,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,3. 定义字数据伪指令DW 格式:标号: DW 字数据表 功能: 与DB类似,
7、但DW定义的数据项为字,包括两个字节,存放时高位在前,低位在后。 例如: ORG 1000H DATA:DW 324AH,3CH ; 表示从1000H单元开始的地方存放数据32H,4AH,00H,3CH(3CH以字的形式表示为003CH)。 4. 定义空间伪指令DS 格式:标号: DS 表达式 功能:从指定的地址开始,保留多少个存储单元作为备用空间。 例如: ORG 1000H BUF:DS 50 TAB:DB 22H ;表示从1000H开始的地方预留50(1000H1031H)个存储字节空间,22H存放在1032H单元。,下午9时32分,单片机应用技术,7,任务八 初步掌握MCS51单片机汇
8、编程序设计,认知1 了解单片机伪指令,5. 符号定义伪指令EQU或= 格式:符号名 EQU 表达式 符号名=表达式 功能:将表达式的值或某个特定汇编符号定义为一个指定的符号名,只能定义单字节数据,并且必须遵循先定义后使用的原则,因此该语句通常放在源程序的开头部分。 例如: SUM EQU 21H MOV A,SUM ;执行指令后,累加器A中的值为21H中的数据 6. 数据赋值伪指令DATA 格式:符号名 DATA 表达式 功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,只能定义单字节数据,但可以先使用后定义,因此用它定义数据可以放在程序末尾进行数据定义。 举例: MOV A,#LEN
9、 LEN DATA 10,下午9时32分,单片机应用技术,8,任务八 初步掌握MCS51单片机汇编程序设计,认知1 了解单片机伪指令,7. 数据地址赋值伪指令XDATA 格式:符号名 XDATA 表达式 功能:将表达式的值或某个特定汇编符号定义一个指定的符号名,可以先使用后定义,并且用于双字节数据定义。 举例: DELAY XDATA 0356H LCALL DELAY ;执行指令后,程序转到0356H单元执行 8. 汇编结束伪指令END 格式:标号: END 功能:汇编语言源程序结束标志,用于整个汇编语言程序的末尾处。,下午9时32分,单片机应用技术,9,程序设计概述设计语言,最早人们只能用
10、机器语言(二进制)编写程序; 为了方便记忆,人们开始用助记符形式的汇编语言编写程序,称为低级语言。然后再用汇编系统将其翻译成机器语言,该过程称为汇编; 为了用更接近人的语言编写程序,程序设计师们发明了高级语言,如: BASIC、FORTRAN、PASCAL、 C、JAVA 然后再用编译系统将其翻译成机器语言,该过程称为编译; 机器只能识别机器语言。所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将用汇编语言编写的源程序汇编成机器语言; 由低级或高级语言构成的程序称为源程序,由机器语言构成的程序称作目标程序;,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机
11、应用技术,10,1. 汇编程序设计步骤 (1) 分析问题,确定算法 (2) 画出程序流程图 编写较复杂的程序,画出程序流程图是十分必要的。所谓程序流程图也称为程序框图,是根据控制流程设计的,它直接反映了整个系统以及各个部分之间的相互关系,同时也反映操作顺序,因而有助于分析出错原因。 (3) 分配内存工作区及有关端口地址 (4) 编制汇编源程序 (5) 仿真调试程序 (6) 固化程序,1、单片机汇编语言程序设计的基本步骤如下,认知2 掌握汇编语言程序设计与汇编,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,11,顺序程序:顺序程序是最简单、最基本的程序结构,其特点
12、是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。 分支程序:分支程序是通过转移指令对相应条件的判断实现改变程序的执行方向的设计方法。 循环程序:在程序中需要反复的执行的程序段,为了避免在程序中多次的编写,可以通过利用条件转移或无条件转移指令来控制程序的执行。 子程序结构:把实现一定功能的程序编制好,供其他程序调用。,单片机汇编语言程序主要的几种程序设计方法:,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,12,顺序结构 结构特点: 按指令的先后顺序依次执行。 例:将内RAM20H单元的两个压缩BCD码拆开变成ASCII码,存入21H、22H单元。(假设
13、20H中的BCD码为00110100),什么是BCD码? 什么是ASII码?,0011,压缩BCD码,0011,0011,0100,低四位ASII码,高四位ASII码,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,13,方法1:将BCD码除以10H,恰好是将BCD码分别移到了A、B的低4位。然后再各自与30H相或,即成为ASCII码。,方法2:利用半字节交换指令来实现。,任务八 初步掌握MCS51单片机汇编程序设计,认知2 掌握汇编语言程序设计,下午9时32分,单片机应用技术,14,ORG 0000H MOV A,20H MOV B,#10H DIV AB OR
14、L B,#30H MOV 22H,B ORL A,#30H MOV 21H,A SJMP $,方法1,源程序如下:,0011,0100,PC,PC,PC,0011 0100,0001 0000,PC,0011,0000,0000 0100,PC,0011 0100,PC,PC,PC,0011,PC,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,15,ORG 0000H MOV R0,#20H MOV A,#30H XCHD A,R0 MOV 22H,A MOV A,R0 SWAP A ORL A , #30H MOV 21H, A SJMP $,方法2,PC,P
15、C,PC,PC,PC,PC,PC,PC,PC,源程序如下:,0011,0010 0000,0011,0100,0000,0100,0011,0100,0011,0000,0011,0000,0011,PC,0011,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,16,分支程序结构 结构特点:不一定按指令的先后顺序依次运行程序,程序的流向有两个或两个以上分支,根据指定条件选择程序的流向。 实例:已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。 X+1, X0 Y = 0 , X = 0 1 , X0 题意:根据X的不同,程序编写时有三个出口,即有三个分支!,想一想:程序怎么编写?,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,17,开始,XA,A= 1,A= A+1,存结果,结束,Y,Y,N,N,程序框图:,A0?,A=0?,任务八 初步掌握MCS51单片机汇编程序设计,下午9时32分,单片机应用技术,18,源程序如下: ORG 2000H MOV A,30H JZ LP1