




已阅读5页,还剩150页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选ppt,第3章指令系统与汇编程序设计,精选ppt,学习目标,MCS-51单片机的指令格式及寻址方式汇编语言的指令类型MCS-51单片机汇编语言编程基本方法伪指令使用及汇编语言程序完整格式应用MCS-51单片机指令系统进行编程,精选ppt,主要内容,3.1指令概述3.2寻址方式3.3指令系统3.4伪指令3.5汇编语言程序设计,精选ppt,3.1指令概述,3.1.1指令格式一条汇编指令由标号、操作码、目的操作数、源操作数和注释五部分组成:标号:操作码目的操作数,源操作数;注释例如:HY1:MOVR3,#08H;执行数据传送操作,精选ppt,1)二进制的表示形式:(以指令“累加器A的内容+8”为例)00100100B操作码(加法)00001000B操作数(08H)特点:能被CPU直接识别、运行的形式。也称机器码、目标代码。缺点:不便于阅读、记忆和调试修改。,指令的三种表示形式:,精选ppt,2)十六进制表示形式:00100100B24H00001000B08H,二进制形式十六进制形式,精选ppt,3)“助记符”形式(“汇编格式”):00100100B24H00001000B08HADDA,#08H,二进制表示形式十六进制表示汇编格式,用英文单词或字母、数字来表征指令功能,便于阅读、书写和交流。汇编格式的指令必须“翻译”为二进制形式“机器码”,才能为CPU识别和执行。,精选ppt,汇编语言程序:标号操作码操作数注释START:MOVA,#00H;0AMOVR7,#10;10R7MOVR2,#00000011B;3R2LOOP:ADDA,R2;(A)+(R2);ADJNZR7,LOOP;R7的内容;减1不为0;则循环NOPSJMP$,精选ppt,51系列单片机汇编语言操作码的对照英文,精选ppt,精选ppt,精选ppt,精选ppt,精选ppt,精选ppt,精选ppt,主要内容,3.1指令概述3.2寻址方式3.3指令系统3.4伪指令3.5汇编语言程序设计,精选ppt,寻址方式指的是指令中提供操作数的形式,即寻找操作数或操作数所在地址的方式。51系列单片机存放数据的存储器空间有四种:内部RAM、SFR、外部RAM和程序存储器。访问不同存储器中的数据时,采用不同的寻址方式。51系列单片机有七种寻址方式:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。,3.2寻址方式:,精选ppt,3.2.1立即寻址,指令中直接给出操作数的寻址方式。例MOVA,#20HMOVDPTR,#2009H立即数用一个前面加“”的8位数(如40H)或16位数(如2008H)表示。,精选ppt,汇编语言指令MOVA,#20H存储到程序存储器前要先翻译成机器码指令.,查表3-2(42页)得到:,操作数20H直接存放在指令代码中,74H20H,精选ppt,3.2.2直接寻址,指令中直接给出操作数地址的寻址方式。例:MOVA,40H直接寻址方式中使用8位二进制数表示地址,范围:00H-FFH,所以,只能访问片内RAM的128个单元以及特殊功能寄存器(SFR)。,精选ppt,指令操作示意:MOVA,40H,精选ppt,例MOVA,25H;(25H)(A)MOVP0,#50H;立即数50HP0MOV80H,#50H;同上一条指令相同,只是表;达方式不一样,建议用上条;指令格式,易读MOV30H,20H;(20H)(30H),精选ppt,3.2.3寄存器寻址,以通用寄存器的内容为操作数的寻址方式。指令中包含寄存器的编码。通用寄存器包括R0-R7、A、B和DPTR。,精选ppt,寄存器寻址方式示意图如下:,MOVA,R2,00100101,程序存储器,内部RAM,02H,R2,A,精选ppt,寄存器寻址的操作数是以寄存器编码形式出现在指令代码中,通常操作码和寄存器编码合用一个字节,因此寄存器寻址的指令机器码短,执行快。,精选ppt,例MOVA,R0;(R0)(A),机器码为E8,仅占;1字节,A和R0均为寄存器寻址MULAB;(A)(B)(B)(A)机器码为A4;A和B均为寄存器寻址MOVB,R0;(R0)(B),机器码为88F0,其第;2字节F0为B的地址,B为直接寻;址,R0为寄存器寻址PUAHACC;A的内容压入堆栈,机器码为;C0E0,其第2字节E0为A的地址;A为直接寻址,精选ppt,以寄存器的内容作为操作数的地址的寻址方式。指令中含有寄存器的编码,寄存器中存放操作数的存储地址。能够进行寄存器间接寻址的寄存器有:R0、R1和DPTR。,3.2.4寄存器间接寻址,精选ppt,寄存器间接寻址示意:MOVA,R0,精选ppt,用R0和R1作地址指针时,可寻址片内RAM的256个单元,但不能访问SFR。对于外部RAM,最好用16位的DPTR寄存器间接寻址访问。访问外部RAM只有数据传送类指令,并且用MOVX作为操作码助记符。,精选ppt,例MOVR0,A;(A)(R0)MOVXA,R1;外部RAM(地址为P2:R1);的内容(A)MOVXDPTR,A;(A)以DPTR内容为地址;的外部RAM,精选ppt,基址寄存器加变址寄存器间接寻址方式。基址寄存器:DPTR或PC变址寄存器:累加器A两者内容相加形成的16位数作为操作数的地址,操作数在程序存储器中。变址寻址方式常用于访问程序存储器中的常数。指令助记符为MOVC,3.2.5变址寻址,精选ppt,变址寻址方式示意:MOVCA,A+DPTR,精选ppt,例:MOVCA,A+DPTR;(A)+(DPTR)(A)MOVCA,A+PC;(A)+(PC)(A)JMPA+DPTR;(A)+(DPTR)(PC),精选ppt,以当前PC(程序计数器)的值加上指令中给出的偏移量rel,构成实际操作数地址的寻址方式称为相对寻址。,3.2.6相对寻址,精选ppt,例:2010H:JZ05H机器码:60H05H,目的地址当前PC的值+rel转移指令首地址+转移指令字节数+rel2010H+2+52017H,精选ppt,偏移量rel是有符号的单字节数。用补码表示,范围:-128+127(00FFH),负数表示从当前地址向前转移,正数表示从当前地址向后转移。,例:2010H:JZ05H目的地址:2017H2010H:JZ0F6H目的地址:?2012H+F6H=2000H+(12H+F6H)=2008H2012H+(-10)=2008H,精选ppt,在实际编程应用中,相对偏移量rel通常是用转移目的地址的标号来替代,由汇编程序自动计算偏移量rel,不需要手算。,MAX:MOVA,#2FHMOVR0,#20HCLRCSUBBA,R0JZMAXINCR0,精选ppt,指令中给出位操作数的位地址,根据位地址访问位操作数的寻址方式。,3.2.7位寻址,精选ppt,1,精选ppt,某些特殊功能寄存器(SFR)中的位也可以位寻址,SETB0AFH;1EA位SETBEA;同上SETBIE.7;同上,精选ppt,主要内容,3.1指令概述3.2寻址方式3.3指令系统3.4伪指令3.5汇编语言程序设计,精选ppt,51系列单片机的指令系统共有111条指令。按指令的长度可分为:单字节指令49条;双字节指令45条;三字节指令17条。,3.3指令系统:,3.3.1指令系统概述,精选ppt,按指令的执行时间可分为:单机器周期的指令64条;双机器周期的指令45条;四个机器周期的指令(乘、除)2条;,精选ppt,按指令的功能可分为:数据传送类指令29条;算术运算类指令24条;逻辑操作类指令24条;控制转移类指令17条;位操作类指令17条。,精选ppt,数据传送指令的基本功能是将指令中指定的源操作数送到目的地址中。例:MOVA,B;(A)0;i-)Bk=Aj;j+;k+;,汇编语言程序:MOVR0,#10HMOVR1,#50HMOVR7,#26HNET1:MOVR1,R0INCR0INCR1DJNZR7,NET1,精选ppt,汇编语言程序:MOVR0,#10HMOVR1,#50HMOVR7,#26HNET1:MOVR1,R0INCR0INCR1DJNZR7,NET1,查42页指令系统表无此指令,精选ppt,修改后的程序:MOVR0,#10H;数据源起始地址送R0MOVR1,#50H;目标单元起始地址送R1MOVR7,#26H;循环次数送R7NET1:MOVA,R0;要传送的数据送AMOVR1,A;通过A送入目标单元INCR0;R0的值增1,源地址指针指向下一个单元INCR1;R1的值增1,目的地址指针指向下一个单元DJNZR7,NET1;R7内容减1,;若不为0,转移到NET1继续执行,;若为0,则结束循环SJMP$;等待END;程序结束.,精选ppt,精选ppt,例3-10将片外RAM中2000H单元内容传入RAM中50H单元。,从片外RAM读取数据有2条指令:MOVXA,DPTR;(A)09H00111001-00001001,分析:只需将39H的高4位清零,低4位不变。可采用逻辑与指令:ANLR1,#0FH,精选ppt,例3-26设(A)=AAH,P1=FFH,试通过编程把A的低4位送入P1口低4位,P1口高4位不变。,(1):清零A的高4位,低4位保留;(A):AAH-0AH10101010-00001010(2):清零P1口低4位,高4位不变;(P1):FFH-F0H11111111-11110000(3):把A的低4位和P1口的高4位装配到一起。(P1):FAH11111010,精选ppt,(1):清零A的高4位,低4位保留;(A):AAH-0AH10101010-00001010ANLA,#00001111B(2):清零P1口低4位,高4位不变;(P1):FFH-F0H11111111-11110000ANLP1,#11110000B(3):把A的低4位和P1口的高4位装配到一起。(P1):FAH11111010ORLP1,A,精选ppt,ANLA,#0FH;取出A的低4位,高4位置0ANLP1,#0F0H;取出P1口的高4位,低4位置0ORLP1,A;字节装配,精选ppt,例3-27编程使内部RAM中的30H单元内容的低2位清0,高2位置1,中间4位取反。,低2位清0:?-?00ANL30H,#11111100B高2位置1:?-11?ORL30H,#11000000B中间4位取反:?0011?-?1100?XRL30H,#00111100B;3CH,精选ppt,51系列单片机的移位指令只能对累加器A进行移位,移位示意图如下所示:,精选ppt,精选ppt,例3-29已知2DH单元有一正数,试编程求其负数的补码并将结果传送到30H单元。,MOVA,2DH;将2DH单元内容送ACPLA;按位取反INCA;加1MOV30H,A;结果送到30H单元SJMP$;等待,精选ppt,3.3.5控制转移指令,控制转移类指令的功能是改变指令的执行顺序,转移到指令指示的新的地址执行程序。,精选ppt,控制转移指令分类:无条件转移:无需判断,执行该指令就转移到目的地址。条件转移:需判断标志位是否满足条件,若满足条件,则转移到目的地址,否则顺序执行。,精选ppt,绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。相对转移:转移的目的地址用相对于当前PC的偏移量来表示,通常为条件转移。,当前PC的值转移指令首地址+转移指令字节数,精选ppt,长转移/长调用:目的地址在距当前PC的64KB范围内。短转移/短调用:目的地址在距当前PC的一个较小的范围内,如-128127Byte或2KB.,精选ppt,例3-30比较下列三条指令SJMPSYSADR;相对转移AJMPSYSADR;绝对转移LJMPSYSADR;长转移,(1)SYSADR是符号地址,即标号;(2)三条指令同属于无条件转移指令;(3)三条指令的转移地址都是SYSADR,但汇编时的计算方法不同。,精选ppt,1000H:SJMPSYSADRSYSADR:MOVA,#20H,SJMP是相对转移指令,它的操作数是一个8位偏移量假设:SYSADR=1030H当前PC值=1000H+2=1002H相对偏移量目的地址-当前PC值1030H1002H2EHSJMPSYSADR=SJMP2EH,精选ppt,SJMPrel相对偏移量rel是一个8位补码数,其取值范围为-128+127.所以,相对转移指令的转移范围:,精选ppt,1000H:AJMPSYSADRSYSADR:MOVA,#20H,AJMP是绝对转移指令,它的操作数是一个11位地址假设:SYSADR=1030H当前PC值=1000H+2=1002H当前PC值:0001000000000010目的地址:0001000000110000AJMPSYSADR=AJMP00000110000B,精选ppt,AJMPaddr11addr11是一个11位数,取值范围为00-11.所以,AJMP指令的转移范围为2KB.,精选ppt,1000H:LJMPSYSADRSYSADR:MOVA,#20H,LJMP是长转移指令,它的操作数是一个16位地址假设:SYSADR=1030HLJMPSYSADR=LJMP1030HLJMP指令的转移范围为整个64KB程序存储器空间。,精选ppt,例3-31要求当(A)=0转移到程序段K0当(A)=2转移到程序段K1当(A)=4转移到程序段K2,MOVDPTR,#TABLE;表首地址送DPTR中JMPA+DPTR;以A中内容为偏移量跳转TABLE:AJMPK0;(A)=0转K0执行AJMPK1;(A)=2转K1处执行AJMPK2;(A)=4转K2执行,精选ppt,例3-32查询P1口输入,若为48H程序向下执行,否则等待,直至P1口出现48H。,MOVA,P1WAIT:CJNEA,#48H,WAIT,精选ppt,其它控制转移类指令:DJNZR7,LOOPJZLOOP1JNZLOOP2,精选ppt,子程序调用指令:LCALLaddr16指令操作过程:(1)(PC)-(PC+3);取指令PC自动增加(2)(SP)-(SP+1);把当前PC推入堆栈栈顶-(PCL);PC低8位入栈(SP)-(SP+1)栈顶-(PCH);PC高8位入栈(3)(PC)-addr16;转移到指定地址,精选ppt,子程序返回指令:RET指令操作过程:(PCH)-栈顶单元内容;恢复PC高8位(SP)-(SP-1)(PCL)-栈顶单元内容;恢复PC低8位(SP)-(SP-1)中断返回指令:RETIRETI基本功能与RET相同,但还与中断系统有关。,精选ppt,例3-34子程序调用和返回。,精选ppt,3.3.6位操作指令,51系列单片机的硬件结构中,有一个位处理器。在进行位操作时,使用进位标志CY作为位累加器。位存储器是片内RAM字节地址20H2FH单元中连续128个位和特殊功能寄存器中的部分寄存器。,精选ppt,MOVC,ACC.1;CY-ACC.1ANLC,ACC.0;CY-CY(ACC.0)ORLC,/26H;CY-CY(/26H)CLR28H;(28H)-0SETBC;CY-1CPLC;CY-(/C)JCLOOP1JB61H,LOOP2JBC62H,LOOP3,精选ppt,例3-38在P1口的P1.0、P1.1、P1.2引脚上分别有变量A、B、C,试编程实现表达式:Y由P1.7输出。,用硬件方式实现:,精选ppt,LSUB:MOVA,P1;P1口数送AANLA,#07H;高位清0,低3位不变MOVC,ACC.1;ACC.1即P1.1,将变量B送CYANLC,/ACC.0;CY(/A)BANLC,/ACC.2;CY(/A)B(/C)MOVPSW.5,C;PSW.5=MOVC,ACC.0;CYAANLC,/ACC.1;CYA(/B)ANLC,ACC.2;CYA(/B)CORLC,PSW.5;CY(/A)B(/C)+;A(/B)CMOVP1.7,C;输出,用软件方式实现:,精选ppt,主要内容,3.1指令概述3.2寻址方式3.3指令系统3.4伪指令3.5汇编语言程序设计,精选ppt,汇编有两种形式:手工汇编机器汇编,3.4伪指令,汇编语言源程序,机器语言目标程序,精选ppt,使用机器汇编时,必须提供一些信息,比如:哪些是指令,哪些是数据,数据是字节还是字,程序的起始点和结束点在何处等等。这些信息是以指令的形式插入到源程序中的,这种用于控制汇编过程的指令称为伪指令。功能:用来对汇编过程进行某种控制。伪指令有没有对应的机器指令?,精选ppt,汇编起始命令ORG(origin)ORG16位地址ORG伪指令用于指定程序或常数在程序存储器中的起始存储地址,即汇编后生成的目标程序的起始存储地址。例:ORG2000HMOVA,#2FH,常用的几条伪指令,精选ppt,2.汇编终止命令END标号:END该命令是汇编语言源程序的结束标志,用于终止源程序的汇编工作。,POSI:MOVA,#01HDONE:MOVFUNC,ASJMP$END,精选ppt,3.赋值命令EQU标号EQU数值表达式给标号(字符串)赋值。用字符串代替一个具体数值。,例:AAEQU30HKEQU40HMOVA,AA;=MOVA,30HMOVA,K1;=MOVA,40H,精选ppt,4.定义字节DB(DefineByte)标号:DB项或项表项或项表中的数可以是一个8位二进制数或是用逗号隔开的一串8位二进制数。DB的功能是定义一个或若干个字节。,精选ppt,例3-39ORG1000HDB50H,60H,12,C,程序的汇编结果为:,MACROASSEMBLERA51V8.00地址目标代码汇编语言源程序1000ORG1000H100050600C43DB50H,60H,12,CEND,精选ppt,5.定义数据字DW(DefineWord)标号:DW项或项表定义一个或若干个数据字(16位二进制数)。高8位存入地址小的存储单元,低8位存入地址大的存储单元。,精选ppt,例3-40ORG1000HDW3450H,60H,12,C,汇编结果为:,MACROASSEMBLERA51V8.00地址目标代码汇编语言源程序1000ORG1000H10003450DW3450H,60H,12,C100200601004000C10060043END,精选ppt,6.预留存储空间DS(DefineStorage)标号:DS表达式从标号地址开始,保留若干个字节的存储空间。保留的字节单元数由表达式的值决定。,精选ppt,例3-41ORG1000HDS10HDB99H,MACROASSEMBLERA51V8.00地址目标代码汇编语言源程序1000ORG1000H1000DS10H101099HDB99HEND,精选ppt,7.定义位地址BIT位名字BIT位地址功能:给一个可位寻址的位单元起一个名字。,赋值后在后续的源程序编写中可用该名字代替BIT后面的位地址,便于阅读。,例:ABCBITP1.1QQBITP3.2,精选ppt,8.将内部RAM地址赋值给名字DATA名字DATA直接字节地址给一个8位内部RAM单元起一个名字。,例:OPRAND1DATA50HMOVA,OPERAND1=MOVA,50H,精选ppt,单片机A51汇编程序还有一些其他的伪指令,详见58页表3-3。,精选ppt,主要内容,3.1指令概述3.2寻址方式3.3指令系统3.4伪指令3.5汇编语言程序设计,精选ppt,51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言)。高级语言编程效率高,但程序长,占用存储空间大,执行慢;汇编语言程序产生的目标程序短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成机器语言目标程序才能执行。,3.5汇编语言程序设计,精选ppt,1.源程序的编辑汇编语言源程序是文本程序,可使用各种字处理软件进行编辑,编好的源程序应以“.ASM”扩展名存盘。,3.5.1源程序的编辑与汇编,精选ppt,2.源程序的汇编,把汇编语言源程序翻译为单片机能执行的机器语言目标程序的过程叫汇编。手工汇编机器汇编,精选ppt,3.汇编语言程序的基本格式,;求片内RAM连续三个单元存放的无符号数中的最大值ADR1DATA50H;存放第一个数地址ADR2DATA51H;存放第二个数地址ADR3DATA52H;存放第三个数地址XEQU20H;第一个数的值YEQU30H;第二个数的值ZEQU0FFH;第三个数的值ORG0000H;规定程序起始地址MAIN:MOVADR1,#X;第一个数据送入ADR1单元MOVADR2,#Y;第二个数据送入ADR2单元MOVADR3,#Z;第三个数据送入ADR3单元MOVR0,#ADR1;将首地址送入R0ACALLMAX;调用求最大值子程序SJMP$;等待查看结果;子程序见下一页,精选ppt,;入口参数:连续三个单元的最低字节地址放在R0;出口参数:最大值送入A寄存器MAX:MOVA,R0;(R0)AMOVB,A;B暂存第1个数CLRC;清进位标志INCR0;地址加1SUBBA,R0;第1个数和第2个数相比JNCMAX1;没有进位表示第1个数大于第2个数MOVA,R0;将两个数中最大值送AJMPMAX2MAX1:MOVA,BMAX2:MOVB,A;B暂存两个数中较大的数INCR0SUBBA,R0;与第3个数进行比较JNCMAX3MOVA,R0;最大值送入ARETMAX3:MOVA,BRETEND,精选ppt,3.5.2基本程序结构,任何大型的、复杂的程序都是由基本程序结构组成的,常用的程序结构包括:顺序结构分支结构循环结构子程序,精选ppt,顺序程序是指无分支、无循环结构的程序。其执行流程是依指令在存储器中的存放顺序进行的。,1.顺序程序,精选ppt,例有一变量存放在片内RAM的20H单元,其取值范围为:00H05H。要求编写查表程序,根据变量值求平方值,并存入片内RAM的21H单元。(1)建立平方表:ORG2000HTABLE:DB00,01,04,09,16,25(2)查表指令MOVCA,A+DPTRDPTR:平方表的起始存储地址2000H;A:指令执行前,查表的输入值指令执行后,查表输出结果,精选ppt,查表数值存放在片内RAM的20H单元,范围为:00H05H.查表结果存入片内RAM的21H单元。程序如下:ORG1000HMOVDPTR,#2000HMOVA,20HMOVCA,A+DPTRMOV21H,ASJMP$ORG2000HTABLE:DB00,01,04,09,16,25END,精选ppt,精选ppt,2.分支程序,分支结构可以分成单分支、双分支和多分支几种情况:,精选ppt,已知VAR单元内有一自变量X,请按右图所示条件编程求函数Y,并将Y存入FUNC单元。VARDATA30HFUNCDATA31HORG0100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年短视频平台内容风险识别与防范策略研究报告
- 现场发泡包装机知识培训课件
- 2025年基因治疗药物临床研发人才需求分析:市场前景与人才培养报告
- 吉林省永吉县实验高级中学2026届化学高二上期中监测试题含解析
- 炮车中学2026届高三上化学期中学业水平测试模拟试题含解析
- 2026届山西省大同市铁路一中高一化学第一学期期中联考试题含解析
- 2025年注册环保工程师考试 环境保护与可持续发展专项训练试卷
- 2025年注册化工工程师考试化工原理专项训练试卷:巩固化工基础知识
- 2026届浙江省温州树人中学高二化学第一学期期末教学质量检测试题含答案
- 民法典普法课件
- 职业道德与法治中职PPT完整全套教学课件
- 惠州卫生职业技术学院工作人员招聘考试真题2022
- 三级创业指导师考试复习题库(500题)
- 2022年北京语言大学各单位新编长聘人员招聘需求笔试备考题库及答案解析
- 部编版小学语文四年级上册课程纲要
- GB/T 31997-2015风力发电场项目建设工程验收规程
- HG20615-RF法兰标准尺寸
- 三尖瓣下移畸形(Ebstein畸形)
- 计算机组装与维护完整版课件(全)
- 一键自动生成spccpkMSAPPK数据工具
- (知识扩展)城市轨道交通CBTC系统功能课件
评论
0/150
提交评论