MCS51单片机的指令系统课件.ppt
《MCS51单片机的指令系统课件.ppt》由会员分享,可在线阅读,更多相关《MCS51单片机的指令系统课件.ppt(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 MCS-51单片机的指令系统单片机的指令系统本章内容MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析 本章采用简单例程讲解解汇编语言指令功能13.1 指令格式指令:即命令,人们给计算机的命令指令有两种表示方式:机器码机器语言(机器能直接识别)助记符汇编语言(供设计人员使用)机器码和助记符一一对应,汇编语言可汇编为机器语言,机器语言可反汇编为汇编语言。指令格式:汇编语言格式标号:操作码助记符 操作数;注释2 START:MOVA,#20H;把数20H送入累加器A 中 INCA;(A)加一3.1 指令格式汇编语言指令的几种形式(1)没有操作数:RET,RET
2、I,NOP(2)有1个操作数:INCA,DEC20H,CLRC,SJMPNEXT(3)有2个操作数:MOVR7,#DATA,ADDA,R0,DJNZR2,LOOP(4)有3个操作数:CJNEA,#20H,NEQ33.1 指令格式机器语言的几种形式:(1)单字节指令:INCDPTR指令机器代码:A3ADDA,R7指令机器代码:2F(2)双字节指令:SUBBA,2BH指令机器代码:952BORLC,/27H指令机器代码:A027(3)三字节指令:MOV20H,#00H指令机器代码:752000LJMP2000H指令机器代码:02200043.2 MCS-51 单片机的寻址方式寻址方式:CPU执行指
3、令时获取操作数的方式 MSC-51单片机有7种不同的寻址方式:(1)立即寻址方式(2)直接寻址方式(3)寄存器寻址方式(4)寄存器间接寻址方式(5)变址寻址方式(6)位寻址方式(7)相对寻址方式 53.2 MCS-51 单片机的寻址方式(1)立即寻址方式 在指令中直接给出了参与运算的操作数。MOV A,#20H(2)直接寻址方式 指令中给出了参与运算的操作数所在单元的地址或所在位的位地址 MOV A,20H 直接寻址方式的使用范围:1)单元地址:007FH、21个SFR 2)对SFR的访问只能采用直接寻址方式63.2 MCS-51 单片机的寻址方式(3)寄存器寻址方式指令中,指出了参与运算的操
4、作数所在的寄存器。MOVA,R0寄存器寻址方式中的寄存器:1)工作(通用)寄存器R0R7、DPTR2)累加器A、寄存器B(仅在乘除法时)和布 尔累加器C 7(4)寄存器间接寻址方式在指令中,指出了存放参与运算的操作数所在单元地址的寄存器。MOVA,R0 3.2 MCS-51 单片机的寻址方式地址寄存器CPU?!操作数在哪儿?它的地址在R0中RAM得到地址了!找数!AROMMOVA,R08 3.2 MCS-51 单片机的寻址方式 可以作为地址寄存器的寄存器把存放操作数地址的寄存器称为地址寄存器。地址寄存器可以是:R0、R1、DPTR、SP(隐含)。在指令中表示为R0、R1、DPTR寄存器间接寻址
5、方式寻址范围:1)片内RAM:007FH 地址寄存器:R0、R12)片外RAM:0000FFFFH 地址寄存器:R0、R1、DPTR9(5)变址寻址方式(基址寄存器+变址寄存器间接寻址)操作数的地址由基址寄存器+变址寄存器间接寻址指出。MCS-51单片机中可以作基址寄存器:2个十六位寄存器,DPTR和PC MCS-51单片机中变址寄存器:8位寄存器:累加器A操作数存放在一个由(PC)+(A)或(DPTR)+(A)指出的十六位地址所指的单元中(在ROM中),有以下3种指令MOVCA,A+PCMOVCA,A+DPTRJMPA+DPTR 3.2 MCS-51 单片机的寻址方式10(6)位寻址方式在指
6、令中,指出了参与运算的操作数(一位)所在的位地址或寄存器(仅有位累加器C)指令中位地址:1)202FH的16个单元的128位;007FH2)专用寄存器(SFR)中的某些寄存器中的位(80FFH)CLR CMOV 00H,CMOV 20H.0,C3.2 MCS-51 单片机的寻址方式11(7)相对寻址方式 与程序的执行顺序有关,在指令执行时改变了程序计数器PC的内容,从而改变了程序转移的目标地址。当前的PC值加上指令中给出的地址偏移量rel而形成的目的(标)地址。相对寻址只出现在相对转移指令中。目的地址=源地址+rel+指令的字节数 rel=目的地址源地址指令的字节数 rel:指令中给出的地址偏
7、移量。-128+127,用补码表示,大于0正向跳转(向后),小于0则反向跳转(向前)。JCrelSJMPNEXT1JZFIRSTDJNZR1,LOOP23.2 MCS-51 单片机的寻址方式123.3 指令系统分析MCS-51单片机共有111条指令(1)按指令代码的字节数 单字节指令(49条)双字节指令(45 条)三字节指令(17 条)(2)按指令执行的时间 单机器周期指令(64条)双机器周期指令(45条)四机器周期指令(2条)3.3.1 指令的分类133.3.1 指令的分类(3)按照指令功能可分成五类:数据传送类指令(2929条)条)算术运算类指令(24条)逻辑运算类指令(24条)控制转移类
8、指令(17条)位操作类指令 (17条)143.3.2 指令系统分析 一、一、数据传送类指令数据传送(Data Transfers)类指令共有29条,分为以下5种类型:(1)通用传送指令 (2)堆栈操作指令 (3)交换指令 (4)访问程序存储器的指令 (5)访问外部RAM的指令 153.3.2 指令系统分析(一)通用传送指令(一)通用传送指令 通用传送指令的一般形式为:MOV 目的操作数,源操作数(1)以以A为目的操作数的传送指令为目的操作数的传送指令(4条)条)MOV A,源操作数MOVA,Rn;(Rn)(A),n07MOVA,direct;(direct)(A)MOVA,Ri;(Ri)(A)
9、,i0,1MOVA,#data;data(A)MOVA,R2MOVA,30HMOVA,R0MOVA,#36H163.3.2 指令系统分析(2)以Rn为目的操作数的传送指令(3条)一般形式:MOV Rn,源操作数MOVRn,A;(A)(Rn)MOVRn,(direct);(direct)(Rn)MOVRn,#data;data(Rn)如:MOVR0,AMOVR3,30HMOVR7,#36HMOVR1,#30MOVR6,#01101100B17(3)以直接地址为目的操作数的指令(5条)一般形式:MOV direct,源操作数MOVdirect,A;(A)(direct)MOVdirect,Rn;(
10、Rn)(direct)MOVdirect1,direct2;(direct2)(direct1)MOVdirect,Ri;(Ri)(direct)MOVdirect,#data;data(direct)如:MOV30H,AMOVP1,R2MOV38H,60HMOVTL0,R1MOV58H,#36H3.3.2 指令系统分析183.3.2 指令系统分析(4)以间接地址为目的操作数的指令)以间接地址为目的操作数的指令(3条)条)一般形式:MOV Ri,源操作数MOVRi,A;(A)(Ri)MOVRi,direct;(direct)(Ri)MOVRi,#data;data(Ri)如:MOVR0,AMO
11、VR1,36HMOVR0,SBUFMOVR1,#48MOVR0,#0D6H193.3.2 指令系统分析例1:已知(PSW)00H,(A)11H,(20H)22H,分析下列程序的执行结果MOVR0,A(A)(R0)MOVR1,20H(20H)(R1)MOVR2,#33H33H(R2)分析结果如下:(R0)(00H)11H(R1)(01H)22H(R2)(02H)33H203.3.2 指令系统分析例2:已知(PSW)00H,(A)11H,(00H)22H,(01H)36H,(36H)33H,(33H)44H,分析下列程序的执行结果。MOV30H,A;(A)(30H)MOV31H,R0;(R0)(3
12、1H)MOV32H,33H;(33H)(32H)MOV34H,R1;(R1)(34H)MOV35H,#55H(35H)55H分析结果如下:(30H)11H,(31H)22H,(32H)44H,(34H)33H,(35H)55H。213.3.2 指令系统分析(5)十六位数据传送指令十六位数据传送指令(1条)条)MOVDPTR,#data16;data815(DPH),data07(DPH)如:MOVDPTR,#2368H MOVDPTR,#35326上述操作同:MOVDPH,#23HMOVDPL,#68H223.3.2 指令系统分析在使用通用数据传送指令时,应注意以下几点:(1)MCS-51单片
13、机不支持工作寄存器R0R7内容直接传送给由地址寄存器内容指定的单元,或由地址寄存器内容指定单元的内容送给工作寄存器R0R7,如果需要传送,如果在程序中需要这样的数据传送,可以采用其他方式间接实现。例如:希望把地址寄存器R1内容指定的单元内容传送给工作寄存器R5,可以采用MOVA,R1MOVR5,A233.3.2 指令系统分析(2)虽然可以将一个指定的特殊功能寄存器的内容复制给累加器A,但下面这条指令是无效的:MOVA,ACC(3)在通用数据传送指令中,地址寄存器只能由工作寄存器R0和R1担当,其他工作寄存器没有这个功能。(4)虽然MCS-51单片机由2个16位的寄存器:PC和DPTR,但只有D
14、PTR用户可以用指令方式直接设置其内容。243.3.2 指令系统分析(二)堆栈操作指令(二)堆栈操作指令堆栈是在内部RAM中开辟的一个先进后出(后进先出)的区域,用来保护CPU执行程序的现场1入栈指令PUSHdirect;CPU操作:(SP)+1(SP),修改堆栈指针;(direct)(SP),入栈:例如:MOVSP,#70HPUSH60H 6061707172A869FEC6CA片内RAM(SP)(SP)A8253.3.2 指令系统分析2出栈指令POPdirectCPU操作:(SP)(direct),出栈,把堆栈中由(SP)所指单元的内容传送到指定单元direct。(SP)1(SP),修改堆
15、栈指针例如:MOVSP,#71HPOP60H 6061707172A869FEC6CA片内RAM(SP)(SP)C6263.3.2 指令系统分析在使用堆栈时,应注意以下几点:(1)PUSH和POP指令的操作数必须是单元地址。PUSH指令中指定的单元地址是被保护单元的地址(源操作数),指令隐含了目的操作数;而POP指令中指定的单元地址是内容要恢复的单元地址(目的操作数),指令隐含了源操作数。(2)MCS-51单片机的堆栈建在内部RAM中,单片机复位后,(SP)07H,从08H单元开始的区域均为栈区。在应用系统中,一般把栈区开辟在内部RAM的307FH这一区域,栈区最好靠近内部RAM的末端,以避免
16、堆栈加1向上增长时覆盖有效数据。273.3.2 指令系统分析(3)在使用堆栈操作指令时,入栈指令PUSH和出栈指令POP应成对出现,保护指定单元内容时,必须遵循先进后出的步骤,否则,单元内容在出栈恢复时会发生改变。(4)MCS-51单片机不支持对工作寄存器R0R7直接使用堆栈操作指令。如果要用堆栈操作保护某一寄存器Rn(n07)的状态,可用该工作寄存器对应单元进行操作。如当(PSW.4)1、(PSW.3)0时,把R5的内容入栈,可用PUSH15H;出栈时,PUSH15H,即可恢复R5原来的内容。283.3.2 指令系统分析例:已知(30H)11H,(31H)22H,则下列程序段的操作过程如图3
17、.8所示。MOVSP,#60H;开辟栈区PUSH30H;(SP)+1(SP),30H单元内容进栈61H单元PUSH31H;(SP)+1(SP),31H单元内容进栈62H单元,(SP)62HPOPACC;(SP)(ACC),栈顶62H单元内容弹出到累加器ACC,(SP)1(SP),(SP)61H。POPB;(SP)(B),栈顶61H单元内容弹出寄存器B,(SP)1(SP),(SP)60H。29(三)(三)交换指令交换指令 (1)字节交换指令 将源操作数的内容与A累加器的内容互换。XCHA,源源Rn,direct,Ri指令:XCHA,Rn;(A)(Rn)XCHA,direct;(A)(direct
18、)XCHA,Ri;(A)(Ri)例:将内RAM的20H单元的内容与40H单元交换。3.3.2 指令系统分析303.3.2 指令系统分析方法1:MOVA,20HXCHA,40HMOV20H,A方法2:MOVA,20HMOV20H,40HMOV40H,A31(2)半字节交换指令XCHA,Ri;(A03)(Ri)03将某一单元内容的低四位与累加器A的低四位互换,而二者的高四位保持不变。3.3.2 指令系统分析D0D1D2D3D4D5D6D7(A)D0D1D2D3D4D5D6D7(R0)D0D1D2D3D4D5D6D7(A)D0D1D2D3D4D5D6D7(R0)XCHA,Ri执行过程例题:两个单元的
19、低四位互换。323.3.2 指令系统分析(3)高低四位互换指令将累加器A的高四位和低四位互换。SWAPA;(A03)(A47)D0D1D2D3D4D5D6D7(A)(A)D0D1D2D3D4D5D6D7如:设(A)=5BHSWAPA;(A)=B5H333.3.2 指令系统分析交换指令总结343.3.2 指令系统分析(四)(四)访问程序存储器的指令(查表指令)访问程序存储器的指令(查表指令)MOVCA,A+DPTR;(A)+(DPTR)(A)DPTR放表的首地址,A放所查数据在表中的偏移;查表范围为64KB空间。MOVCA,A+PC;(A)+(PC)(A)PC的值为下一条指令的地址,A放所查数据
20、相对PC值的偏移;查表范围为最大为256B空间353.3.2 指令系统分析(五)(五)访问外部访问外部RAMRAM和外部和外部I/OI/O口的数据传送指令口的数据传送指令1 以以DPTR为地址寄存器的为地址寄存器的指令(1)读(输入)指令:MOVXA,DPTR;(DPTR)(A)说明:上述指令以DPTR为片外RAM单元的16位地址指针,寻址范围为寻址范围为0000FFFFH,即64K。363.3.2 指令系统分析CPU执行读外部数据存储器和外部I/O口指令的时序373.3.2 指令系统分析例:把外部RAM的2000H单元的内容存入单片机内部RAM的30H单元。MOVDPTR,#2000HMOV
21、XA,DPTRMOV20H,A注意:1、外部RAM单元和外部I/O口的地址为16位;2、外部RAM单元和外部I/O口的信息必须通过A累加器才能进入单片机的CPU。383.3.2 指令系统分析(2)写(输出)指令:将单片机的累加器A的内容输出到外部RAM某一单元或外部I/O口。MOVXDPTR,A;(A)(DPTR)说明:上述指令以DPTR为片外RAM单元的16位地址指针,寻址范围为寻址范围为0000FFFFH,即64K393.3.2 指令系统分析CPU执行写外部数据存储器和外部I/O口指令的时序403.3.2 指令系统分析例:把单片机内部RAM的20H单元的内容转存到外部RAM的8000H单元
22、。MOVDPTR,#8000HMOVA,20HMOVXDPTR,A注意:1、外部RAM单元和外部I/O口的地址为16位;而单片机内部RAM的单元地址为8位。2、单片机片内RAM单元的信息输出到外部RAM单元或外部I/O口,必须通过A累加器实施。413.3.2 指令系统分析2 以以R0和和R1为地址寄存器的为地址寄存器的指令(1)读(输入)指令MOVXA,Ri;(P2)(Ri)(A),Ri=0,1;说明:上述指令以R0或R1作低8位地址指针,由P0口送出,寻址范围为00FFH,256B空间,高8位由当前的P2口状态提供。423.3.2 指令系统分析(2)写(输出)指令MOVXRi,A;(A)(P
23、2)(Ri),Ri=0,1;说明:上述指令以R0或R1作低8位地址指针,由P0口送出,寻址范围为256B空间,高8位由当前的P2口状态提供。注意:(1)上述2种指令的操作时序与前面访问外部RAM的指令相同。(2)采用R0或R1作为地址寄存器指出的是外部RAM和外部I/O口的低八位地址,当扩展的数据存储器单元和I/O口的空间不大于256个时,P2口可以作为I/O口使用。433.3.2 指令系统分析 ROM和片外数据RAM传送类指令总结ROM数据传送指令图 片外RAM数据传送指令 44(一)二进制加法指令(1)不带进位位的加法指令 ADDA,源;(A)+源(A)源#data,Rn,direct,R
24、i指令:ADDA,#data;(A)+data(A)ADDA,Rn;(A)+(Rn)(A)ADDA,direct;(A)+(direct)(A)ADDA,Ri;(A)+(Ri)(A)影响标志位Cy,AC,OV,P 3.3.3 算术运算指令453.3.3 算术运算指令加法指令加法指令执行过程与标志位之间的关系D0D1D2D3D4D5D6D7(A)源(A)结果进位(AC)=1进位(Cy)=1(Cy)D6与D7两位其中一位在运算中有进位,而另一位没有,则(OV)=1,否则,(OV)=0.运算结果(A)中1的个数为偶数,(P)=0,否则,(P)=1463.3.3 算术运算指令加法指令例:单字节二进制加
25、法:x存放在20H单元,y存放在21H单元,求 z=x+y(设z小于FFH)D0D1D2D3D4D5D6D7)(Cy)如果z=x+y的结果大于255,势必会产生进位,进位如何处理?47(2)带进位位的加法指令 ADDCA,源;(A)+源+(Cy)(A)源#data,Rn,direct,Ri指令:ADDCA,#dataADDCA,RnADDCA,directADDCA,Ri影响标志位Cy,AC,OV,P3.3.3 算术运算指令加法指令483.3.3 算术运算指令加法指令例1:单字节二进制加法:x存放在20H单元,y存放在21H单元,求 z=x+yD0D1D2D3D4D5D6D7)Cy000000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 指令系统 课件
限制150内