单片机应用课件第4章

上传人:我*** 文档编号:137004253 上传时间:2020-07-04 格式:PPT 页数:50 大小:931KB
返回 下载 相关 举报
单片机应用课件第4章_第1页
第1页 / 共50页
单片机应用课件第4章_第2页
第2页 / 共50页
单片机应用课件第4章_第3页
第3页 / 共50页
单片机应用课件第4章_第4页
第4页 / 共50页
单片机应用课件第4章_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《单片机应用课件第4章》由会员分享,可在线阅读,更多相关《单片机应用课件第4章(50页珍藏版)》请在金锄头文库上搜索。

1、第四章MCS-51单片机指令系统,4-1指令系统概述,4-2指令寻址方式,4-3MCS-51单片机指令,指令是CPU指挥计算机进行某种操作的命令,指令系统是某种型号的计算机所能执行的所有指令的集合。,4-1指令系统概述,一.指令的表达形式助记符指令(汇编语言指令)二进制代码指令(机器码指令),二.汇编语言指令格式标号:操作码操作数1,操作数2;注释换行表示一条指令结束。例:LOOP:MOVA,#40H;取参数,1.标号:指令的符号地址2.操作码:指明指令功能。,3.操作数:指令操作对象数据、地址、寄存器名及约定符号。4.注释行:说明指令在程序中的作用。操作码和操作数是指令主体。,MOV_mov

2、e传送XCH_exchange交换ANL_andlogic与逻辑运算XRL_exclusiveor异或运算MUL_Multiply乘法RR_rotateright右循环SJMP_shortjump短跳转RET_return子程序返回,4-1指令系统概述,三.机器语言指令格式,操作码操作数1操作数2有单字节、双字节和三字节指令。,汇编语言指令中操作码和操作数是指令主体,称为指令可执行部分,指令表中可查出对应指令代码。,举例:汇编语言:机器语言:MOVA,R0E8HMOVR6,#32H7E32HMOV40H,#64H754064H,11101000,四.指令系统中有关符号说明,4-2指令寻址方式,

3、4-2-1操作数类型位(b)位寻址区中的一位二进制数据字节(B)8位二进制数据字(W)16位双字节数据,4-2-2寻址方式一.立即寻址方式指令中给出实际操作数据(立即数),一般用于为寄存器或存储器赋常数初值。举例:8位立即数:MOVA,#40H;A40H16位立即数:MOVDPTR,#2100H;DPTR2100H,二.直接寻址方式(只能在内部RAM中进行),指令中直接给出操作数所在存储器单元的地址。MOVA,40H;A(40H),直接寻址方式对数据操作时,地址是固定值,而地址所指定的单元内容为变量形式。,56H,例:设存储器两个单元的内容如图所示,执行指令MOVA,40H后A=?,思考题:直

4、接寻址方式指令和立即寻址方式指令的形式有什么不同?,三.寄存器寻址方式(R0R7、A、DPTR)指令中指定某个寄存器的内容作为操作数。例:MOVA,R0;A(R0)设指令执行前A=20H,R0=40H,执行指令后,A=?,R0=?,四.寄存器间接寻址方式(不能访问特殊功能寄存器)指令中指定将某一寄存器的内容作为操作数的地址。存放地址的寄存器称为间址寄存器或数据指针。例:MOVA,R0;A(R0)设指令执行前A=20H,R0=40H,地址为40H存储器单元内容如图所示。执行指令后,A=?,R0=?,(40H)=?,34H,40H,34H,40H,40H,01000000,A,00100000,R

5、0,01000000,R0,五.变址间接寻址方式(51特有,只能访问程序存储器)以16位寄存器(PC或DPTR)的内容作为基址,以累加器A的内容为偏移量,将两者进行相加的和作为操作数地址。,例:MOVCA,A+DPTR;A(A)+(DPTR)设指令执行前A=09H,DPTR=2000H,存储器单元内容如图所示。执行指令后,A=?DPTR=?,12H,2000H,六.位寻址方式指令中直接给出位操作数的地址。例:MOVC,40H;Cy(位地址40H)设指令执行前Cy=1,位地址40H存储器单元为0,执行指令后,Cy=?,0,4-3MCS-51单片机指令,指令功能分类:数据传送、数据操作、布尔处理、

6、程序控制。,4-3-1数据传送指令实现寄存器、存储器之间的数据传送。一.内部传送指令:片内数据存储器数据传送。二.外部传送指令:片外数据存储器数据传送。三.交换指令:片内数据存储器数据传送。四.堆栈操作指令:片内数据存储器数据传送。五.查表指令:程序存储器数据传送。,1.以累加器A为目的地址2.以Rn为目的地址3.以直接地址为目的地址4.以寄存器间接地址为目的地址5.以DPTR为目的地址的16位指令,(一)内部传送指令:实现片内数据存储器中数据传送。指令格式:MOV目的操作数,源操作数寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间址。,例:顺序执行下列指令序列,求每一步执行结果。,MOVA

7、,#30HMOV4FH,AMOVR0,#20HMOVR0,4FHMOV21H,20H,习题2:用两种寻址方式实现,将片内RAM60H单元的数据传送给累加器A。,解:MOVA,#60H,MOVR0,#60HMOVA,R0,;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30H,MOVR0,60HMOVA,R0,解:MOVA,60H,说明:,只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。,1.一条指令中不能同时出现两个工作寄存器:非法指令:MOVR1,R2MOVR2,R0,2.间址寄存器只能使用R0、R1。非法指令:MOVA,R2

8、,3.SFR区只能直接寻址,不能用寄存器间接寻址。非法指令:MOVR0,#80HMOVA,R0,4.指令表:B:指令字节数,M:机器周期数,(二)外部传送指令实现片外数据存储器和A累加器之间的数据传送。,指令格式:MOVX目的操作数,源操作数寻址方式:片外数据存储器用寄存器间址方式。1.DPTR作16位数据指针,寻址64KB片外RAM空间MOVXA,DPTR;A(DPTR)MOVXDPTR,A;(DPTR)A2.Ri作8位数据指针,寻址256B片外RAM空间MOVXA,Ri;A(Ri)MOVXRi,A;(Ri)(A),例:实现片外数据存储器数据传送(2000H)(2100H)。,MOVDPTR

9、,#2000HMOVXA,DPTRMOVDPTR,#2100HMOVXDPTR,A,习题3:将片外RAM0000H单元的数据传送到片内RAM的60H单元。,;DPTR=2000H;A=X;DPTR=2100H;(2100H)=X,片外数据存储器不能直接寻址。下列为非法指令:MOVXA,2000HMOVX2100H,2000H,思考题:为什么对DPTR的数据传送使用内部传送指令?,(三)交换指令实现片内RAM区的数据双向传送。,1.字节交换指令XCHA,Rn;(A)(Rn)XCHA,Ri;(A)(Ri)XCHA,direct;(A)(direct),习题4:将片内RAM60H单元与61H单元的数

10、据交换。,例:设A=29H,执行指令XCHA,2AH后,A=?(2AH)=?,38H,29H,XCH60H,61H对吗?,29H,2.半字节交换指令,XCHDA,Ri;(A)03(Ri)03SWAPA;(A)47(A)03,例:交换片内RAM40H单元和41H单元的低半字节。MOVA,40HMOVR0,#41HXCHDA,R0MOV40H,A,(四)堆栈操作指令入栈指令:PUSHdirect;SP(SP)+1,(SP)(direct)出栈指令:POPdirect;direct(SP),SP(SP)-1,例:设A=02,B=56H,执行下列指令后,SP=?,A=?,B=?,SP,SP02,SP5

11、6H02,56H02HSP,SP56H02,SP56H02,56HSP02,02H,A,00H,02H,00H,02H,02H,SBR:MOVSP,#30H;设栈底PUSHACCPUSHBMOVA,#0MOVB,#01POPBPOPACC,(五)查表指令(访问程序存储器的传送指令)实现从程序存储器读取数据到A累加器,只能使用变址间接寻址方式。多用于查常数表程序,可直接求取常数表中的函数值。,1DPTR为基址寄存器MOVCA,A+DPTR;A(A)+(DPTR)查表范围为64KB程序存储器任意空间,称为远程查表指令。2PC为基址寄存器PC(PC)+1MOVCA,A+PC;A(A)+(PC)常数表

12、只能在查表指令后256B范围内。,例:查表法求Y=X2。设X(0X15)在片内RAM的20H单元中,要求将查表求Y,存入片内RAM21H单元。,1)ORG1000HSQU:MOVDPTR,#TAB;确定表首地址(基地址)MOVA,20H;取X(偏移量MOVCA,A+DPTR;查表求Y=X2MOV21H,A;保存YRET;子程序结束;其它程序段ORG3000H;常数表格首地址TAB:DB00,01,04,09,225;平方表,2)指令地址源程序ORG1000H;程序起始地址1000HSQU:MOVA,20H;取X1002HADDA,#3;修正偏移量1004HMOVCA,A+PC;查表求Y=X21

13、005HMOV21H,A;存结果1007HRET;子程序结束1008HTAB:DB00,01,04;平方表100BHDB09,225,思考题:当0X255时,如何用查表法编程求Y=X2。,例:查表法求Y=X2。设X(0X15)在片内RAM的20H单元中,要求将查表求Y,存入片内RAM21H单元。,习题:找出指令错误并改正:,1MOVA,#1000H;A1000H2MOVXA,1000H;A(1000H)片外RAM3MOVCA,1000H;A(1000H)片外ROM4MOVX60H,A;片外RAM(60H)A5MOVR0,60H;片内RAM:(61H)(60H)MOV61H,R06.XCHR1,

14、R2;R1R27.MOVXDPTR,#2000H;DPTR2000H8.MOVX60H,DPTR;片内RAM片外RAM,4-3-2算术运算指令,与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。,复习状态标志,MCS-51的程序状态字寄存器PSW为标志寄存器。其格式如下:,1标志位(自动设置状态),1)Cy:进位标志位保存运算后最高位的进位/借位状态,当有进位/借位,Cy=1,否则Cy=0。2)AC:辅助进位标志位保存低半字节的进位/借位状态,当D3产生进位/借位,AC=1,否则AC=0。用于十进制调整。3)OV:溢出标志

15、位OV=Cy7Cy6,补码运算产生溢出OV=1,否则OV=0。4)P:奇偶标志位反映累加器A中数据的奇偶性。当1的个数为奇数,P=1,否则P=0。,2用户选择位(编程设置状态),1)F0:用户自定义标志位。2)RS1、RS0:工作寄存器区选择位。复位时,PSW=00H,例:复位后,设置使用工作寄存器2区,其余标志位不变。,解:MOVPSW,#,10H,4-3-2算术运算指令完成片内RAM和A中数据的加减乘除运算。,一加减指令1.加法指令,00111011+0011101101110110,76H0011,1)不带进位加法:ADDA,源操作数ADDA,R2;A(A)+(R2),影响Cy、OV、A

16、C、P例1:A=3BH,PSW=0,执行指令ADDA,#3BH求:A=,Cy=,OV=,AC=,P=,PSW=?,01000001=41H,1001101011100011+0101111101,2)带进位加法:ADDCA,源操作数ADDCA,R2;A(A)+(R2)+(Cy),影响Cy、OV、AC、P,7DH1100,例2:A=9AH,R2=E3H,PSW=0,执行指令ADDCA,R2后求:A=,Cy=,OV=,AC=,P=,PSW=?,10000100=84H,带进位加法指令ADDC用于多字节运算,例:设双字节数X存在片内RAM41H、40H单元,Y存在42H、43H单元,编程求Z=X+Y,并存入片内RAM单元44H、45H、46H。,ADDS:MOVA,40HADDA,42HMOV44H,AMOVA,41HADDCA,43HMOV45H,AMOVA,#0ADDCA,#0MOV46H,ARET,;取被加数低字节;加上加

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号