MCS51系列单片机指令系统及汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《MCS51系列单片机指令系统及汇编语言程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 系列 单片机 指令系统 汇编语言 程序设计 课件
- 资源描述:
-
1、第第3章章 MCS-51系列单片机指令系统及系列单片机指令系统及汇编语言程序设计汇编语言程序设计uMCS-51单片机的寻址方式单片机的寻址方式uMCS-51单片机分类指令单片机分类指令 uMCS-51单片机汇编语言程序设计基础单片机汇编语言程序设计基础 第1页,共52页。3.1 MCS-51单片机的寻址方式单片机的寻址方式MCS-51单片机共有7种寻址方式:立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址第2页,共52页。1.立即寻址 立即寻址就是把操作数直接在指令中给出,即操作数包含在指令中。立即操作数有8位和16位两种形式,前面加“”来表示。例如:MOV A,#0
2、FFH ;将立即数FFH传送到累加器A中 MOV DPTR,#2000H ;将16位立即数2000H传送到数据指针DPTR中 MOV 40H,#60H ;将立即数60H传送到40H内部RAM单元中第3页,共52页。2.直接寻址 指令中直接给出操作数地址的寻址方式。例如:MOV A,30H ;内部RAM中的30H单元中的数据内容传送到累加器A中第4页,共52页。3.寄存器寻址 以通用寄存器的内容为操作数的寻址方式。通用寄存器包括:A,B,DPTR,R0R7。其中,R0R7必须在工作寄存器组之中。例如:INC R0 ;(R0)1R0 需要注意的是,A和B既是通用寄存器,又是具有直接地址的特殊功能寄
3、存器。第5页,共52页。4.寄存器间接寻址 以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必须在工作寄存器组之中,SP仅用于堆栈操作。例如:MOVX A,R1 ;外部数据RAM中地址为P2R1的单元内容A MOVX DPTR,A ;A外部数据RAM中DPTR为地址的单元 寄存器间接寻址的存储器空间包括:内部数据RAM和外部数据RAM。内部数据RAM共用128字节,用一个字节的R0或R1可寻址整个空间。外部数据RAM最大可达64K字节,仅用R0或R1无法寻址整个空间。在MCS-51系列单片机指令中,对外部数
4、据RAM作间接寻址有两种方法:第一种由P2口提供高8位外部数据RAM地址,由R0或R1提供低8位地址,由此共同寻址64K空间;第二种是用16位的DPTR作寄存器间接寻址。第6页,共52页。5.变址寻址 由程序计数器PC或DPTR加上偏移量寄存器A中内容之和形成操作数地址的寻址方式。变址寻址只能对程序存储器中的数据作寻址操作。由于程序存储器是只读存储器,因此变址寻址操作只有读操作而无写操作。例如:MOVC A,A+DPTR ;A+DPTR为地址的存储器单元内容A MOVC A,A+PC ;A+PC为地址的存储器单元内容A第7页,共52页。6.相对寻址 以当前程序计数器PC的内容为基址,加上指令给
5、出的一字节补码数形成新的PC值的寻址方式。PC中的当前值称为基地址,一字节补码数称为偏移量,新的PC值称为转移目的地址。例如:JC 80H ;C1跳转 表示进位位C为0,则程序计数器PC中的内容不改变,即不转移。若进位位C为1,则PC中的当前值为基地址加上偏移量80H后所得到的结果作为该转移指令的目的地址。第8页,共52页。7.位寻址 对位地址中的内容作位操作的寻址方式。单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址(两者统一编址,地址空间为00HFFH),因此,位寻址只能对有位地址的这两个空间作寻址操作。例如 SETB 20H ;120H位 MOV 32H,C ;进位位C32H位第
6、9页,共52页。3.2 分类指令分类指令 MCS-51单片机共有111条指令,按功能分类,MCS-51指令系统可分为5大类:数据传送类指令(共29条)算术操作类指令(共24条)逻辑操作类指令(共24条)控制转移类指令(共17条)布尔变量操作类指令(共17条)第10页,共52页。1.数据传送类指令数据传送类指令(共29条)l 以累加器A为目的操作数类指令(4条)MOV A,dir MOV A,#data MOV A,Rn MOV A,Ri 例:R120H,(20H)55H,指令MOV A,R1执行后,A55H。l 以寄存器Rn为目的操作数的指令(3条)MOV Rn,dir MOV Rn,#dat
7、a MOV Rn,A 例:(40H)30H,指令MOV R7,40H执行后,R730H。第11页,共52页。l 以直接地址为目的操作数的指令(5条)MOV dir,dir MOV dir,#data MOV dir,A MOV dir,Rn MOV dir,Ri 例:R050H,(50H)10H,指令MOV 35H,R0执行后,(35H)10H。l 以间接地址为目的操作数的指令(3条)MOV Ri,dir MOV Ri,#data MOV Ri,A l 查表指令(2条)MOVC A,A+DPTR MOVC A,A+PC 例:A20H,DPTR2000H,指令MOVC A,A+DPTR执行后,程
8、序存储器2020H单元中的内容送入A。第12页,共52页。l 累加器A与片外数据存储器RAM传送指令(4条)MOVX DPTR,A MOVX A,DPTR MOVX A,,Ri MOVX Ri,A 例:DPTR2000H,外部RAM中(2000H)18H,指令MOVX A,DPTR执行后,A18H。例:P210H,R150H,A64H,指令MOVX R1,A执行后,外部RAM中(1050H)64H。l 堆栈操作类指令(2条)PUSH dir POP dir 例:SP07H,(35H)55H,指令PUSH 35H执行后,55H送入08H地址单元,SP08H。第13页,共52页。l 交换指令(5条
9、)XCH A,Rn XCH A,Ri XCH A,dir XCHD A,Ri SWAP A 例:A80H,R032H,(32H)FFH,指令XCHD A,R0执行后,A8FH,(32H)F0H。l 16位数据传送指令(1条)MOV DPTR,#data16 第14页,共52页。2.算术操作类指令算术操作类指令(共24条)算术运算指令共有24条,算术运算主要是执行加、减、乘、除、增量、减量和十进制调整等指令。l加法指令(4条)ADD A,#data ADD A,dir ADD A,Rn ADD A,Ri l带进位加法指令(4条)ADDC A,dir ADDC A,#data ADDC A,Rn
10、ADDC A,Ri l带借位减法指令(4条)SUBB A,dir SUBB A,#data SUBB A,Rn SUBB A,Ri 例:A38H,R120H,(20H)23H,C1,指令SUBB A,R1执行后,A14H 第15页,共52页。l乘法指令(1条)MUL A,B 例:A50H,BA0H,指令MUL A,B执行后,A00H,B32H l 除法指令(1条)DIV A,B 例:A28H,B12H,指令DIV A,B执行后,A02H,B04H l 加1指令(5条)INC A INC dir INC Ri INC Rn INC DPTR 第16页,共52页。l减1指令(4条)DEC A DE
11、C dir DEC Ri DEC Rn l 十进制调整指令(1条)DA A ;把A中按二进制相加后的结果调整成按BCD数相加的结果 第17页,共52页。3.逻辑操作类指令逻辑操作类指令(共24条)逻辑操作类指令共有24条,主要包括“与”、“或”、“异或”、求反、清0、左右移位等逻辑操作。l“与”操作指令(6条)ANL A,dir ANL A,#data ANL A,Rn ANL A,Ri ANL dir,A ANL dir,#data l “或”操作指令(6条)ORL A,dir ORL A,#data ORL A,Rn ORL A,Ri ORL dir,A ORL dir,#data 例:(
12、21H)3AH,A14H,指令ORL 21H,A执行后,(21H)3EH。第18页,共52页。l“异或”操作指令(6条)XRL A,dir XRL A,#data XRL A,Rn XRL A,Ri XRL dir,A XRL dir,#data 例:R023H,(23H)32H,A53H,指令XRL A,R0执行后,A61Hl求反指令(1条)CPL A ;累加器A中的内容按位取反 l清零指令(1条)CLR A ;0A,累加器A中的内容清零 l 循环移位指令(4条)RL A ;累加器A中的内容左移一位 RR A ;累加器A中的内容右移一位 RLC A ;累加器A中的内容连同进位位C左移一位 R
13、RC A ;累加器A中的内容连同进位位C右移一位例:A16H,指令RR A执行后,A0BH。第19页,共52页。4.控制转移类指令控制转移类指令(共17条)控制转移类指令共有17条,用于控制程序的流向,所控制的范围即为程序存储器区间。l子程序调用指令(4条)绝对调用指令 ACALL addr11 绝对调用指令实现在2K地址范围内的子程序调用。本指令实现的操作将不改变原PC的高5位,仅把11位地址addr11送入PC的低11位,以此确定子程序的入口地址。由于整个64K程序存储器空间被分成32个基本2K地址范围(见表3.4),编程时,必须保证紧接ACALL指令后面的那一条指令的第一字节与被调用子程
14、序的入口地址在同一2K范围内,否则将不能使用ACALL指令实现这种调用。第20页,共52页。表3.4 程序存储器空间中的32个基本2K地址范围0000H07FFH5800H5FFFHB000HB7FFH0800H0FFFH6000H67FFHB800HBFFFH1000H17FFH6800H6FFFHC000HC7FFH1800H1FFFH7000H77FFHC800HCFFFH2000H27FFH7800H7FFFHD000HD7FFH2800H2FFFH8000H87FFHD800HDFFFH3000H37FFH8800H8FFFHE000HE7FFH3800H3FFFH9000H97FF
15、HE800HEFFFH4000H47FFH9800H9FFFHF000HF7FFH4800H4FFFHA000HA7FFHF800HFFFFH5000H57FFHA800HAFFFH第21页,共52页。长调用指令 LCALL addr16 长调用指令为64K程序存储器空间中的全范围子程序调用指令,子程序的入口地址可在64K地址空间中的任一处。子程序返回指令 RET 从被调用子程序返回,与LCALL与ACALL指令配合使用。中断返回指令 RETI 从中断服务程序中返回,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替。第22页,共52页。l 转移类指令(12
16、条)转移类指令分为无条件转移指令和条件转移指令两组。无条件转移指令包括绝对转移、长转移、短转移和间接转移;条件转移指令包括结果为零、结果为非零、减“1”后结果为非零以及两数不相等的转移条件等,它们全部采用相对转移的方式。无条件转移指令(4条)【1】长转移指令 LJMP addr16 长转移指令为64K程序存储器空间的全范围转移指令,转移地址可为16位地址值中的任一值。【2】绝对转移指令 AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与ACALL指令中对子程序入口地址的要求相同。【3】短转移指令 SJMP rel ;PC+2+relPC 短转移指令为一页地址
17、范围内的相对转移指令。因为rel为1字节补码偏移量,且SJMP rel指令为2字节指令,所以转移范围为126D129D【4】间接转移指令 JMP A+DPTR 第23页,共52页。条件转移指令(8条)【1】累加器为零/非零转移指令 JZ rel 若A=0,则PC+2+relPC,程序转移到偏移量所指向的地址 若A0,程序顺序执行 JNZ rel 若A0,则PC+2+relPC,程序转移到偏移量所指向的地址 若A=0,程序顺序执行【2】两数不等转移指令 CJNE A,dir,rel 若A(dir),则PC 3 relPC,程序转移;若A(dir),则程序顺序执行 CJNE A,#data,rel
18、 若A#data,则PC 3 relPC,程序转移;若A#data,则程序顺序执行 CJNE Rn,#data,rel 若Rn#data,则PC3 relPC,程序转移;若Rn#data,则程序顺序执行 CJNE Ri,#data,rel 若(Ri)#data,则PC 3 relPC,程序转移;若(Ri)#data,则程序顺序执行第24页,共52页。【3】减“1”非零转移指令 DJNZ Rn,rel Rn1Rn,若Rn0,则PC2relPC,程序转移;若Rn0,则程序顺序执行 DJNZ dir,rel (dir)1dir,若(dir)0,则PC3relPC,程序转移;若(dir)0,则程序顺序
19、执行 需要注意的是,DJNZ Rn,rel是2字节指令,而DJNZ dir,rel 是3字节指令,所以在满足转移条件后,前者是PC2relPC,而后者是PC3relPC。例:说明下面一段程序运行后累加器A中的结果。MOV 23H,0AH CLR ALOOP:ADD A,23H DJNZ 23H,LOOP SJMP$解:根据程序可知,运算结果A1098765432155D37Hl空操作指令(1条)NOP 第25页,共52页。5.布尔变量操作类指令布尔变量操作类指令(共17条)布尔变量操作类指令共有17条,其共同特点是对进位位C和直接位地址bit的操作,包括清零、置位、求反、逻辑与、逻辑或、位传送
20、以及判断转移指令。l 清位指令(2条)CLR C ;0C CLR bit ;0bitl置位指令(2条)SETB C ;1C SETB bit ;1bitl 位求反指令(2条)CPL C CPL bit l位逻辑“与”指令(2条)ANL C,bit ANL C,bitbit第26页,共52页。l 位逻辑“或”指令(2条)ORL C,bit ORL C,l位传送指令(2条)MOV C,bit ;(bit)C MOV bit,C ;Cbit l位控制转移指令(5条)位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:JC rel 若C=1,则PC+2+relPC,程序转移;否则程序顺序执
21、行 JNC rel 若C=0,则PC+2+relPC,程序转移;否则程序顺序执行 JB bit,rel 若(bit)=1,则PC+3+relPC,程序转移;否则程序顺序执行 JNB bit,rel 若(bit)=0,则PC+3+relPC,程序转移;否则程序顺序执行 JBC bit,rel 若(bit)=1,则PC+3+relPC,程序转移,且该位清零;否则程序顺序执行bit第27页,共52页。3.3 MCS-51单片机汇编语言程序设计单片机汇编语言程序设计l汇编语言概述l顺序程序 l分支程序 l循环程序 l子程序 第28页,共52页。1.汇编语言概述 结构化程序的概念 顺序结构 顺序结构是按
展开阅读全文