MCS-51系列单片机指令系统及汇编语言程序设计.ppt
《MCS-51系列单片机指令系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《MCS-51系列单片机指令系统及汇编语言程序设计.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 MCS-51系列单片机指令系统系列单片机指令系统及汇编语言程序设计及汇编语言程序设计uMCS-51单片机的寻址方式单片机的寻址方式uMCS-51单片机分类指令单片机分类指令uMCS-51单片机汇编语言程序设计基础单片机汇编语言程序设计基础3.1 MCS-51单片机的寻址方式单片机的寻址方式MCS-51单片机共有7种寻址方式:立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址相对寻址位寻址1.立即寻址立即寻址就是把操作数直接在指令中给出,即操作数包含在指令中。立即操作数有8位和16位两种形式,前面加“”来表示。例如:MOVA,#0FFH;将立即数FFH传送到累加器A中MOVDPTR,#
2、2000H;将16位立即数2000H传送到数据指针DPTR中MOV40H,#60H;将立即数60H传送到40H内部RAM单元中2.直接寻址指令中直接给出操作数地址的寻址方式。例如:MOVA,30H;内部RAM中的30H单元中的数据内容传送到累加器A中3.寄存器寻址以通用寄存器的内容为操作数的寻址方式。通用寄存器包括:A,B,DPTR,R0R7。其中,R0R7必须在工作寄存器组之中。例如:INCR0;(R0)1R0需要注意的是,A和B既是通用寄存器,又是具有直接地址的特殊功能寄存器。4.寄存器间接寻址以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够用于寄存器间接寻址的寄存器有:R0
3、,R1,DPTR,SP。其中,R0,R1必须在工作寄存器组之中,SP仅用于堆栈操作。例如:MOVXA,R1;外部数据RAM中地址为P2R1的单元内容AMOVXDPTR,A;A外部数据RAM中DPTR为地址的单元寄存器间接寻址的存储器空间包括:内部数据RAM和外部数据RAM。内部数据RAM共用128字节,用一个字节的R0或R1可寻址整个空间。外部数据RAM最大可达64K字节,仅用R0或R1无法寻址整个空间。在MCS-51系列单片机指令中,对外部数据RAM作间接寻址有两种方法:第一种由P2口提供高8位外部数据RAM地址,由R0或R1提供低8位地址,由此共同寻址64K空间;第二种是用16位的DPTR
4、作寄存器间接寻址。5.变址寻址由程序计数器PC或DPTR加上偏移量寄存器A中内容之和形成操作数地址的寻址方式。变址寻址只能对程序存储器中的数据作寻址操作。由于程序存储器是只读存储器,因此变址寻址操作只有读操作而无写操作。例如:MOVCA,A+DPTR;A+DPTR为地址的存储器单元内容AMOVCA,A+PC;A+PC为地址的存储器单元内容A6.相对寻址以当前程序计数器PC的内容为基址,加上指令给出的一字节补码数形成新的PC值的寻址方式。PC中的当前值称为基地址,一字节补码数称为偏移量,新的PC值称为转移目的地址。例如:JC80H;C1跳转表示进位位C为0,则程序计数器PC中的内容不改变,即不转
5、移。若进位位C为1,则PC中的当前值为基地址加上偏移量80H后所得到的结果作为该转移指令的目的地址。7.位寻址对位地址中的内容作位操作的寻址方式。单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址(两者统一编址,地址空间为00HFFH),因此,位寻址只能对有位地址的这两个空间作寻址操作。例如SETB20H;120H位MOV32H,C;进位位C32H位3.2 分类指令分类指令MCS-51单片机共有111条指令,按功能分类,MCS-51指令系统可分为5大类:数据传送类指令(共29条)算术操作类指令(共24条)逻辑操作类指令(共24条)控制转移类指令(共17条)布尔变量操作类指令(共17条)1
6、.数据传送类指令数据传送类指令(共29条)l以累加器A为目的操作数类指令(4条)MOVA,dirMOVA,#dataMOVA,RnMOVA,Ri例:R120H,(20H)55H,指令MOVA,R1执行后,A55H。l以寄存器Rn为目的操作数的指令(3条)MOVRn,dirMOVRn,#dataMOVRn,A例:(40H)30H,指令MOVR7,40H执行后,R730H。l以直接地址为目的操作数的指令(5条)MOVdir,dirMOVdir,#dataMOVdir,AMOVdir,RnMOVdir,Ri例:R050H,(50H)10H,指令MOV35H,R0执行后,(35H)10H。l以间接地址
7、为目的操作数的指令(3条)MOVRi,dirMOVRi,#dataMOVRi,Al查表指令(2条)MOVCA,A+DPTRMOVCA,A+PC例:A20H,DPTR2000H,指令MOVCA,A+DPTR执行后,程序存储器2020H单元中的内容送入A。l累加器A与片外数据存储器RAM传送指令(4条)MOVXDPTR,AMOVXA,DPTRMOVXA,,RiMOVXRi,A例:DPTR2000H,外部RAM中(2000H)18H,指令MOVXA,DPTR执行后,A18H。例:P210H,R150H,A64H,指令MOVXR1,A执行后,外部RAM中(1050H)64H。l堆栈操作类指令(2条)P
8、USHdirPOPdir例:SP07H,(35H)55H,指令PUSH35H执行后,55H送入08H地址单元,SP08H。l交换指令(5条)XCHA,RnXCHA,RiXCHA,dirXCHDA,RiSWAPA例:A80H,R032H,(32H)FFH,指令XCHDA,R0执行后,A8FH,(32H)F0H。l16位数据传送指令(1条)MOVDPTR,#data162.算术操作类指令算术操作类指令(共24条)算术运算指令共有24条,算术运算主要是执行加、减、乘、除、增量、减量和十进制调整等指令。l加法指令(4条)ADDA,#dataADDA,dirADDA,RnADDA,Ril带进位加法指令(
9、4条)ADDCA,dirADDCA,#dataADDCA,RnADDCA,Ril带借位减法指令(4条)SUBBA,dirSUBBA,#dataSUBBA,RnSUBBA,Ri例:A38H,R120H,(20H)23H,C1,指令SUBBA,R1执行后,A14Hl乘法指令(1条)MULA,B例:A50H,BA0H,指令MULA,B执行后,A00H,B32Hl除法指令(1条)DIVA,B例:A28H,B12H,指令DIVA,B执行后,A02H,B04Hl加1指令(5条)INCAINCdirINCRiINCRnINCDPTRl减1指令(4条)DECADECdirDECRiDECRnl十进制调整指令(
10、1条)DAA;把A中按二进制相加后的结果调整成按BCD数相加的结果3.逻辑操作类指令逻辑操作类指令(共24条)逻辑操作类指令共有24条,主要包括“与”、“或”、“异或”、求反、清0、左右移位等逻辑操作。l“与”操作指令(6条)ANLA,dirANLA,#dataANLA,RnANLA,RiANLdir,AANLdir,#datal“或”操作指令(6条)ORLA,dirORLA,#dataORLA,RnORLA,RiORLdir,AORLdir,#data例:(21H)3AH,A14H,指令ORL21H,A执行后,(21H)3EH。l“异或”操作指令(6条)XRLA,dirXRLA,#dataX
11、RLA,RnXRLA,RiXRLdir,AXRLdir,#data例:R023H,(23H)32H,A53H,指令XRLA,R0执行后,A61Hl求反指令(1条)CPLA;累加器A中的内容按位取反l清零指令(1条)CLRA;0A,累加器A中的内容清零l循环移位指令(4条)RLA;累加器A中的内容左移一位RRA;累加器A中的内容右移一位RLCA;累加器A中的内容连同进位位C左移一位RRCA;累加器A中的内容连同进位位C右移一位例:A16H,指令RRA执行后,A0BH。4.控制转移类指令控制转移类指令(共17条)控制转移类指令共有17条,用于控制程序的流向,所控制的范围即为程序存储器区间。l子程序
12、调用指令(4条)绝对调用指令ACALLaddr11绝对调用指令实现在2K地址范围内的子程序调用。本指令实现的操作将不改变原PC的高5位,仅把11位地址addr11送入PC的低11位,以此确定子程序的入口地址。由于整个64K程序存储器空间被分成32个基本2K地址范围(见表3.4),编程时,必须保证紧接ACALL指令后面的那一条指令的第一字节与被调用子程序的入口地址在同一2K范围内,否则将不能使用ACALL指令实现这种调用。表3.4 程序存储器空间中的32个基本2K地址范围0000H07FFH5800H5FFFHB000HB7FFH0800H0FFFH6000H67FFHB800HBFFFH100
13、0H17FFH6800H6FFFHC000HC7FFH1800H1FFFH7000H77FFHC800HCFFFH2000H27FFH7800H7FFFHD000HD7FFH2800H2FFFH8000H87FFHD800HDFFFH3000H37FFH8800H8FFFHE000HE7FFH3800H3FFFH9000H97FFHE800HEFFFH4000H47FFH9800H9FFFHF000HF7FFH4800H4FFFHA000HA7FFHF800HFFFFH5000H57FFHA800HAFFFH长调用指令LCALLaddr16长调用指令为64K程序存储器空间中的全范围子程序调用指
14、令,子程序的入口地址可在64K地址空间中的任一处。子程序返回指令RET从被调用子程序返回,与LCALL与ACALL指令配合使用。中断返回指令RETI从中断服务程序中返回,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替。l转移类指令(12条)转移类指令分为无条件转移指令和条件转移指令两组。无条件转移指令包括绝对转移、长转移、短转移和间接转移;条件转移指令包括结果为零、结果为非零、减“1”后结果为非零以及两数不相等的转移条件等,它们全部采用相对转移的方式。无条件转移指令(4条)【1】长转移指令LJMPaddr16长转移指令为64K程序存储器空间的全范围转移指
15、令,转移地址可为16位地址值中的任一值。【2】绝对转移指令AJMPaddr11绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与ACALL指令中对子程序入口地址的要求相同。【3】短转移指令SJMPrel;PC+2+relPC短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码偏移量,且SJMPrel指令为2字节指令,所以转移范围为126D129D【4】间接转移指令JMPA+DPTR条件转移指令(8条)【1】累加器为零/非零转移指令JZrel若A=0,则PC+2+relPC,程序转移到偏移量所指向的地址若A0,程序顺序执行JNZrel若A0,则PC+2+relPC,程序转
16、移到偏移量所指向的地址若A=0,程序顺序执行【2】两数不等转移指令CJNEA,dir,rel若A(dir),则PC3relPC,程序转移;若A(dir),则程序顺序执行CJNEA,#data,rel若A#data,则PC3relPC,程序转移;若A#data,则程序顺序执行CJNERn,#data,rel若Rn#data,则PC3relPC,程序转移;若Rn#data,则程序顺序执行CJNERi,#data,rel若(Ri)#data,则PC3relPC,程序转移;若(Ri)#data,则程序顺序执行【3】减“1”非零转移指令DJNZRn,relRn1Rn,若Rn0,则PC2relPC,程序转
17、移;若Rn0,则程序顺序执行DJNZdir,rel(dir)1dir,若(dir)0,则PC3relPC,程序转移;若(dir)0,则程序顺序执行需要注意的是,DJNZRn,rel是2字节指令,而DJNZdir,rel是3字节指令,所以在满足转移条件后,前者是PC2relPC,而后者是PC3relPC。例:说明下面一段程序运行后累加器A中的结果。MOV23H,0AHCLRALOOP:ADDA,23HDJNZ23H,LOOPSJMP$解:根据程序可知,运算结果A1098765432155D37Hl空操作指令(1条)NOP5.布尔变量操作类指令布尔变量操作类指令(共17条)布尔变量操作类指令共有1
18、7条,其共同特点是对进位位C和直接位地址bit的操作,包括清零、置位、求反、逻辑与、逻辑或、位传送以及判断转移指令。l清位指令(2条)CLRC;0CCLRbit;0bitl置位指令(2条)SETBC;1CSETBbit;1bitl位求反指令(2条)CPLCCPLbitl位逻辑“与”指令(2条)ANLC,bitANLC,l位逻辑“或”指令(2条)ORLC,bitORLC,l位传送指令(2条)MOVC,bit;(bit)CMOVbit,C;Cbitl位控制转移指令(5条)位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:JCrel若C=1,则PC+2+relPC,程序转移;否则程序顺
19、序执行JNCrel若C=0,则PC+2+relPC,程序转移;否则程序顺序执行JBbit,rel若(bit)=1,则PC+3+relPC,程序转移;否则程序顺序执行JNBbit,rel若(bit)=0,则PC+3+relPC,程序转移;否则程序顺序执行JBCbit,rel若(bit)=1,则PC+3+relPC,程序转移,且该位清零;否则程序顺序执行3.3 MCS-51单片机汇编语言程序设计单片机汇编语言程序设计l汇编语言概述l顺序程序l分支程序l循环程序l子程序1.汇编语言概述结构化程序的概念顺序结构顺序结构是按照语句实现的先后次序执行一系列的操作,它没有分支、循环和转移。分支结构分支结构又
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 系列 单片机 指令系统 汇编语言 程序设计
限制150内