版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 MCS-51单片机指令系统与程序设计单片机指令系统与程序设计 主讲:主讲: MCS-51单片机指令系统简明,易于掌握,效单片机指令系统简明,易于掌握,效 率高,有率高,有111条指令,共分为条指令,共分为5大类,大类,7种寻址方式。种寻址方式。 本章将介绍指令的格式、寻址方式、功能和使用规本章将介绍指令的格式、寻址方式、功能和使用规 则等,重点还需要体会汇编语言程序设计的方法和则等,重点还需要体会汇编语言程序设计的方法和 技巧技巧 。 3.1 MCS-51单片机指令系统详解单片机指令系统详解 3.1.1 MCS-51单片机指令概述单片机指令概述 指令是单片机的软件资源,供编程者编写
2、程序指令是单片机的软件资源,供编程者编写程序 时使用。所有指令的集合组成单片机的指令系统。时使用。所有指令的集合组成单片机的指令系统。 汇编语言是以助记符或操作码表示的指令,用汇编汇编语言是以助记符或操作码表示的指令,用汇编 语言编写的程序称为汇编语言程序。语言编写的程序称为汇编语言程序。 指令格式是指令的表示方法,通常由操作码和指令格式是指令的表示方法,通常由操作码和 操作数两部分组成。操作数两部分组成。 MCS-51单片机汇编语言指令格式为:单片机汇编语言指令格式为: 标号:操作码标号:操作码 操作数操作数1,操作数,操作数2 ;注释;注释 操作码即指令的助记符,规定了指令执行的操作操作码
3、即指令的助记符,规定了指令执行的操作 功能。功能。 操作数表示指令操作的对象,可以是一个具体的操作数表示指令操作的对象,可以是一个具体的 数据,也可以是数据的存放地址或符号。数据,也可以是数据的存放地址或符号。 注释是对该条指令所实现功能的解释或是别的说注释是对该条指令所实现功能的解释或是别的说 明,之前必须是分号,在指令中可以不出现。明,之前必须是分号,在指令中可以不出现。 通常在通常在MCS-51指令系统中有一字节、二字节和三指令系统中有一字节、二字节和三 字节指令。字节指令。 标号表示该条指令在标号表示该条指令在ROM中的存放首地址,字母中的存放首地址,字母 开头,最多可跟开头,最多可跟
4、8个字母或数字,但不能和操作码重复,个字母或数字,但不能和操作码重复, 否则程序在编译时会出错。否则程序在编译时会出错。 在在MCS-51指令系统中常用的符号有:指令系统中常用的符号有: A:累加器:累加器A。 B:寄存器:寄存器B。 C:进位、借位标志位。:进位、借位标志位。 例如:指令例如:指令SWAP A,操作码和操作数信息在,操作码和操作数信息在 一个字节里;指令一个字节里;指令MOV A,#30H,操作码占第一,操作码占第一 个字节,个字节,#30H称为称为8位立即数,占第二个字节;指位立即数,占第二个字节;指 令令DJNZ R2,DELAY,操作码占第一个字节,操,操作码占第一个字
5、节,操 作数占后两个字节,操作数可以是地址,可以是数作数占后两个字节,操作数可以是地址,可以是数 据。据。 addr11:11位目的地址。位目的地址。 addr16:16位目的地址。位目的地址。 direct:片内:片内RAM单元地址和单元地址和SFR地址(直接地址)。地址(直接地址)。 :间接寄存器或基址寄存器的前缀标志。:间接寄存器或基址寄存器的前缀标志。 #data8:8位立即数。位立即数。 #data16:16位立即数。位立即数。 Rn:当前寄存器组里的:当前寄存器组里的8个工作寄存器个工作寄存器R0R7。 Ri:间接寻址工作寄存器:间接寻址工作寄存器R0、R1。 rel:8位带符号数
6、,为相对转移指令中的偏移量。位带符号数,为相对转移指令中的偏移量。 bit:片内:片内RAM中可以直接位寻址的位。中可以直接位寻址的位。 :当前指令的存放地址。:当前指令的存放地址。 DPTR:16位外部数据指针寄存器,其中位外部数据指针寄存器,其中DPH为高为高8 位寄存器,位寄存器,DPL为低为低8位寄存器。位寄存器。 3.1.2 MCS-51单片机寻址方式单片机寻址方式 获得指令操作对象,即获得操作数的方式称为寻获得指令操作对象,即获得操作数的方式称为寻 址方式。一般来讲,寻址方式越多,编程的灵活性就址方式。一般来讲,寻址方式越多,编程的灵活性就 越大。越大。MCS-51系列单片机的指令
7、系统共有七种寻址系列单片机的指令系统共有七种寻址 方式:立即寻址、直接寻址、寄存器寻址、寄存器间方式:立即寻址、直接寻址、寄存器寻址、寄存器间 接寻址、变址寻址、相对寻址和位寻址。接寻址、变址寻址、相对寻址和位寻址。 1立即寻址立即寻址 指令中直接给出操作数,该操作数又称为立即数,指令中直接给出操作数,该操作数又称为立即数, 其前必须加前缀其前必须加前缀“#”。 例如:例如:MOV A,#30H ;A30H 该条指令的功能是把立即数该条指令的功能是把立即数30H送到累加器送到累加器A里。里。 2直接寻址直接寻址 直接寻址是在指令中直接给出存放数据的地址,直接寻址是在指令中直接给出存放数据的地址
8、, 该寻址方式只能访问片内该寻址方式只能访问片内RAM和特殊功能寄存器和特殊功能寄存器 (SFR)。)。 例如:例如:MOV 30H,31H ;30H(31H) 该条指令的功能是把片内该条指令的功能是把片内RAM内内31H单元的数单元的数 据送到片内据送到片内RAM内的内的30H单元。单元。 3寄存器寻址寄存器寻址 寄存器寻址是由指令指出某一寄存器的内容作为寄存器寻址是由指令指出某一寄存器的内容作为 操作数。该寻址方式中,寄存器用寄存器名来表示。操作数。该寻址方式中,寄存器用寄存器名来表示。 能实现该寻址的寄存器有:累加器能实现该寻址的寄存器有:累加器A、寄存器、寄存器B、进位、进位 C、DP
9、TR和寄存器和寄存器R0R7。 例如:例如:MOV A,R7 ;A(R7) 该条指令的功能是把寄存器该条指令的功能是把寄存器R7里的数据送到累加里的数据送到累加 器器A里。里。 4寄存器间接寻址寄存器间接寻址 指令操作数对应的寄存器中存放的不是操作数,指令操作数对应的寄存器中存放的不是操作数, 而是操作数所在的地址,该地址内存放的数据才是而是操作数所在的地址,该地址内存放的数据才是 操作数。能实现该寻址的寄存器有操作数。能实现该寻址的寄存器有R0、R1和和DPTR。 例如:例如:MOV 30H,#0AH ;把立即数;把立即数0AH 送到送到30H单元中单元中 MOV R0,#30H ;把立即数
10、;把立即数30H送送 到寄存器到寄存器R0中中 MOV A,R1 ;把;把30H中的内容送到中的内容送到 累加器累加器A里,里,A(R0)=0AH 5变址寻址变址寻址 变址寻址方式常用于访问程序存储器中的数据表,变址寻址方式常用于访问程序存储器中的数据表, 即查表指令。只能访问,不能修改,助记符为即查表指令。只能访问,不能修改,助记符为MOVC。 该寻址方式以程序计数器该寻址方式以程序计数器PC或数据指针或数据指针DPTR作作 为基址寄存器,以累加器为基址寄存器,以累加器A作为变址寄存器,作为变址寄存器,A里的数里的数 据即为被寻址操作数相对于基地址的偏移量。据即为被寻址操作数相对于基地址的偏
11、移量。 被寻址操作数地址被寻址操作数地址=基址寄存器基址寄存器PC或数据指针或数据指针DPTR+累加器累加器A 例如:设(例如:设(DPTR)=2000H,(,(A)=30H,执行如下指令,执行如下指令 MOVC A,A+DPTR ;取;取ROM中中2030H单元的数据单元的数据 送累加器送累加器A 变址寻址方式的指令只有两条,另一条为变址寻址方式的指令只有两条,另一条为MOVC A,A+PC。 6相对寻址相对寻址 相对寻址方式要寻找下一条要执行指令的地址。相对寻址方式要寻找下一条要执行指令的地址。 下一条要执行的指令的目标地址为:下一条要执行的指令的目标地址为: 目的地址目的地址=转移指令所
12、在地址转移指令所在地址+偏移量(偏移量(rel)+转移转移 指令字节数指令字节数 注意:偏移量为一字节二进制补码数,它的范围注意:偏移量为一字节二进制补码数,它的范围 为为-128+127。 例如:例如:LJMP START ;该条指令的功能是跳;该条指令的功能是跳 转到标号为转到标号为“START”的程序段开始执行的程序段开始执行 7位寻址位寻址 位寻址是对片内位寻址是对片内RAM的位寻址区和某些可位寻的位寻址区和某些可位寻 址的特殊功能寄存器的各位进行位操作的寻址方式。址的特殊功能寄存器的各位进行位操作的寻址方式。 片内片内RAM的位寻址区为的位寻址区为20H2FH的的128个位;个位;
13、SFR中字节地址能被中字节地址能被8整除的寄存器各位都可位寻址。整除的寄存器各位都可位寻址。 例如:例如:STEB P1.7 该条指令的功能是将该条指令的功能是将P1口的第口的第8位置位置“1”。 3.1.3 MCS-51单片机指令功能单片机指令功能 一般来说,单片机的寻址方式越多,指令集一般来说,单片机的寻址方式越多,指令集 合越丰富。寻址方式和指令系统是衡量单片机的合越丰富。寻址方式和指令系统是衡量单片机的 重要指标。重要指标。MCS-51系列单片机指令系统分为:单系列单片机指令系统分为:单 字节指令(字节指令(49条),双字节指令(条),双字节指令(46条)和三字条)和三字 节指令(节指
14、令(16条);还可按执行时间分为:单机器条);还可按执行时间分为:单机器 周期指令(周期指令(64条),双机器周期指令(条),双机器周期指令(45条)和条)和 四机器周期指令(四机器周期指令(2条)。条)。 MCS-51系列单片机指令系统的指令按其功能可分为五类:系列单片机指令系统的指令按其功能可分为五类: (1)数据传送类指令;)数据传送类指令; (2)算术运算类指令;)算术运算类指令; (3)逻辑运算类指令;)逻辑运算类指令; (4)控制转移类指令;)控制转移类指令; (5)位操作类指令。)位操作类指令。 下面分别介绍各指令的功能,也可查阅附录。下面分别介绍各指令的功能,也可查阅附录。 1
15、数据传送类指令(数据传送类指令(29条)条) 数据传送类指令是单片机指令系统里最基本、最数据传送类指令是单片机指令系统里最基本、最 常用的指令。主要功能是完成寄存器、累加器、片内常用的指令。主要功能是完成寄存器、累加器、片内 RAM等的数据传送。等的数据传送。 一般指令格式为:一般指令格式为:MOV , 按指令的目的操作数不同,分四种情况介绍。按指令的目的操作数不同,分四种情况介绍。 (1)以累加器)以累加器A为目的操作数(为目的操作数(4条)条) MOV A,#data MOV A,Rn MOV A,Ri MOV A,direct (2)以寄存器)以寄存器Rn为目的操作数(为目的操作数(3条
16、)条) MOV Rn,A MOV Rn,direct MOV Rn,#data (3)以直接地址为目的操作数()以直接地址为目的操作数(5条)条) MOV direct,#data MOV direct,A MOV direct,Rn MOV direct,Ri MOV direct1,direct2 (4)以间接地址为目的操作数()以间接地址为目的操作数(3条)条) MOV Ri,A MOV Ri,direct MOV Ri,#data (5)以)以DPTR为目的操作数(为目的操作数(1条)条) MOV DPTR,#data16 (6)片外)片外RAM数据传送指令(数据传送指令(4条)条)
17、MOVX A,Ri MOVX A,DPTR MOVX Ri,A MOVX DPTR,A (7)查表指令()查表指令(2条)条) MOVC A,A+DPTR MOVC A,A+PC (8)字节交换指令()字节交换指令(5条)条) XCH A,direct XCH A,Rn XCH A,Ri XCHD A,Ri SWAP A (9)堆栈操作指令()堆栈操作指令(2条)条) 堆栈操作遵守堆栈操作遵守“后进先出后进先出”或或“先进后出先进后出”的的 原则,在片内原则,在片内RAM中开辟的用于暂存数据的空间区中开辟的用于暂存数据的空间区 域叫做堆栈,地址指针为域叫做堆栈,地址指针为SP,始终指向栈顶的位
18、置。,始终指向栈顶的位置。 PUSH direct 该条指令的功能是先将堆栈指针该条指令的功能是先将堆栈指针SP的内容加的内容加1, 指向栈顶的空单元,将直接地址中的数据压入指向栈顶的空单元,将直接地址中的数据压入SP指指 向的单元,向的单元,SP的内容就变为新的栈顶。的内容就变为新的栈顶。 POP direct 该条指令的功能是先将栈顶该条指令的功能是先将栈顶SP指向的单元内容指向的单元内容 弹出给直接地址单元,弹出给直接地址单元,SP的内容自动减的内容自动减1,SP又指又指 向新的栈顶。向新的栈顶。 注意:系统复位后注意:系统复位后SP的值为的值为07H,一般在编程,一般在编程 时把时把S
19、P的值设定在片内的值设定在片内RAM的的30H7FH区域。区域。 2算术运算类指令(算术运算类指令(24条)条) 算术运算类指令包括算术运算类指令包括8位无符号数的加法、减法、位无符号数的加法、减法、 乘法和除法四则运算,增乘法和除法四则运算,增1、减、减1等指令。读者必须等指令。读者必须 注意这些指令在应用时会对程序状态字寄存器注意这些指令在应用时会对程序状态字寄存器PSW 的某些标志位产生影响。的某些标志位产生影响。 (1)加法指令()加法指令(8条)条) ADD A,#data ADD A,direct ADD A,Ri ADD A,Rn ADDC A,#data ADDC A,dire
20、ct ADDC A,Ri ADDC A,Rn (2)加)加1指令(指令(5条)条) INC A INC direct INC Rn INC Ri INC DPTR (3)带借位的减法指令()带借位的减法指令(4条)条) SUBB A,#data SUBB A,direct SUBB A,Ri SUBB A,Rn (4)减)减1指令(指令(4条)条) DEC A DEC direct DEC Rn DEC Ri 注意:没有对注意:没有对DPTR的减的减1操作指令。操作指令。 (5)乘法指令()乘法指令(1条)条) MUL AB ;累加器;累加器A里的里的8位无符号二进制数与位无符号二进制数与 寄
21、存器寄存器B里的里的8位无符号二进制数相乘,积的高字节位无符号二进制数相乘,积的高字节 存于存于B中,低字节存于中,低字节存于A中。中。 (6)除法指令()除法指令(1条)条) DIV AB ;累加器;累加器A中的中的8位无符号二进制位无符号二进制 数除以寄存器数除以寄存器B中的中的8位无符号二进制数,商存于位无符号二进制数,商存于 A中,余数存于中,余数存于B中。中。 (7)十进制调整指令()十进制调整指令(1条)条) DA A 如果用户用如果用户用ADD和和ADDC对两个对两个BCD码数相加码数相加 时需要用时需要用DA A指令对结果调整,否则会出错。指令对结果调整,否则会出错。 调整原理
22、为:如果(调整原理为:如果(A0A3)9或(或(AC)=1, 则低则低4位(位(A0A3)+6调整;如果(调整;如果(A4A7)9或或 (CY)=1,则高,则高4位(位(A4A7)+6调整。调整。 注意:注意:DA A指令只对累加器指令只对累加器A起作用,不能单独起作用,不能单独 使用,必须在使用,必须在ADD和和ADDC后,不适用于减法指令。后,不适用于减法指令。 3逻辑运算类指令(逻辑运算类指令(24条)条) 此类指令包括逻辑与、或、非、异或、求反、清此类指令包括逻辑与、或、非、异或、求反、清0、 循环移位等。循环移位等。 (1)逻辑)逻辑“或或”运算(运算(6条)条) ORL direc
23、t,A ORL direct,#data ORL A,#data ORL A,direct ORL A,Ri ORL A,Rn 逻辑逻辑“或或”指令的功能是两个操作数按位相指令的功能是两个操作数按位相 “或或”,也可对某位置,也可对某位置1(其余位不变)。(其余位不变)。 (2)逻辑)逻辑“与与”运算(运算(6条)条) ANL direct,A ANL direct,#data ANL A,#data ANL A,direct ANL A,Ri ANL A,Rn 逻辑逻辑“与与”指令的功能是两个操作数按位相指令的功能是两个操作数按位相 “与与”,也可对某位置,也可对某位置0(其余位不变)。(其
24、余位不变)。 (3)逻辑)逻辑“异或异或”运算(运算(6条)条) XRL direct,A XRL direct,#data XRL A,#data XRL A,direct XRL A,Ri XRL A,Rn 逻辑逻辑“异或异或”指令的功能是两个操作数按位相指令的功能是两个操作数按位相 “异或异或”。也可对某位取反(其余位不变)。也可对某位取反(其余位不变)。 (4)循环移位指令()循环移位指令(4条)条) RR A RRC A RL A RLC A 图图3-1 移位循环指令操作示意图移位循环指令操作示意图 (5)求反指令()求反指令(1条)条) CPL A (6)清)清0指令(指令(1条)
25、条) CLR A 4控制转移类指令(控制转移类指令(17条)条) 控制转移类的作用是改变程序执行的方向,或控制转移类的作用是改变程序执行的方向,或 调用子程序,或从子程序返回。调用子程序,或从子程序返回。 (1)无条件转移指令()无条件转移指令(4条)条) LJMP addr16 AJMP addr11 JMP A+DPTR SJMP rel (2)条件转移指令()条件转移指令(8条)条) JZ rel JNZ rel 以上两条指令为累加器以上两条指令为累加器A判判0转移指令。转移指令。 JC rel JNC rel 以上两条指令通过判断程序状态字以上两条指令通过判断程序状态字PSW里进位里进
26、位 标志位标志位CY的值来判断是否转移。的值来判断是否转移。 CJNE A,#data,rel CJNE A,direct,rel CJNE Ri,#data,rel CJNE Rn,#data,rel 以上指令的功能是比较两个数是否相等,同时以上指令的功能是比较两个数是否相等,同时 影响影响PSW的的CY位。若第一个操作数大于第二个操位。若第一个操作数大于第二个操 作数,则作数,则CY=0;若第一个操作数小于第二个操作数,;若第一个操作数小于第二个操作数, 则则CY=1;若两数相等,则;若两数相等,则CY=0,顺序执行。,顺序执行。 DJNZ Rn,rel DJNZ direct,rel 以
27、上指令为循环转移指令,也称为减以上指令为循环转移指令,也称为减1不为不为0转移转移 指令,其功能是把源操作数减指令,其功能是把源操作数减1,再判断其值是否为,再判断其值是否为0, 若不为若不为0就跳到目的地址去执行,若为就跳到目的地址去执行,若为0,则顺序执行。,则顺序执行。 LCALL addr16 ;长调用指令,;长调用指令,addr16为入口为入口 地址,先将该指令的下一条指令的地址压入堆栈,将地址,先将该指令的下一条指令的地址压入堆栈,将 子程序入口地址装入程序计数器子程序入口地址装入程序计数器PC,CPU再转去执再转去执 行子程序。本指令可调用行子程序。本指令可调用64KB范围内的子
28、程序。范围内的子程序。 ACALL addr11 ;短调用指令,或称绝对调用指;短调用指令,或称绝对调用指 令,本指令和长调用指令的功能相同,只是令,本指令和长调用指令的功能相同,只是addr11 为为11位入口地址,被调用的子程序入口地址必须和位入口地址,被调用的子程序入口地址必须和 调用指令下一条指令的第一个字节在同一调用指令下一条指令的第一个字节在同一2KB存储存储 区内。区内。 RET ;子程序返回指令,将堆栈内的断点;子程序返回指令,将堆栈内的断点 地址弹出,并送地址弹出,并送PC,CPU返回到原断点处继续执返回到原断点处继续执 行原程序。行原程序。 RETI ;中断返回指令,具有;
29、中断返回指令,具有RET指令的功能,指令的功能, 还能将中断状态寄存器内容清除。还能将中断状态寄存器内容清除。 NOP ;空操作,仅将;空操作,仅将PC的内容加的内容加1。 5位操作类指令(位操作类指令(15条条 ) MOV C,bit MOV bit,C 以上两条指令为位传送指令。以上两条指令为位传送指令。 CLR C CLR bit CPL C CPL bit SETB C SETB bit 以上六条指令为位修改指令。以上六条指令为位修改指令。 ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit 以上四条指令为位逻辑运算指令。以上四条指令为位逻辑运算指令。
30、JB bit,rel JNB bit,rel JBC bit,rel 以上三条指令和累加器判以上三条指令和累加器判0指令都属于位控制转指令都属于位控制转 移指令。常用于比较两数大小、用户设定的标志位移指令。常用于比较两数大小、用户设定的标志位 判断控制、判断控制、I/O端口位状态测试等。端口位状态测试等。 3.2 MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 在单片机的学习过程中,会设计硬件电路是远在单片机的学习过程中,会设计硬件电路是远 远不够的,软件编程非常关键,只有软件程序和硬远不够的,软件编程非常关键,只有软件程序和硬 件电路配合工作,才会体现出单片机的魅力。编写件电路配合
31、工作,才会体现出单片机的魅力。编写 单片机程序的语言按结构及功能可分为三种:机器单片机程序的语言按结构及功能可分为三种:机器 语言、汇编语言和高级语言。单片机能直接识别和语言、汇编语言和高级语言。单片机能直接识别和 执行机器语言程序。执行机器语言程序。MCS-51单片机的程序设计常用单片机的程序设计常用 汇编语言和汇编语言和C语言两种语言,本书主要介绍汇编语语言两种语言,本书主要介绍汇编语 言的指令及程序设计。言的指令及程序设计。 3.2.1 MCS-51单片机汇编语言及其特点单片机汇编语言及其特点 汇编语言是以助记符或操作码表示的指令,用汇汇编语言是以助记符或操作码表示的指令,用汇 编语言编
32、写的程序称为汇编语言程序。编语言编写的程序称为汇编语言程序。 MCS-51单片机汇编语言指令格式为:单片机汇编语言指令格式为: 标号:操作码标号:操作码 操作数操作数1,操作数,操作数2 ;注释;注释 单片机不能直接执行汇编语言程序,必须翻译单片机不能直接执行汇编语言程序,必须翻译 成机器语言程序才能执行,这个翻译过程被称为汇成机器语言程序才能执行,这个翻译过程被称为汇 编。编。 汇编语言有以下特点:汇编语言有以下特点: (1)指令系统丰富,易于理解和记忆,程序可读性强。)指令系统丰富,易于理解和记忆,程序可读性强。 (2)汇编语言指令与机器语言指令一一对应,运行速度)汇编语言指令与机器语言指
33、令一一对应,运行速度 快,占用存储空间小。快,占用存储空间小。 (3)汇编语言可直接访问寄存器、存储单元、)汇编语言可直接访问寄存器、存储单元、I/O端口端口 等,可满足实时控制要求。等,可满足实时控制要求。 (4)编程时必须对单片机的外围硬件电路非常熟悉。)编程时必须对单片机的外围硬件电路非常熟悉。 (5)通用性太差,不同单片机的汇编语言之间很难通用。)通用性太差,不同单片机的汇编语言之间很难通用。 汇编语言程序设计时,也就是汇编语言编写单片汇编语言程序设计时,也就是汇编语言编写单片 机程序时需要注意,单片机的寄存器、存储空间等要机程序时需要注意,单片机的寄存器、存储空间等要 做出合理的具体
34、安排,而且设计人员必须对单片机的做出合理的具体安排,而且设计人员必须对单片机的 结构及各类寄存器、定时计数器及中断等非常熟悉,结构及各类寄存器、定时计数器及中断等非常熟悉, 这样在设计程序时才会方便使用。这样在设计程序时才会方便使用。 3.2.2 MCS-51单片机汇编语言伪指令单片机汇编语言伪指令 伪指令是非执行指令,只在对源程序汇编过程中伪指令是非执行指令,只在对源程序汇编过程中 起某种控制作用,并不产生目标代码,也不影响程序起某种控制作用,并不产生目标代码,也不影响程序 的执行。的执行。 1ORG(Origin,起点),起点) 用来指出此语句后的程序或数据块的起始地址。格式为:用来指出此
35、语句后的程序或数据块的起始地址。格式为: ORG 16位地址位地址 该指令规定了下一条指令的存放首地址,在一个源该指令规定了下一条指令的存放首地址,在一个源 程序里可以多次使用,应从小到大,不能重叠,即不同程序里可以多次使用,应从小到大,不能重叠,即不同 程序段间不能重叠。程序段间不能重叠。 2EQU(Equate,等值),等值) EQU为赋值指令,把操作数段中的地址或数据赋值为赋值指令,把操作数段中的地址或数据赋值 给字符名称。格式为:给字符名称。格式为: 字符名称字符名称 EQU 操作数操作数 例如:例如:HOUR EQU 30H ;给标号;给标号HOUR赋值为赋值为30H 使用该指令时必
36、须先赋值,后使用,优点是字符使用该指令时必须先赋值,后使用,优点是字符 名称对应的值需要改动时,只改此赋值指令后的值,名称对应的值需要改动时,只改此赋值指令后的值, 程序内的值也就全修改了,节省了大量修改程序的时程序内的值也就全修改了,节省了大量修改程序的时 间,非常方便。间,非常方便。 3DB(Define Byte,定义字节),定义字节) 定义从指定地址单元开始存放的若干字节数据,定义从指定地址单元开始存放的若干字节数据, 常用于定义数据常数表格。格式为:常用于定义数据常数表格。格式为: 标号:标号:DB 字节数据表字节数据表 与与DB指令的功能相似,指令的功能相似,DW用来定义一个字,用
37、来定义一个字, 一个字为两个字节,即一个字为两个字节,即16位二进制数。格式为:位二进制数。格式为: 4DW(Dwfine Word,定义一个字),定义一个字) 标号:标号:DW 字或字符串字或字符串 由于一个字为由于一个字为16位二进制数,故高字节数存入低位二进制数,故高字节数存入低 位地址,低字节数存入高位地址。位地址,低字节数存入高位地址。 例如:例如: ORG 2000H TAB:DW 2345H,20H 2000H2003H单元中分别存放单元中分别存放23H、45H、00H和和20H。 5BIT 该指令为位地址符号指令,功能是把位地址赋给该指令为位地址符号指令,功能是把位地址赋给 规
38、定的字符名称。格式为:规定的字符名称。格式为: 字符名称字符名称 BIT 位地址位地址 例如:例如:AA BIT P2.0 6DATA 该指令是数据地址赋值指令,功能是把数据地址该指令是数据地址赋值指令,功能是把数据地址 或代码地址赋给规定的字符名称。格式为:或代码地址赋给规定的字符名称。格式为: 字符名称字符名称 DATA 表达式表达式 例如:例如:AA DATA 1000H ;汇编后;汇编后AA的值为的值为1000H 7END 该指令表示程序结束,一个源程序只能有一个该指令表示程序结束,一个源程序只能有一个 END指令,并且在源程序的末端。如果指令,并且在源程序的末端。如果END出现在出现
39、在 程序中间,则其后的语句不予汇编。程序中间,则其后的语句不予汇编。 3.2.3 汇编程序设计步骤与基本结构汇编程序设计步骤与基本结构 1编写汇编语言程序的步骤编写汇编语言程序的步骤 (1)分析任务:分析要完成的设计任务,明确系统)分析任务:分析要完成的设计任务,明确系统 设计条件、要求等,确定系统的硬件资源。设计条件、要求等,确定系统的硬件资源。 (2)确定算法:算法是程序设计的依据,决定了将)确定算法:算法是程序设计的依据,决定了将 来的单片机系统工作的正确性和可靠性。来的单片机系统工作的正确性和可靠性。 (3)构思流程:程序流程图可以直观的体现出设计)构思流程:程序流程图可以直观的体现出
40、设计 者的设计思想,程序设计者可以根据要实现的目标者的设计思想,程序设计者可以根据要实现的目标 先画出整体流程图,再画出局部流程图。先画出整体流程图,再画出局部流程图。 (4)编写程序:根据流程图,结合单片机指令系统,)编写程序:根据流程图,结合单片机指令系统, 编写源程序,要求程序简单,层次分明,可读性强。编写源程序,要求程序简单,层次分明,可读性强。 (5)上机调试:编写好的程序一定要上机调试,可)上机调试:编写好的程序一定要上机调试,可 以消除语法等错误,最后在硬件系统上调试、修改,以消除语法等错误,最后在硬件系统上调试、修改, 直至到达预期效果。直至到达预期效果。 2程序基本结构程序基
41、本结构 程序按照执行方式可分为三种基本结构:顺序结构、程序按照执行方式可分为三种基本结构:顺序结构、 分支结构和循环结构。分支结构和循环结构。 (1)顺序结构)顺序结构 顺序结构的程序是按编写顺序依次往下逐条执行,顺序结构的程序是按编写顺序依次往下逐条执行, 是最简单、最基础的程序结构。是最简单、最基础的程序结构。 例例1:编写:编写1+2的程序,要求将加数和被加数分别的程序,要求将加数和被加数分别 送入送入50H和和51H单元,和送入单元,和送入52H单元。单元。 程序段如下:程序段如下: ORG 0000H MOV 50H,#01H ;将;将1存入存入50H中中 MOV 51H,#02H
42、;将;将2存入存入51H中中 MOV R0,#50H ;设;设R0为数据指针为数据指针 MOV A,R0 ;取出;取出1 INC R0 ;修改数据指针;修改数据指针 ADD A,R0 ;取出;取出2和和1相加,和在累加器相加,和在累加器A里里 INC R0 ;修改数据指针;修改数据指针 MOV R0,A ;将结果存在;将结果存在51H单元里单元里 (2)分支结构)分支结构 在程序设计中,需要对单片机的某种情况进行在程序设计中,需要对单片机的某种情况进行 判断,根据判断的结构选择程序执行的方向。利用判断,根据判断的结构选择程序执行的方向。利用 条件转移指令形成不同的程序分支就是分支程序。条件转移
43、指令形成不同的程序分支就是分支程序。 例例2:设片内:设片内RAM40H和和41H单元各存一个单元各存一个8位位 二进制无符号数,编程比较它们的大小,大数存入二进制无符号数,编程比较它们的大小,大数存入 42H单元。单元。 分析:判断两数的大小,根据分析:判断两数的大小,根据CY位的值判断位的值判断 分支。有两种实现方法:用减法指令或用比较指令。分支。有两种实现方法:用减法指令或用比较指令。 程序段如下:程序段如下: ORG0000H LJMPMAIN ORG0030H MAIN:CLRC MOV A,40H SUBB A,41H JNC LP MOV 42H,41H SJMP $ LP: M
44、OV 42H,40H END 分支程序设计的关键是如何判断分支条件。分支程序设计的关键是如何判断分支条件。 MCS-51单片机是把标志位或累加器单片机是把标志位或累加器A或片外或片外RAM 某位的结果状态作为判断的条件,正确选择条件转某位的结果状态作为判断的条件,正确选择条件转 移指令也是至关重要的。移指令也是至关重要的。 (3)循环结构)循环结构 程序设计时,有时一部分程序会在源程序里重程序设计时,有时一部分程序会在源程序里重 复执行多次,可采用循环结构程序,这样可使程序复执行多次,可采用循环结构程序,这样可使程序 得到很大简化,节省存储空间。得到很大简化,节省存储空间。 循环程序一般由四部
45、分组成:循环程序一般由四部分组成: 循环初始化:循环初始化:设置地址指针、工作寄存器、循环设置地址指针、工作寄存器、循环 次数等循环开始时的状态。次数等循环开始时的状态。 循环体:循环体:循环程序重复执行的程序段。循环程序重复执行的程序段。 循环控制部分:循环控制部分:修改指针、寄存器的值等检查循环修改指针、寄存器的值等检查循环 是否继续,若循环条件满足,继续循环;否则结束循是否继续,若循环条件满足,继续循环;否则结束循 环。环。 结束部分:结束部分:循环结束,保存结果。循环结束,保存结果。 循环程序按循环次数可分为单循环程序和多循环程序,循环程序按循环次数可分为单循环程序和多循环程序, 单循
46、环程序又可分为次数已知的循环程序和次数未知单循环程序又可分为次数已知的循环程序和次数未知 的循环程序。的循环程序。 例例3:将:将50H为起点的为起点的6个单元清个单元清0。 程序段如下:程序段如下: ORG 0000H CLEAR:CLR A MOV R0,#50H MOV R1,#06H LP: MOV R0,A INC R0 DJNZ R1,LP SJMP $ 此程序为循环次数已知的循环程序,其此程序为循环次数已知的循环程序,其24句句 程序为循环初始化,程序为循环初始化,57句为循环体。句为循环体。 例例4:设晶体振荡器的频率为:设晶体振荡器的频率为12MHz,编写一段延,编写一段延 时时10s的程序段。的程序段。 程序段如下:程序段如下: DELAY:MOV R7,#0BFH DL1: MOV R6,#0BDH DL0: MOV R5,#89H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 NOP RET 以上延时程序为多重循环程序,改变寄存器以上延时程序为多重循环程序,改变寄存器R5、 R6或或R7的值可以改变延迟时间,在编程时非常常的值可以改变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字化赋能:禹通市政工程有限公司成本核算业务管理系统的构建与实践
- 2026年上半年防震减灾工作总结及下半年工作计划(2篇)
- 数字化赋能:增量房交易税收征管系统的设计与实现
- 数字化赋能:中小学校舍安全工程的信息化变革与实践
- 数字化浪潮下证券公司网络升级的创新变革与实践方案
- 数字化浪潮下湖北移动公司市场发展策略的创新与突破
- 数字化浪潮下广西华运公司发展战略的深度剖析与转型路径
- 数字化浪潮下QP科技公司发展战略转型与升级研究
- 2025 可爱植物作文课件
- 2025年前台形象能力测试
- 【新高教版中职数学基础模块下册PPT】7.2旋转体
- 绝对最大弯矩公式
- 维克多高中英语3500词汇
- 水稻幼穗发育
- 疗养院新康复大楼lte室内分布测试报告
- 全国优质课一等奖小学四年级道德与法治下册《学会合理消费》(精品课件)
- 核磁共振上册氢谱
- 皮肤科常见疾病康复
- 输气管道毕业论文输气管道工程初步设计
- 第3章物流类型
- 烹饪化学教程课件
评论
0/150
提交评论