第3章MCS-51指令系统_第1页
第3章MCS-51指令系统_第2页
第3章MCS-51指令系统_第3页
第3章MCS-51指令系统_第4页
第3章MCS-51指令系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

第3章单片机指令系统,3.1MCS51指令简介3.2指令系统,LOOP:MOVA,R0;将R0的内容送A标号操作码第一操作数第二操作数注释(目的操作数)(源操作数)注:白色的内容不是必须的,3.1MCS51指令简介,一、MCS51指令格式,二、MCS51系列单片机指令系统分类按寻址方式分为以下七种:按功能分为以下四种:1、立即立即寻址1、数据传送指令位操2、直接寻址2、算术运算指令3、寄存器寻址3、逻辑运算指令4、寄存器间接寻址指令4、控制转移类指令5、相对寻址5、位操作指令6、变址寻址7、位寻址,三、寻址方式,寻址方式:寻找(或确定)操作数所在单元地址的方式。寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。说明:以下讨论的寻址方式都是针对源操作数的。但实际上目的操作数也有寻址问题。,1、寄存器寻址MOVA,Rn操作数在寄存器中,如R0R7,A、B、Cy(位)、DPTR2、直接寻址MOVA,40H操作数直接以单元地址形式给出(也可以寄存器名称形式给出,但ABDPTR除外)如:MOVA,P0;MOVR0,TH0,3、寄存器间接寻址MOVA,R1操作数是通过寄存器间接得到的。4、立即寻址MOVA,#40H操作数在指令中直接给出。5、基址寄存器加变址寄存器寻址以DPTR或PC为基址寄存器,以A为变址寄存器,以两者相加形成的16位地址为操作数的地址。MOVCA,A+DPTRMOVCA,A+PC,四、指令中常用符号说明,Rn当前寄存器区的8个工作寄存器R0R7(n07);Ri当前寄存器区可作地址寄存器的2个工作寄存器R0和R1(i0,1);direct8位内部数据存储器单元的地址及特殊功能寄存器的地址;#data表示8位常数(立即数);#datal6表示16位常数;add16表示16位地址;addrll表示11位地址;rel8位带符号的地址偏移量;bit表示位地址;间接寻址寄存器或基址寄存器的前缀;()表示括号中单元的内容()表示间接寻址的内容;,五、MCS51指令简介1.以累加器A为目的操作数的指令,MOVA,data;AdataMOVA,Rn;n=07,A(Rn)MOVA,Ri;i=0,1,A(Ri)MOVA,direct;A(Rn)direct为内部RAM或SFR地址注:MOVA,Ri;以Ri的内容为地址,把该地址中的内容送到A中去。A(Ri)MOVA,R0;将R0的内容送到A去。A(R0)MOVA,#20H;(A)=20HA的内容为20HMOVA,20H;(A)=(20H)A的内容为20H中的内容注意以上两组指令的不同点,例:MOVR0,#30HMOV30H,#60HMOVA,R0(A)=?,2.以Rn为目的操作数的指令,MOVRn,A;Rn(A),n=07MOVRn,direct;Rn(direct)MOVRn,data;Rndata,3.以直接地址为目的操作数的指令,MOVdirect,A;direct(A)MOVdirect,Rn;direct(Rn),n=07MOVdirect,Ri;direct(Ri),i=0,1MOVdirect,direct;direct(direct)MOVdirect,#data;directdata,4.以寄存器间接地址为目的操作数指令,MOVRi,A;(Ri)(A),i=0,1MOVRi,direct;(Ri)(direct)MOVRi,data;(Ri)data,应用举例1,MOVP1,#0FEH;11111110B可以使P1.0上的发光二极管点亮MOVP1,#0F0H;11110000B可以使P1口上的上面4个发光二极管点亮,8段数码管显示,MOVP1,#00H;显示8.MOVP1,#0F8H;显示7MOVP1,#88H;显示A,应用举例2,一个引脚的高低电平,可以通过“光电耦合器”控制继电器,从而以“弱电”控制“强电”。,3.2指令系统,一、数据传送指令位操作1.16位数据传输指令,MOVDPTR,#data16;DPTRdata16DPTR-数据指针,为SFR中(DPH)、(DPL)MOVDPTR,#2010H相当于:MOVDPH,#20HMOVDPL,#10H,2、堆栈操作指令,进栈指令PUSHdirect如:(SP)=60H,(A)=30H,(B)=70H时,执行PUSHAcc;(SP)+1=61HSP,(A)61HPUSHB;(SP)+1=62HSP,(B)62H结果:(61H)=30H,(62H)=70H,(SP)=62H退栈指令POPdirect如:(SP)=62H,(62H)=70H,(61H)=30H时,执行POPDPH;(SP)DPH,(SP)1=61HSPPOPDPHL;(SP)DPL,(SP)1=60HSP结果:(DPTR)=7030H,(SP)=60H堆栈的存储原则:先进后出,3.累加器A与外部数据传输指令,MOVXA,DPTR;A(DPTR)地址范围64KMOVXA,Ri;A(Ri)地址范围0255MOVXDPTR,A;(DPTR)(A)MOVXRi,A;(Ri)(A),4.查表指令,MOVCA,A+DPTR;A(A)+(DPTR)例:(DPTR)=0300H,(A)02HROM中(0302H)=55H执行:MOVCA,A+DPTR结果:(A)=55H,MOVCA,A+PCA(A)+(pc)PC程序指针,指向下一条指令的地址例:根据A中的内容(09)查平方表,MOVCA,A+PC例子:,地址机器码源程序ORG0000H00007403MOVA,#03H000283MOVCA,A+PC000300DB00H000401DB01H000504DB04H000609DB09H000710DB10H000819DB19H000924DB24H000A31DB31H000B40DB40H000C51DB51H(顺便讲解如何查机器码)END,5.字节交换指令,XCHA,Rn;(A)(Ri)XCHA,direct;(A)(direct)XCHA,Ri;(A)(Ri)例:(A)=80H,(R7)=97H执行:XCHA,R7结果:(A)=97H,(R7)=80H例:将片内RAM60H单元与61H单元的数据交换。XCH60H,61H对吗?,6.半字节交换指令,XCHDA,Ri;(A)0-3(Ri)0-3例:(R0)=60H,(60H)=3EH,(A)=59H执行:XCHDA,R0结果:(A)5EH(60H)39H,二、算术操作类指令,1.加法指令(Addtion)2.带进位加法指令3.加1指令(Increase)4.十进制调整指令5.带借位减法指令(Subtraction)6.减1指令(Decrease)7.乘法指令(Multiplication)8.除法指令(Division),PSW寄存器,Cy:进位标志位AC:辅助进位标志位F0:供用户使用的标志位OV:溢出标志位P:奇偶标志位A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。RS1RS000区0(地址:00H07H)01区1(地址:08H0FH)10区2(地址:10H17H)11区3(地址:18H1FH),2.带进位加法指令,ADDCA,Rn;A(A)+(Rn)+(Cy)ADDCA,Ri;A(A)+(Ri)+(Cy)ADDCA,direct;A(A)+(direct)+(Cy)ADDCA,data;A(A)+#data+(Cy)对标志位的影响与ADD相同,3.加1指令,INCA;A(A)+1INCRi;Ri(A)+1INCdirect;direct(direct)+1INCRi;(Ri)(Ri)+1INCDPTR;DPTR(DPTR)+1对标志位不产生影响若:(A)0FFH,(Cy)=0执行:INCA结果:(A)00H,(Cy)=0,4.十进制调整指令,DAA用途:紧跟在BCD码加法指令(不包括减法)之后,进行十进制调整。(96H为压缩BCD码,表示十位为9,个位为6)如两BCD码加:MOVA,#35HADDA,#46H(A)=7BH,并不是81H但:DAA后,(A)81H,5.带借位减法指令(Subtraction),(1)SUBBA,Rn;A(A)-(Rn)-(Cy)(2)SUBBA,Ri;A(A)-(Ri)-(Cy)(3)SUBBA,direct;A(A)-(direct)-(Cy)(4)SUBBA,data;A(A)-#data-(Cy)(5)对标志位的影响(6)Cy-进位位(7)AC-半进位位(8)OV-溢出位,6.减1指令(Decrease),减1类指令共4条,其功能是将操作数指定单元内容减1。DECA;A-1A,A中内容减1DECRn;Rn-1Rn,Rn中内容减1DECdirect;(direct)-1(direct),直接地址中内容减1DECRi;(Ri)-1(Ri),Ri间址中的内容减1,7.乘法指令(Multiplication),MULAB;(A)(B)低8位A高8位BA、B中都是无符号整数如果积大于255,OV1,否则OV0;进位标志总是清零Cy0。,8.除法指令(Division),DIVAB;(A)(B)商A余数BA、B中都是无符号整数如果除数B为“0”,OV1,否则OV0;进位标志总是清零Cy0。,三、逻辑运算指令1.简单逻辑操作指令,CLRA;A“0”CPLA;AASWAPA;A03A47例:(A)=3AH,CPLA,(A)=0C5H00111010B11000101B(A)=3AH,SWAPA,(A)=0A3H,2.循环指令,左循环指令(RotateAccumulatorLeft)RLA例(A)6CH=01101100BRLA(A)=11011000B=0D8H,带进位左循环指令(RotateAccumulatorLeftthroughCarryflag),RLCA例(A)6CH=01101100B,(C)=1RLCA(A)=11011001B=0D9H,右循环指令(RotateAccumulatorRight),RRA例(A)6CH=01101100BRRA(A)=00110110B=36H,带进位右循环指令(RotateARightwithC),RRCA例(A)6CH=01101100B,(C)=1RRCA(A)=10110110B=0B6H,3.逻辑与指令,ANLA,RnANLA,directANLA,dataANLA,RiANLdirect,AANLdirect,data“与”,“有0即0,全1为1”00000111)1111110100000101B05H,4.逻辑或指令,ORLA,RnORLA,directORLA,dataORLA,RiORLdirect,AORLdirect,data“或”,“有1即1,全0为0”00000110)0110110101101111B6FH,5.逻辑异或指令,XRLA,RnXRLA,directXRLA,dataXRLA,RiXRLdirect,AXRLdirect,data“异或”,“相异为1,相同为0”00000110)0110110101101011B6BH,例(A)=01B,表示随机状态,为1或0,执行下述一组指令执行后A的值如何?XRLA,#0C0H;将累加器A的内容D7、D6取反01ORLA,#03H;将累加器A的内容D1、D0置111010000ANLA,#0E7H;将累加器A的内容D4、D3清01000000011101111100111100011解:执行上述指令后,(A)=100011B。,习题1:如何将累加器A中的数据高4位清0,低位不变?习题2:如何将寄存器R2中的数据奇数位取反,偶数位不变?,四、控制转移类指令1.跳转指令,短跳指令AJMPaddr11PCaddr11,跳转范围2k长跳指令LJMPaddr16PCaddr16,跳转范围64k间接跳转指令JMPA+DPTRPC(A)(DPTR),相对转移指令SJMPrelPC(PC)+2PC(PC)+rel,rel机器码的相对偏移量,为8位补码转移范围:前128后127字节rel(目的地址转移指令地址转移指令字节数)补(目的地址PC当前值)补编程时,可用标号代替转移目的地址,rel交给编译程序计算。SJMPNEXT(或AJMPNEXT,SJMPNEXT)NEXT:原地踏步指令的指令:HERE:SJMPHERE常写成:SJMP$,地址机器码源程序注释ORG0000H;整个程序起始地址0000200030LJMPMAIN;跳向主程序ORG0030H;主程序起始地址0030C3MAIN:CLRC;MAIN为程序标号0031E6LOOP:MOVA,R0003237ADDCA,R1003308INCR00034DAFBDJNZR1,LOOP;相对转移00368003SJMPNEXT00387803MOVR0,#03H003A18NEXT:DECR0003B80FESJMP$;HERE:SJMPHEREEND;结束标记,程序中标号与地址之间的关系,2.条件转移指令,JZrel;(A)0,转移JNZrel;(A)0,转移,3.比较不相等转移指令,CJNEA,#data,rel;(A)=#data,继续C0(A)#data,转C0(A)#data,转C1特点:只有时,C1CJNEA,direct,relCJNERn,#data,relCJNERi,#

温馨提示

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

评论

0/150

提交评论