系列单片机指令系统和汇编语言程序示例.ppt
《系列单片机指令系统和汇编语言程序示例.ppt》由会员分享,可在线阅读,更多相关《系列单片机指令系统和汇编语言程序示例.ppt(123页珍藏版)》请在三一办公上搜索。
1、单片微机原理及应用教学课件,第三章 51系列单片机指令系统和汇编语言程序示例,本重点:寻址方式;MCS-51指令集;伪指令;汇编语言与简单程序设计.,它通过单片机的内部总线,将单片机内部的各个部分:程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等联系在一起。,内部总线有三种,数据总线:专门用来传送数据信息。,地址总线:专门用来传送地址信息,选中各操作单元。,控制总线:专门用来传送CPU各种控制命令,以便CPU统一指挥协调工作。完成程序所要执行的各种功能。,程序计数器PC(program Counter),程序计数器在物理上是独立的,它不属于特殊内部数据存
2、储器块中。PC是一个16位的计数器,由两个八位寄存器PCH和PCL组成,用于存放一条要执行的指令地址,寻址范围为64kB(ROM),PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序的执行顺序。,CPU执行程序一般包括两个主要过程,第一,就是从程序存储器中取出指令,指令的地址由PC指针提供。,第二,就是执行指令过程,取出的指令代码首先被送到CPU中控制器中的指令寄存器,再通过指令译码器译码变成各种电信号,从而实现指令的各种功能。,执行,取指令,分析,3.1 51系列单片机
3、指令系统概述,指令与指令系统的概念,汇编语言:由于机器语言不便被人们识别、记忆、理解和使用,因此给每条机器语言指令赋予助记符号来表示,这就形成了汇编语言。,指令:是使计算机内部执行的一种操作,提供给用户编程使用的一种命令。,机器语言:由构成计算机的电子器件特性所决定,计算机只能识别二进制代码。以二进制代码来描述指令功能的语言,称之为机器语言。,也就是说,汇编语言是便于人们识别、记忆、理解和使用的一种指令形式,它和机器语言指令一一对应,也是由计算机的硬件特性所决定的。,指令系统:计算机能够执行的全部操作所对应的指令集合,称为这种计算机的指令系统。,指令系统全面展示出了计算机的操作功能,也就是它的
4、工作原理;从用户使用的角度来看,指令系统是提供给用户使用计算机功能的软件资源。要让计算机处理问题,首先要编写程序。编写程序实际上是从指令系统中挑选一个指令子集的过程。,单片微机原理及应用教学课件,指令一般有功能、时间和空间三种属性。,51系列单片机指令集含有111条指令,每条指令在执行时要花去一定的时间,以机器周期为单位。按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条),按指令的功能分类,可分为5大类:数据传送类(29条);算术运算类(24条)逻辑运算及移位类(24);控制转移类(17条)位操作类(17条),每条指令在程序存储器ROM中占据一定的空间,以字节为单位。按指令
5、所占字节数分类:单字节(49条);双字节(46条);3字节(16条),指令的描述形式有两种:机器语言形式和汇编语言形式。现在描述计算机指令系统及实际应用中主要采用汇编语言形式。,目标程序:采用机器语言编写的程序称之为目标程序。,源程序:采用汇编语言编写的程序称之为源程序。,汇编有两种方式:机器汇编和手工汇编。机器汇编是用专门的汇编程序,在计算机上进行翻译;手工汇编是编程员把汇编语言指令逐条翻译成机器语言指令。现在主要使用机器汇编。,汇编:计算机能够直接识别并执行的只有机器语言。汇编语言程序不能被计算机直接识别并执行,必须经过一个中间环节把它翻译成机器语言程序,这个中间过程叫做汇编。,目前,比较
6、流行C语言单片机。C语言具有移植性强,具有通用性,阅读性好等特点,因此得到广泛应用。用C语言编写单片机程序,编译软件是先把C程序编译成汇编语言,在把汇编语言翻译成机器语言。汇编的特点:简洁,准确,生成代码质量高。我们学习以汇编为主,今后应用,鼓励大家用C。,单片微机原理及应用教学课件,ASM-51指令的格式,方括符 表示可选项标号代表指令所在的首地址,在跳转、调用时常常用到,1-8个字母/数字,“:”结尾操作码就是指令功能助记符,指令实体目的操作数源操作数(无操作数,单操作数,双操作数)注释,以“;”开头,标号:操作码 目的操作数,源操作数;注释,3.1.2 MCS-51单片机指令系统及其指令
7、格式,指令描述符号介绍,Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。Ri当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。direct 表示直接寻址的地址,一般指片内低128字节RAM或SFR。#data包含在指令中的8位常数。#data16包含在指令中的16位常数。addr1616位直接地址,现在长以标号地址代替。addr1111位直接地址,现在长以标号地址代替。,rel8位带符号的偏移字节,简称偏移量,现在长以标号地址代替。DPTR数据指针,可用作16位地址寄存器。bit内部RAM或专用寄存器中的直接寻址位。A累加器。B专用寄存器,用于乘法和除法指令中。C进位
8、标志或进位位,或布尔处理机中的累加器。,间址寄存器或基址寄存器的前缀,如Ri,DPTR。/位操作数的前缀,表示对该位操作数取反,如/bit。()片内RAM的直接地址或寄存器中的内容。()表示以单元的内容为地址的存储器单元中的内容,即(X)作地址,该地址单元中的内容用(X)表示。所以X只能是Ri/SP所对应的地址。箭头左边的内容被箭头右边的内容所代替。,单片微机原理及应用教学课件,1、立即寻址操作数直接在指令中给出。例:MOV A,#64H;(A)立即数 64H ADD A,#05H;(A)(A)+立即数 05H注意:符号“#”表明其后跟的是立即数,立即数就是数字量本身,存放在ROM区。,单片微
9、机原理及应用教学课件,2、寄存器寻址从寄存器中读取操作数或存放操作数进寄存器例:MOV A,B;(A)(B)MOV 30H,R0;(30H)(R0)MOV A,R1;(A)(R1),寄存器寻址方式的寻址范围:1)4个工作寄存器组共32个通用寄存器(在指令中只能使用当前寄存器组)2)部分特殊功能寄存器。如A,B,DPTR。注意:(1)寄存器B只有在执行乘除法指令时才是寄存器寻址方式;(2)累加器A有三种表示方式:A、ACC、0E0H,它们分别属于不同的寻址方式,A为寄存器寻址,ACC、0E0H属于直接寻址。(3)DPTR:程序中写DPTR则为寄存器寻址;如果程序中写DPH(83H)和DPL(82
10、H),则为直接寻址。,单片微机原理及应用教学课件,3、直接寻址指令中直接给出了操作数所在单元的地址或名称 例:MOV R1,1FH;(R1)(1FH)MOV 30H,4AH;(30H)(4AH),在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。例如:MOV A,SP;(A)(SP)MOV A,81H;(A)(SP)MOV P1,#5AH;(P1)(#5AH)MOV 90H,#5AH;(P1)(#5AH)MOV B,30H;(B)(30H),相同,相同,直接寻址方式可访问的范围-direct,1)特殊功能寄存器。这部分存储单元既可以用单元地址给出,也可以用寄存器符号的形式给出。如
11、:MOV A,90H 或 MOV A,P1为同一条指令的两种写法。(A、B、DPTR除外,前面已说明)2)内部数据存储器的低128个字节单元。直接以单元地址的形式给出(00H-7FH)。对于8032/8052等单片机,其内部高128字节RAM(80HFFH)不能用直接寻址方式访问。,单片微机原理及应用教学课件,4、寄存器间接寻址寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数,注意:1)“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。2)符号“”表示“在”,其含义与读音皆同“at”。,例:MOV R1,#80H;(R1)立即数80H
12、MOV R1,#2FH;(80H)立即数2FH MOV A,R1;(A)(R1)=2FH,图3.1 寄存器间接寻址示意图,单片微机原理及应用教学课件,52系列单片机有256字节的片内RAM,其中的80H0FFH的RAM与SFR所占地址重叠。,MOV A,90H 等效于 MOV A,P1 属直接寻址 MOV A,R0;事先已知(R0)=#90H 执行的操作:A(90H)属寄存器间接寻址,随意写的指令如:MOV A,85H 则是非法的!,于是规定:80H0FFH范围内的RAM只能用寄存器间接寻址方式,而SFR只能用直接寻址方式。从而解决了地址冲突的问题。例如:,单片微机原理及应用教学课件,存储器配
13、置(片内RAM),89C51片内RAM 128字节(00H7FH)89C52片内RAM 256字节(00H0FFH),00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SFR分布在80H-FFH其中92个位可位寻址,80H,FFH,89C51 128字节,89C52 256字节,只能直接寻址,那么对于这高128的RAM如何访问?(间址),可以直接寻址,小结:1、对低128B的RAM可以采用直接寻址,或寄存器间接寻址方式进行读写。2、对于高128B的RAM只能采用寄存器间接寻址方式进行读写。3、对SRF只能采用直接寻址
14、方式进行读写,常常采用助记符。,单片微机原理及应用教学课件,5、变址寻址 也称为:基址寄存器+变址寄存器间接寻址,以16位的地址指针寄存器DPTR或PC寄存器(16位)为基址寄存器,以累加器 A 为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。,例:MOV A,#0A4H MOV DPTR,#1234H MOVC A,A+DPTR;(A)(A)+(DPTR)操作:将A4H+1234H=12D8H单元中的数放进累加器AMOVC A,A+PC;(A)(A)+(PC)单字节指令,单片微机原理及应用教学课件,6、相对寻址(P.58)当前PC值加上指令
15、中规定的偏移量 rel,构成实际的操作数地址例:JZ rel;累加器A为零,则转移到rel目的地址=当前PC值+rel=指令存储地址+指令字节数(2)+rel,注意:1)当前PC值:指相对转移指令的存储地址加上该指令的字节数。例如:JZ rel 是一条累加器A为零就转移的双字节指令。若该指令的存储地址为2050H,则执行该指令时的当前PC值即为2052H。即当前PC值是对相对转移指令取指结束时的值。,注意:2)符号“rel”表示“偏移量”,是一个带符号的单字 节数,范围是:-128+127(80H7FH),负数表示从当前地址向前转移,正数表示从当前地址向后转移。,在实际编程中,“rel”通常用
16、标号代替,单片微机原理及应用教学课件,7、位寻址指令中直接给出了操作数所在的位地址。例:CLR P1.0;(P1.0)0 SETB ACC.7;(ACC.7)1 CPL C;(C)NOT(C),注意:1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0,ACC.7等,有的位地址则“不太明确”,如:MOV A,17H;(A)(17H),17H是字节地址 MOV ACC.0,17H;(ACC.0)(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位,单片微机原理及应用教学课件,片内RAM中有128个位可按位寻址的位,位地址:00H7FH分布在:2
17、0H2FH单元;另外,在SFR中还有92个位可按位寻址,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,27H,22H,21H,20H,26H,24H,25H,23H,28H,07 06 05 04 03 02 01 00,0F 0E 0D 0C 0B 0A 09 08,17 16 15 14 13 12 11 10,1F 1E 1D 1C 1B 1A 19 18,27 26 25 24 23 22 21 20,2F 2E 2D 2C 2B 2A 29 28,37 36 35 34 33 32 31 30,3F 3
18、E 3D 3C 3B 3A 39 38,47 46 45 44 43 42 41 40,2FH,7F 7E 7D 7C 7B 7A 79 78,位地址,总共128个可按位寻址的位,单元地址,17,D7 D6 D5 D4 D3 D2 D1 D0,单片微机原理及应用教学课件,MCS-51指令集,功能分五类,共111条指令,单片微机原理及应用教学课件,MCS-51指令集(五大类功能),数据传送类指令:(29条)算术运算类指令:(24条)逻辑运算及移位类指令:(24条)控制转移类指令:(17条)位操作(布尔操作)类指令:(17条),3.3 数据传送类指令,3.3.1 访问片内数据存储器的一般数据传送指
19、令,其格式如下:MOV,;目的操作数单元源操作数(或单元)该类指令的功能是实现数在片内RAM单元之间、寄存器之间、寄存器与RAM单元之间的传送。目的操作数和源操作数不同寻址方式的组合就派生出该类的全部16条指令。,图3.3 访问片内RAM的一般传送指令操作关系图,根据片内RAM的一般传送指令操作关系图,写出16条指令,例1、设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析下面程序。P.60 MOV R0,#30H MOV A,R0MOV R1,AMOV B,R1MOV R1,P1MOV P2,P1MOV 10H,#20H结果:(R0)=,(R1)=
20、(A)=,(B)=,(40H)=(P1)=(P2)=,(10)=;,例1、设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析下面程序。P.60 MOV R0,#30H MOV A,R0MOV R1,AMOV B,R1MOV R1,P1MOV P2,P1MOV 10H,#20H结果:(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10)=20H,3.3.2 片内特殊传送指令 1堆栈操作指令 堆栈操作有进栈和出栈,即压入和弹出数据,常用于保存或恢复现场。进栈指令用于保存片内RAM单元(低128字节)或
21、特殊功能寄存器SFR的内容;出栈指令用于恢复片内RAM单元(低128字节)或特殊功能寄存器SFR的内容。堆栈指针寄存器SP,直接地址为81H,复位后(SP)=(81H)=07H。堆栈段一般设在片内RAM30H到7FH区域内。,单片微机原理及应用教学课件,2、堆栈操作指令(2条):,PUSH压栈指令,POP 弹栈指令,堆栈区由特殊功能寄存器堆栈指针SP 管理堆栈区可以安排在片内RAM单元(低128字节)任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,而是放在RAM区的靠后的位置堆栈总是指向栈顶通常PUSH与POP两条指令成对使用,PUSH direct;(先加1,再入)1)(SP)(S
22、P)+1 修改指针,使其指向栈顶上的一个存数单元;2)(SP)direct 把直接地址单元的内容压入SP所指单元内。POP direct;(先出,再减1)1)(direct)(SP)把栈顶的数据弹出到直接寻址单元中去;2)(SP)(SP)-1 修改指针,指向新栈顶;这两条指令都是双字节指令,机器码分别为:C0 direct 和D0 direct。(先入,先出),例2 若在外部程序存储器中2000H单元开始依次存放09的平方值,数据指针(DPTR)=3A00H,用查表指令取得2003H单元的数据后,要求保持DPTR中的内容不变。,MOV A,#03HPUSH DPH PUSH DPL MOV D
23、PTR,#TABMOVC A,A+DPTR POP DPLPOP DPH执行结果:(A)09H,(DPTR)=3A00H。,;(A)03H;保护DPTR高8位入栈;保护DPTR低8位入栈;(DPTR)2000H;(A)(2000H+03H);弹出DPTR低位;弹出DPTR高位,演示,由此可见,SP只是存放堆栈的地址,所以PUSH和POP指令属寄存器间接寻址方式。,单片微机原理及应用教学课件,2、数据交换指令(5条):XCH A,direct(字节互换)XCH A,Ri(字节互换)XCH A,Rn(字节互换)(A)(direct)或(Ri),或(Rn),XCHD A,Ri 累加器 Acc的低4位
24、与(Ri)的低4位互换,各自的高4位不变,SWAP A 累加器 Acc的低4位与自身的高4位互换,单片微机原理及应用教学课件,3.3.3 片外数据存储器数据传送指令,MOVX类指令可在累加器与以DPTR或Ri所代表的外部 RAM或I/O口之间进行数据传送。,例如:MOVX A,DPTR;(A)(DPTR)读(64KB)MOVX A,Ri;(A)(Ri)读(64KB)MOVX DPTR,A;(DPTR)(A)写(256B)MOVX Ri,A;(Ri)(A)写(256B),MCS-51单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。
25、,数据存储器 6264(8K)的扩展:,89C51单片机,SRAM6264,锁存器74LS373,ALE,P2.7,8D,8Q,OE,A8-A12,A0-A7,D0-D7,G,EA,OE,CE2,51单片机能提供16条地址线,可扩展64K字节的RAM。可以用一片芯片,也可以用多片RAM,RD,WR,WE,CE1,+5V,图7-9 执行MOVX指令时的读时序,执行MOVX指令时的读时序,图7-10 执行MOVX指令时的写时序,执行MOVX指令时的写时序,读/RD有效(P3.7),写/WR有效(P3.6)。由于R0是8位的寄存器,DPTR是16位的寄存器,所以但外部数据存储器小于等于256B是采用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系列 单片机 指令系统 汇编语言 程序 示例

链接地址:https://www.31ppt.com/p-6013494.html