单片机应用技术014.9.19_第1页
单片机应用技术014.9.19_第2页
单片机应用技术014.9.19_第3页
单片机应用技术014.9.19_第4页
单片机应用技术014.9.19_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章第二章 单片机汇编语言及程序设计单片机汇编语言及程序设计对任何计算机,如果只有硬件(裸机),而没有软件对任何计算机,如果只有硬件(裸机),而没有软件(程序)的支持,就不能发挥其运算和控制功能。(程序)的支持,就不能发挥其运算和控制功能。指令:程序的指令:程序的最基本单位最基本单位,指,指CPUCPU所能进行的操作所能进行的操作程序:指程序:指完成某项任务完成某项任务的计算机的计算机指令的有序集合指令的有序集合指令系统:指令系统:所有指令的集合所有指令的集合。不同的。不同的CPUCPU具有不同的具有不同的 指令系统。指令系统。MCS-51MCS-51的指令系统共有的指令系统共有111111

2、条指令条指令计算机编程语言计算机编程语言机器语言机器语言 汇编语言汇编语言 高级语言高级语言汇编汇编编译编译5:091MCS-51MCS-51指令格式指令格式汇编语言级汇编语言级指令格式:指令格式: 标号标号: : 操作码操作码 操作数操作数 ;注释;注释 例:例: LBLB: MOV A,R2 ; A(R2)MOV A,R2 ; A(R2)标号标号指令的标识,表示指令的标识,表示指令的首地址指令的首地址;操作码操作码操作的命令(指示机器执行何种操作)操作的命令(指示机器执行何种操作)操作数操作数参与操作的数据(是操作码的补充),参与操作的数据(是操作码的补充), 分分目的操作数目的操作数和和

3、源操作数源操作数。注释注释对指令功能的说明,便于程序阅读和维护,对指令功能的说明,便于程序阅读和维护, 不参与操作不参与操作。5:092机器语言级机器语言级指令格式:指令格式: 机器语言指令是一种机器语言指令是一种二进制代码二进制代码,具体包含两个基本的,具体包含两个基本的部分:部分:操作码操作码和和操作数操作数。机器语言分为单字节、双字节。机器语言分为单字节、双字节和三字节指令,具体格式分别为:和三字节指令,具体格式分别为:单字节指令单字节指令: :例:例:MOV A,R0 MOV A,R0 对应的机器语言指令为:对应的机器语言指令为:E8HE8H双字节指令双字节指令: :例:例:MOV A

4、,20H MOV A,20H 对应的机器语言指令为:对应的机器语言指令为:E520HE520H三字节指令三字节指令: :例:例:MOV 20H,#46H MOV 20H,#46H 对应的机器语言指令为:对应的机器语言指令为:752046H752046H操作码操作码操作码操作码操作数操作数操作码操作码第一操作数第一操作数第二操作数第二操作数5:093一、一、MCS单片机寻址方式单片机寻址方式*二、单片机常用指令类型二、单片机常用指令类型*三、单片机指令系统的几个特点三、单片机指令系统的几个特点*四、单片机中的伪指令四、单片机中的伪指令*五、汇编语言程序设计五、汇编语言程序设计-举例举例*本章主要

5、内容本章主要内容5:094一、一、MCS-51MCS-51单片机寻址方式单片机寻址方式寻址方式的寻址方式的“寻址寻址”:是指寻找参与操作的数据所在的:是指寻找参与操作的数据所在的存储器单元的地址。存储器单元的地址。注意:注意: MCS-51 MCS-51指令系统的寻址方式及其对应的寻址空间指令系统的寻址方式及其对应的寻址空间序号序号方式方式常用的变量常用的变量寻址空间寻址空间 1立即寻址立即寻址 2直接寻址直接寻址内部内部RAM的低的低128B和特殊功能寄存器和特殊功能寄存器 3寄存器寻址寄存器寻址R7-R0,A,B,AB,DPTR 4寄存器寄存器间接寻址间接寻址R0,R1,SPR0,R1DP

6、TR内部内部RAM外部外部RAM 0000H00FFH外部外部RAM/ROM 0000HFFFFH 5相对寻址相对寻址PC+偏移量偏移量程序存储器程序存储器 6变址寻址变址寻址A+DPTR,A+PC程序存储器程序存储器 7位寻址位寻址内部内部RAM和特殊功能和特殊功能寄存器的位地址空间寄存器的位地址空间1 1、立即寻址、立即寻址特点:特点:指令码中直接含有指令码中直接含有操作数本身操作数本身(立即数)(立即数)立即数可以是立即数可以是8位或位或16位位立即数通常用立即数通常用#data或或#data16表示表示立即数只能作为源操作数立即数只能作为源操作数立即数同操作码一起存放在立即数同操作码一

7、起存放在程序存储器程序存储器中中 例如:例如:MOV A,#3BH ;A3BH MOV DPTR,#1828H ;DPTR#1828H 程序存储器程序存储器PC74H3BH累加器累加器A3BH5:0972 2、直接寻址、直接寻址特点:特点:指令码中含有指令码中含有操作数地址操作数地址(8位二进制数);位二进制数);可用于直接寻址的存储空间是:可用于直接寻址的存储空间是:片内片内RAM的低的低128字节和特殊功能寄存器字节和特殊功能寄存器SFR;直接寻址通常用直接寻址通常用direct(操作数所在存储单元的物理(操作数所在存储单元的物理地址)表示;地址)表示;例:例:MOV 40H, A ;(;

8、(40H) A对片内高对片内高128B的的RAM,direct既可以使用既可以使用SFR的物的物理地址,也可以用理地址,也可以用SFR的名称符号。的名称符号。MOV A, 81H ;A (81H) MOV A, SP ;A SP,可读性好,可读性好 5:098程序存储器程序存储器PCF5H40H累加器累加器A片内片内RAM40H3BH演示演示MOV 40H, A ;(;(40H) A3BH5:0993 3、寄存器寻址、寄存器寻址特点:特点: 操作数在操作数在R7-R0,A,B,AB,DPTR中,指令码中含有中,指令码中含有该该操作数的寄存器号操作数的寄存器号; 操作数位于片内操作数位于片内RA

9、M中中 MOV A, Rn ;A Rn INC Rn ;Rn Rn+1程序存储器程序存储器PC0000 1000PSWRS1 RS0片内片内RAM00H3BH 0000 0A3BH0005:09104 4、寄存器间接寻址、寄存器间接寻址特点:特点: 指令码中含有存放该指令码中含有存放该操作数操作数地址地址的寄存器号的寄存器号; 间址寄存器采用间址寄存器采用R0,R1,DPTR表示;表示; R 0 , R 1 用 于 对 片 内用 于 对 片 内 R A M 和 外 部和 外 部 R A M (0000H00FFH)寻址,)寻址,DPTR的寻址范围是片外的寻址范围是片外ROM/RAM的全部的全部

10、64KB区域;区域; 寄存器间址指令不能用于寻址寄存器间址指令不能用于寻址SFR MOV A, R0 ; A (R0) R03A片内片内RAM3AH3BHA3BH5:09115 5、变址寻址、变址寻址特点:特点:指令码中指令码中隐含隐含有作为有作为基地址寄存器基地址寄存器用的数据指针用的数据指针DPTR或程序计数器或程序计数器PC(存放基地址);(存放基地址);指令码中也指令码中也隐含隐含有累加器有累加器A(A中存放中存放地址偏移量地址偏移量,00HFFH范围内的无符号数);范围内的无符号数);寻址空间是寻址空间是程序存储器程序存储器。 MOVC A, A+PC ; A (A+PC) MOVC

11、 A, A+DPTR ; A (A+DPTR)例:假设例:假设A中的内容为中的内容为05H,DPTR的内容为的内容为0400H,程,程序存储器序存储器0405H单元的内容为单元的内容为2DH,则,则 MOVC A, A+DPTR 执行后执行后A的内容为的内容为2DH 5:0912022000HAIRDPTRALUROM2000H932001HX12002HX22002HX293演示:演示:MOVC A, A+DPTR ; A (A+DPTR)5:09136 6、相对寻址、相对寻址特点:特点:相对转移指令的指令码中含有相对地址偏移量;相对转移指令的指令码中含有相对地址偏移量;相对转移指令分为:相

12、对转移指令分为:短转移指令短转移指令和和长转移指令长转移指令(分别(分别为双字节和三字节);为双字节和三字节);PC的当前值的当前值 + 相对地址偏移量相对地址偏移量rel = 下一条要执行指下一条要执行指令的地址;令的地址;PC的当前值是指相对转移指令从程序存储器中取出的当前值是指相对转移指令从程序存储器中取出后的后的PC值。值。 2000H 8054H SJMP rel ;PC PC+2+rel 5:09142000HAPCALUROM2000H80H2001H54H2002H24H2003H05H2056H74H05H2002H54H演示:演示:2000H 8054H SJMP 54H

13、;PC 2056H2056H5:09157 7、位寻址、位寻址特点:特点:位寻址指令的指令码中含有位地址;位寻址指令的指令码中含有位地址;位寻址指令中位地址用位寻址指令中位地址用bit表示(字节地址表示(字节地址direct););位寻址区位寻址区:片内片内RAM位寻址区位寻址区20H2FH和和11个个SFR;位地址的表示方法:位地址的表示方法: MOV C, 7FH ; Cy (7FH) MOV C, 2FH.7 ; Cy (7FH) MOV C, ACC.7 ; Cy ACC.7 A1 BIT 7FH 位地址赋值伪指令位地址赋值伪指令 MOV C, A1 ; Cy 2FH.7 , A1 为

14、符号位地址为符号位地址*5:0916RAM2FH20H7FH00H1演示:演示:D200H SETB 00H ; 00H 15:0917二、单片机常用指令类型二、单片机常用指令类型数据传送指令数据传送指令(28条)条) 将源地址中操作数传送到目的地址的指令。将源地址中操作数传送到目的地址的指令。算数运算指令算数运算指令(24条)条) 对两个操作数进行加、减、乘、除等运算的指令。对两个操作数进行加、减、乘、除等运算的指令。逻辑操作和环移指令逻辑操作和环移指令(25条)条) 对两个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作;对两个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作; 对累加器对累加

15、器A中数进行环移(左环移、右环移,带进位、不带进位)中数进行环移(左环移、右环移,带进位、不带进位)控制转移指令控制转移指令(17条)条) 条件转移、无条件转移、调用和返回等指令(改变条件转移、无条件转移、调用和返回等指令(改变PC中值为目标)中值为目标)位操作指令位操作指令(布尔变量操作指令)(布尔变量操作指令)(17条)条) 位传送、位置位、位运算和位控制转移指令。位传送、位置位、位运算和位控制转移指令。5:09181 1、数据传送指令、数据传送指令(2828条)条)此类指令此类指令不影响不影响Cy, AC, OV标志,只标志,只影响影响奇偶标志奇偶标志P。片内片内RAM单元之间单元之间的

16、数据传送指令的数据传送指令(15条)条) 指令的源操作数和目的操作数地址都在指令的源操作数和目的操作数地址都在单片机内部单片机内部,是片内是片内RAM或或SFR的地址。的地址。立即寻址型传送指令立即寻址型传送指令 MOV A,#data ; A data MOV Rn,#data ; Rn data MOV Ri,#data ; (Ri) data MOV direct,#data ; direct data 5:09191 1、数据传送指令(、数据传送指令(2828条)条)直接寻址型传送指令直接寻址型传送指令 指令操作码中至少含有一个操作数的直接地址。指令操作码中至少含有一个操作数的直接地址

17、。 MOV A, direct ; A (direct) MOV Rn, direct ; Rn (direct) MOV Ri, direct ; (Ri) (direct) MOV direct2,direct1 ; direct2 (direct1) 注:目的存储单元有累加器注:目的存储单元有累加器A、工作寄存器和片内、工作寄存器和片内 RAM单元单元(包括包括SFR的字节地址)。的字节地址)。 5:09201 1、数据传送指令(、数据传送指令(2828条)条)寄存器寻址型传送指令寄存器寻址型传送指令MOV A, Rn ; A RnMOV Rn, A ; Rn A MOV direct,

18、A ; direct A MOV direct, Rn ; direct Rn 5:09211 1、数据传送指令(、数据传送指令(2828条)条)寄存器间址型传送指令寄存器间址型传送指令 MOV A, Ri ; A (Ri) MOV Ri , A ; (Ri) A MOV direct, Ri ; direct (Ri)5:09221 1、数据传送指令(、数据传送指令(2828条)条)外部数据传送指令(外部数据传送指令(外部外部RAM/ROM) 16位数位数传送指令传送指令 MOV DPTR,#data16 ; DPTR data16 16位立即数是外部位立即数是外部RAM/ROM的地址,其高

19、的地址,其高8位送入位送入DPH,低,低8位送入位送入DPL。外部外部ROM的字节传送指令(查表指令)的字节传送指令(查表指令) MOVC A, A+DPTR ; A (A+DPTR) 远程查表远程查表 MOVC A, A+PC ; PC PC+1, A (A+PC) 近程查表近程查表5:09231 1、数据传送指令(、数据传送指令(2828条)条)外部外部RAM的字节传送指令的字节传送指令 实现外部实现外部RAM和累加器和累加器A之间的数据传送。之间的数据传送。 MOVX A, Ri ; A (Ri) MOVX Ri, A ; (Ri) A MOVX A, DPTR ; A (DPTR) M

20、OVX DPTR, A ; (DPTR ) A 注:前面两条指令访问外部注:前面两条指令访问外部RAM:0000H00FFH 后面两条指令访问外部后面两条指令访问外部RAM:0000HFFFFH5:09241 1、数据传送指令(、数据传送指令(2828条)条)l堆栈操作指令堆栈操作指令 PUSH direct ; SP SP+1,(SP) (direct) POP direct ; direct (SP), SP SP-1 堆栈操作指令是堆栈操作指令是直接寻址直接寻址指令,书写格式为:指令,书写格式为: PUSH ACC PUSH 00H POP ACC POP 00H注:弹出指令不会改变堆栈

21、区存储器单元中的内容。注:弹出指令不会改变堆栈区存储器单元中的内容。5:09251 1、数据传送指令(、数据传送指令(2828条)条)l数据交换指令数据交换指令 XCH A,Rn ; ARn XCH A,direct ;A (direct) XCH A, Ri ; A (Ri) XCHD A, Ri ; A30 (Ri)30 注:只是将累加器注:只是将累加器A中的内容和片内中的内容和片内RAM单元内容相互单元内容相互 交换。交换。5:09262 2、算术运算指令(、算术运算指令(2424条)条)加法指令(加法指令( 13条)条)不带不带Cy加法指令加法指令ADD A,Rn ; A A+Rn A

22、DD A,Direct ; A A+(Direct)ADD A,Ri ; A A+(Ri)ADD A,#data ; A A+data对对PSW标志位均有影响;标志位均有影响;计算机总是按带符号数法则运算,产生计算机总是按带符号数法则运算,产生PSW标志位。标志位。两个带符号数相加,运算结果是否溢出应判断两个带符号数相加,运算结果是否溢出应判断OV标标志位。志位。5:09272 2、算术运算指令(、算术运算指令(2424条)条)带带Cy加法指令加法指令ADDC A,Rn ; A A+Rn +Cy ADDC A,Direct ; A A+(Direct) +CyADDC A,Ri ; A A+(

23、Ri)+CyADDC A,#data ; A A+data +Cy Cy指令执行前的指令执行前的Cy值。值。常用于多字节无符号数的加法运算常用于多字节无符号数的加法运算5:09282 2、算术运算指令(、算术运算指令(2424条)条)加加1指令指令 INC A ; A A+ 1 INC Rn ; Rn Rn+1 INC Direct ; Direct ( Direct )+1 INC Ri ; (Ri) (Ri)+1 INC DPTR ; DPTR DPTR+1只影响奇偶只影响奇偶校验标志位校验标志位5:09292 2、算术运算指令(、算术运算指令(2424条)条)减法指令(减法指令( 8条)

24、条)带带Cy减法指令减法指令SUBB A,Rn ; A A Rn - Cy SUBB A, Direct ; A A -(Direct)- CySUBB A,Ri ; A A -(Ri) - CySUBB A, #data ; A A data - Cy对对PSW标志位均有影响;标志位均有影响;计算机总是按带符号数法则运算,产生计算机总是按带符号数法则运算,产生PSW标志位。标志位。两个带符号数相减,运算结果是否溢出应判断两个带符号数相减,运算结果是否溢出应判断OV标标志位。志位。5:09302 2、算术运算指令(、算术运算指令(2424条)条)减减1指令指令 DEC A ; A A - 1

25、DEC Rn ; Rn Rn - 1 DEC Direct ; Direct ( Direct )- 1 DEC Ri ; (Ri) (Ri) - 1只影响奇偶只影响奇偶校验标志位校验标志位5:09312 2、算术运算指令(、算术运算指令(2424条)条)十进制调整指令(十进制调整指令( 1条)条) DA A ;若;若AC=1或或A3A09,则,则A A+06H 若若Cy=1或或A7A49,则,则A A+60H通常紧跟在加法指令后使用,对通常紧跟在加法指令后使用,对A A中的操作数进行十中的操作数进行十进制调整。进制调整。 专用于实现专用于实现BCD运算。运算。5:09322 2、算术运算指令

26、(、算术运算指令(2424条)条)乘法、除法指令(乘法、除法指令( 2条)条) MUL AB ;AB=BA, 形成标志形成标志 对标志位的影响:对标志位的影响:Cy=0; 若若B不等于不等于0,则,则OV=1,否则,否则OV=0; P由由A中中1的奇偶性确定。的奇偶性确定。 DIV AB ; AB=AB, 形成标志形成标志 对标志位的影响:对标志位的影响:Cy=0; 执行过程中执行过程中,若发现若发现B等于等于0,则,则OV=1; P由由A中中1的奇偶性确定。的奇偶性确定。5:09333 3、逻辑运算指令、逻辑运算指令(25(25条)条) 逻辑操作指令共逻辑操作指令共25条,所有指令均按位进行

27、操作,无条,所有指令均按位进行操作,无进位,一般不影响标志位。进位,一般不影响标志位。逻辑与运算指令逻辑与运算指令 ANL A,Rn ; A ARn ANL A, direct ; A A(direct) ANL A, Ri ; A A(Ri) ANL A, #data ; A Adata ANL direct ,A ; direct (direct) A ANL direct ,#data ; direct (direct) data5:09343 3、逻辑运算指令、逻辑运算指令(25(25条)条)逻辑或运算逻辑或运算指令指令 ORL A,Rn ; A A Rn ORL A, direct

28、; A A (direct) ORL A, Ri ; A A (Ri) ORL A, #data ; A A data ORL direct ,A ; direct (direct) A ORL direct ,#data ; direct (direct) data5:09353 3、逻辑运算指令、逻辑运算指令(25(25条)条)逻辑异或运算逻辑异或运算指令指令 XRL A,Rn ; A A Rn XRL A, direct ; A A (direct) XRL A, Ri ; A A (Ri) XRL A, #data ; A A data XRL direct ,A ; direct (

29、direct) A XRL direct ,#data ; direct (direct) data 5:09363 3、逻辑运算指令、逻辑运算指令(25(25条)条) 累加器累加器A A清零和取反指令清零和取反指令CLR A ; A 0 CPL A ; A A 移位指令移位指令 RL A ; A7 A6 . A0 A7RR A ; A0A7 . A1 A0RLC A ; CY A7 A6 . A0 CYRRC A ; CY A7 . A0 CYSWAP A ;高;高4位和低位和低4位交换指令位交换指令5:09374 4、控制转移指令、控制转移指令(17条)条)无条件转移指令无条件转移指令 L

30、JMP addr16 ; PC addr16 长长转移指令:转移指令:64K范围内转移指令范围内转移指令 AJMP addr11 ; PC PC+2,PC10PC0 addr11 绝对转移指令:绝对转移指令:2K范围内转移指令范围内转移指令 SJMP rel ; PC PC+2, PC PC+rel 短转移指令:短转移指令:-126-129范围内转移指令范围内转移指令, rel的取值范围的取值范围-128-127 JMP A+DPTR ; PC A+DPTR 间接转移指令:变址转移指令,目标转移地址的基地间接转移指令:变址转移指令,目标转移地址的基地址送入址送入DPTR5:09384 4、控制

31、转移指令、控制转移指令(17条)条)条件转移指令条件转移指令 累加器累加器A判零转移指令判零转移指令 JZ rel ; 若若A=0,则,则 PC PC+2+rel, 否则否则PC PC+2 JNZ rel ; 注意:注意:都是双字节相对转移指令,都是双字节相对转移指令,rel为相对地址偏移量。为相对地址偏移量。 5:09394 4、控制转移指令、控制转移指令(17条)条)比较不相等转移指令比较不相等转移指令 CJNE A,#data,rel;若;若A=data,则则PCPC+3 若若A不等于不等于data,则则PCPC+3+rel 形成形成Cy标志。标志。 CJNE A,direct,rel;

32、 CJNE Rn,#data,rel; CJNE Ri,#data,rel; 注意:注意:指令的相对转移范围为指令的相对转移范围为-125 +130 5:09404 4、控制转移指令、控制转移指令(17条)条) 减减1非零转移指令非零转移指令 DJNZ Rn,rel; 若若Rn-1不等于不等于0,则则PCPC+2+rel 若若Rn-1=0,则则PCPC+2 DJNZ direct,rel;若若,(direct)- 1不等于不等于0,则则PCPC+3+rel 若若,(direct)-1=0,则则PCPC+3 注意:注意:条件转移指令均为相对转移指令,因此指令的转移条件转移指令均为相对转移指令,因

33、此指令的转移范围十分有限。范围十分有限。 5:09414 4、控制转移指令、控制转移指令(17条)条)子程序调用和返回指令子程序调用和返回指令 短调用指令短调用指令 ACALL addr11 ; PCPC+2 SPSP+1,(,(SP) PC7PC0 SPSP+1,(,(SP) PC15PC8 PC100addr11 注意:注意:(1)短调用指令也称为)短调用指令也称为绝对调用指令绝对调用指令; (2)本调用指令应与被调用子程序起始地址在)本调用指令应与被调用子程序起始地址在 同一个同一个2KB范围内。范围内。5:09424 4、控制转移指令、控制转移指令(17条)条)长调用指令长调用指令 L

34、CALL addr16 ; PC PC+3 SP SP+1,(SP) PC7PC0 SP SP+1,(SP) PC15PC8 PC150 addr16 注意:注意:本调用指令是一个本调用指令是一个64KB范围内调用指令。范围内调用指令。返回指令返回指令 RET; PC15PC8 (SP),), SP SP-1, PC7PC0 (SP),), SP SP-1 RETI; PC15PC8 (SP),), SP SP-1, PC7PC0 (SP),), SP SP-1 返回断点的同时,释放中断逻辑,接受新的中断请求返回断点的同时,释放中断逻辑,接受新的中断请求空操作指令:空操作指令:NOP ; PC

35、 PC+15:09435 5、布尔变量操作指令(、布尔变量操作指令(17条)条) MCS-51单片机的一个最大的特点就是在硬件结构上单片机的一个最大的特点就是在硬件结构上有一个布尔处理器,对应这个处理器,指令系统中设有一个布尔处理器,对应这个处理器,指令系统中设计了处理布尔变量的指令子集。计了处理布尔变量的指令子集。 该位操作指令共该位操作指令共17条,所有的位操作指令均采用位条,所有的位操作指令均采用位寻址方式,在指令中位地址可用四种方式表示:寻址方式,在指令中位地址可用四种方式表示: (1)直接寻址方式)直接寻址方式 (2)点操作符表示方式)点操作符表示方式 (3)位名称方式)位名称方式

36、(4)标号表示(自定义地址)方式)标号表示(自定义地址)方式5:0944l 位传送指令位传送指令 MOV C , bit MOV bit , C 其中:其中:C为为PSW中的中的Cy;bit为布尔变量的位为布尔变量的位地址。地址。 这组指令的其中一个操作数必须是进位标志这组指令的其中一个操作数必须是进位标志C,另一个可以是位地址。另一个可以是位地址。5:0945l 位置位和复位指令位置位和复位指令位置位指令位置位指令SETB C;1CySETB bit;1( bit )位复位指令位复位指令CLR C;0CyCLR bit;0( bit )5:0946l 位逻辑运算指令位逻辑运算指令位逻辑位逻辑

37、“与与”指令指令ANL C, bit ;(C)( bit ) CANL C, /bit ;(C) /(bit ) C位逻辑位逻辑“或或”指令指令ORL C, bit ;(;(C)( bit ) CORL C, /bit ;(;(C)/( bit ) C位逻辑位逻辑“非非”指令指令CPL C ;/(C ) CCPL bit ;/(bit) bit5:0947l 位条件转移指令位条件转移指令累加器累加器cycy状态判断转移指令状态判断转移指令 JCrel;若;若Cy=1,则(则(PC)+2+relPC;若;若Cy=0,则(则(PC)+2PC JNCrel;若;若Cy=0,则(则(PC)+2+rel

38、PC;若;若Cy=1,则(则(PC)+2PC位状态判断转移指令位状态判断转移指令 JBbit, rel ;若(;若(bit)=1,则(则(PC)+3+relPC;若(;若(bit)=0,则(则(PC)+3PC JNBbit, rel ;若(;若(bit)=0,则(则(PC)+3+relPC;若(;若(bit)=1,则(则(PC)+3PC JBCbit, rel ;若(;若(bit)=1,则则 (PC)+3+relPC,0bit;若(;若(bit)=0,则则 (PC)+3PC5:0948三、单片机指令系统的几个特点三、单片机指令系统的几个特点指令中的数据表示:数据前加指令中的数据表示:数据前加#

39、访问外部数据存储器指令:访问外部数据存储器指令:MOVX 访问外部数据存储器使用数据指针:访问外部数据存储器使用数据指针:DPTR查表指令:查表指令:MOVC A,A+DPTR MOVC A,A+PC调用和转移指令都有几种调用和转移指令都有几种:ACALL addr11 绝对调用(绝对调用(2kB内)内)LCALL addr16 长调用长调用 AJMP addr11 绝对跳转(绝对跳转(2kB内)内) LJMP addr16 长跳转长跳转 SJMP rel 相对跳转相对跳转5:0949CJNE (目的),(源),(目的),(源),rel目的字节与源字节比较,不等,则转到目的字节与源字节比较,不

40、等,则转到rel处执行,处执行,否则顺序执行。否则顺序执行。DJNZ Rn,rel 和和 DJNZ direct ,relPUSH和和POP指令为单字节操作,且栈指针向下。指令为单字节操作,且栈指针向下。布尔(位)处理指令举例:布尔(位)处理指令举例: MOV P1.2, CSETB P1.5 JB ACC.3,label CPL C CLR P1.6 JNB P1.7,lebel5:0950四、单片机中的伪指令四、单片机中的伪指令名词解释:名词解释: 汇编程序汇编程序是一种由制造厂家或软件公司提供的实用是一种由制造厂家或软件公司提供的实用 程序,能把程序,能把“汇编语言源程序汇编语言源程序”

41、翻译成机翻译成机 器语言,供器语言,供CPU执行。例如:执行。例如:MBUG 汇编语言源程序汇编语言源程序设计者编写的程序设计者编写的程序汇编语言汇编语言是是汇编语言语句汇编语言语句的集合,是汇编语言源程序的基的集合,是汇编语言源程序的基本元素。汇编语言语句分为本元素。汇编语言语句分为指令性语句指令性语句和和指示性语句指示性语句。5:0951四、单片机中的伪指令四、单片机中的伪指令指令性语句:指令性语句:指采用指令助记符构成的汇编语言语句,指采用指令助记符构成的汇编语言语句,是汇编语言语句的主体。是汇编语言语句的主体。每条指令性语句都有对应的指令代码(机器码)每条指令性语句都有对应的指令代码(

42、机器码)MCS-51单片机有单片机有111条指令性语句条指令性语句指示性语句指示性语句(又称(又称伪指令伪指令):不是真正的指令。):不是真正的指令。不会在汇编时产生机器代码不会在汇编时产生机器代码汇编时供汇编程序识别和执行,对汇编过程进行某种控制汇编时供汇编程序识别和执行,对汇编过程进行某种控制MCS-51中常用的伪指令有中常用的伪指令有8条条5:0952四、单片机中的伪指令四、单片机中的伪指令 伪指令伪指令是在机器汇编时是在机器汇编时供汇编程序供汇编程序识别和执行识别和执行的命令,用于对汇编的过程进行控制。的命令,用于对汇编的过程进行控制。ORG 指令代码存储起始地址指令代码存储起始地址

43、ORG 2000H START:MOV A, #64H: ENDEND 结束汇编伪指令结束汇编伪指令每个源程序只能有一个每个源程序只能有一个END,且在程序的末尾。,且在程序的末尾。5:0953四、单片机中的伪指令四、单片机中的伪指令EQU 等值(赋值)语句等值(赋值)语句 字符名称字符名称 EQU 数据或汇编符数据或汇编符 DAPORT EQU 0C010H 注:注:先定义后使用,定义字符名称不能在表达式中使用。先定义后使用,定义字符名称不能在表达式中使用。DATA 数据地址赋值语句数据地址赋值语句 字符名称字符名称 DATA 表达式表达式 AA DATA 35H 注:注:表达式可为数据或地

44、址,也可包含已定义的表达式可为数据或地址,也可包含已定义的“字符名字符名称称”,但不能是汇编符号。,但不能是汇编符号。5:0954四、单片机中的伪指令四、单片机中的伪指令DB定义字节定义字节 标号标号: DB 项或项表项或项表 把把“项或项表项或项表”中的数据依次存放到以左边标号中的数据依次存放到以左边标号为起始地址的存储单元中为起始地址的存储单元中 例如:例如: ORG 0600H START:MOV A #64H TAB:DB 3FH,68,01011010B,5,A END5:0955四、单片机中的伪指令四、单片机中的伪指令DW定义双字节数(字)(高定义双字节数(字)(高8位放低地址单元

45、)位放低地址单元) 标号标号: DW 项或项表项或项表 例如:例如: ORG 1600H START:MOV A #30H ORG 1620H HETAB:DW 3F08H,68H,15 END 汇编后汇编后: (1620H)=3FH (1622H)=00H (1624H)=00H (1621H)=08H (1623H)=68H (1625H)=0FH5:0956四、单片机中的伪指令四、单片机中的伪指令DS定义存储空间定义存储空间 标号标号: DS 表达式表达式 从标号地址开始预留一定数量的内存单元从标号地址开始预留一定数量的内存单元 例如:例如: SPC:DS 08H ; 在SPC开始的位置

46、开始预留8个单元空间BIT位地址赋值位地址赋值 字符名称字符名称 BIT 位地址位地址 例如:例如: A1 BIT P1.0 A2 BIT 00H 注:注:BIT语句定义过的字符名称是一个符号位地址。语句定义过的字符名称是一个符号位地址。5:0957五、汇编语言程序设计五、汇编语言程序设计- -举例举例汇编语言程序设计步骤汇编语言程序设计步骤拟制设计任务书:程序功能、技术指标、精度等级拟制设计任务书:程序功能、技术指标、精度等级 实施方案、工程进度、所需设备、研制费实施方案、工程进度、所需设备、研制费 用和人员分工等用和人员分工等 建立数学模型:可以是表达式,推理和判断,运行建立数学模型:可以

47、是表达式,推理和判断,运行 状态的模拟等状态的模拟等确立算法:同一数学模型往往有几种不同的算法确立算法:同一数学模型往往有几种不同的算法绘制程序流程图:设计程序结构绘制程序流程图:设计程序结构编制汇编语言源程序编制汇编语言源程序上机调试上机调试5:0958汇编语言程序的汇编汇编语言程序的汇编 将汇编语言源程序转换为机器语言的过程称为将汇编语言源程序转换为机器语言的过程称为“汇汇编编”。可以采用以下两种手段进行汇编。可以采用以下两种手段进行汇编人工汇编人工汇编查手册查手册机器汇编机器汇编汇编程序汇编程序5:0959例例 拆字程序拆字程序: 设设 30H中存放待处理的数据,要求将其中存放待处理的数

48、据,要求将其拆成两个字节数,存放在拆成两个字节数,存放在31H和和32H(高位)中。(高位)中。 例如例如:59H 05H和和09H ORG 0500HCHAIZ:MOV R1,#32H MOV R0,#30H MOV A,R0 ANL A,#0F0H RR A RR A RR A1.1.简单程序设计简单程序设计注:注:4个个 RR A指令可以用指令可以用 SWAP A 指令代替。指令代替。RR A MOV R1,ADEC R1MOV A,R0ANL A,#0FHMOV R1,AEND5:0960例例 将一个字节将一个字节BCD码变成相应的码变成相应的ASCAII码,存入两个码,存入两个RAM

49、单元中。设:单元中。设:BCD码存在内部码存在内部RAM 30H单元中,单元中,变换成变换成ASCAII码存入码存入31H和和32H中。中。ORG 0500HMOV R0,#32H;32H单元地址送给单元地址送给R0MOV R0, #00H ;32单元清零单元清零MOV A, 30H;将;将30H单元中的单元中的BCD送送AXCHD A, R0;将低位;将低位BCD送送32单元单元ORL 32H, #30H;完成低位;完成低位BCD码的转换码的转换SWAP A;将高;将高4位位BCD交换到低位交换到低位ORL A, #30H ;完成高位转换完成高位转换MOV 31H, A ;将高位将高位BCD

50、的的ASC存入存入31HEND5:0961 或或 : ORG 0500HMOV R0, #30HMOV A, R0 ;取;取BCD码码MOV B, A;暂存;暂存ANL A, #0FH;屏蔽高;屏蔽高4位位ADD A, #30HMOV 32H, A;存入;存入RAMMOV A, BSWAP AANL A, #0FHADD A, #30HMOV 31H, AEND5:0962例:例:已知已知 VAR单元内有一变量单元内有一变量X,请按右上式编程求,请按右上式编程求Y值,并送入值,并送入FUNC单元。单元。 求解:求解:(1) 先分支后赋值先分支后赋值 ORG 0100H VAR DATA 30H

51、 FUNC DATA 31H MOV A, VAR ; AX JZ DONE ; 若若X=0,则,则DONE JNB ACC.7, POSI ; 若若X0,则,则POSI MOV A, #0FFH ; 若若X0,则,则A-1 SJMP DONE ; 转转DONEPOSI: MOV A, #01H ; A1 DONE: MOV FUNC, A ; 存入存入FUNC单元单元 SJMP $ END2.2.分支程序设计分支程序设计5:0963 (2)先赋值后分支)先赋值后分支 ORG 0100H VAR DATA 30H FUNC DATA 50H MOV A, VAR ; AX JZ DONE ;

52、若若X=0,则,则DONE MOV R0, #0FFH ; 若若X0,则,则R0 -1 JB ACC.7, NEG ; 若若X0,则,则R01 NEG: MOV A, R0 ; AR0 DONE: MOV FUNC, A ; 存入存入FUNC单元单元 SJMP $ END5:09643.3.循环程序设计循环程序设计循环程序的组成循环程序的组成: 初始化:变量、计数器、次数初始化:变量、计数器、次数 循环体:循环处理、循环控制循环体:循环处理、循环控制 循环结束处理:循环结束处理:循环程序的类型:循环程序的类型:先判断后处理;先处理后判断先判断后处理;先处理后判断5:0965l例:例:已知数据内

53、部已知数据内部RAMRAM的的BLOCKBLOCK单元开始有一无符号的单元开始有一无符号的数据块,块长在数据块,块长在LENLEN单元,块长度单元,块长度L L,编程求累加和存,编程求累加和存入入SUMSUM单元单元求解:求解:(1 1)先处理后判断)先处理后判断 ORG 0200H LEN DATA 20H SUM DATA 21HBLOCK DATA 22H CLR A ; A0 MOV R2, LEN ; R2 L MOV R1, #BLOCK ; R1BLOCK NEXT: ADD A, R1 ; AA+ (R1) INC R1 ; R1R1+1 DJNZ R2, NEXT ; R2-

54、1 0, 则则NEXT MOV SUM, A ; 存累加和存累加和 SJMP $ END5:0966(2 2)先判断后处理)先判断后处理 ORG 0200H LEN DATA 20H SUM DATA 21HBLOCK DATA 22H CLR A ; A0 MOV R2, LEN ; R2 L MOV R1, #BLOCK ; R1BLOCK INC R2 ; R2R2+1 SJMP CHECK LOOP: ADD A, R1 ; AA+ (R1) INC R1 ; R1R1+1CHECK: DJNZ R2, LOOP ; R2-1 0, 则则LOOP MOV SUM, A ; 存累加和存累

55、加和 SJMP $ END5:0967DPTR作基址的查表指令作基址的查表指令 MOVC A, A+DPTR ; A (A+DPTR ) 步骤:步骤:(1)DPTR所查表的始址所查表的始址 (2)A所查表的项数所查表的项数 (3)执行)执行查表指令查表指令PC作基址的查表指令作基址的查表指令 MOVC A, A+PC ; A (A+PC ) 步骤:步骤:(1)A 所查表的项数所查表的项数 (2)查表指令前应放如下指令查表指令前应放如下指令ADD A, #data其中,其中,data=查表指令到表始址间的指令字节数查表指令到表始址间的指令字节数 (3)执行)执行查表指令查表指令4.4.查表程序设计查表程序设计5:0968例:例:已知已知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论