您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第2章MCS-51单片机应用教程
第2章单片机的指令系统2.1指令系统概述2.2寻址方式2.3指令功能介绍2.4小结习题通过对本章的学习,读者应具备以下能力:熟练掌握不同寻址方式以及汇编指令的用法掌握伪指令的使用以及汇编语言程序的完整格式掌握算术运算类指令对PSW各标志位的影响理解汇编语言程序的执行过程本章学习目标一种计算机所有指令的集合,称为该计算机的指令系统。它是表征计算机性能的重要标志。各类计算机都有专用的指令系统。2.1指令系统概述MCS-51单片机共有111条指令,有几种不同的分类方法。(1)按指令功能分类,如图2-1所示。2.1.1指令分类图2-1按指令功能分类图(2)按指令字长分类,如图2-2所示。图2-2按指令字长分类图(3)按指令执行时间分类,如图2-3所示。图2-3按指令执行时间分类图用MCS-51单片机汇编语言表示的指令格式如下:[标号]:操作码[目的操作数],[源操作数];[注释]一条汇编语句是由标号、操作码、操作数和注释部分组成的,其中方括号中的部分是可选项。例如:AA:ADDA,#10H;执行加法操作AA:为标号,ADD为操作码,A与#10H为操作数,“;”后面为注释部分。2.1.2指令格式用汇编语言编写程序时,应注意以下几个问题:(1)标号标号是语句地址的标志符号。有关标号的规定如下:①标号由1~8个字母或数字组成,可以使用一个下划线符号“_”。②第一个字符必须是字母。③指令助记符或系统中保留使用的字符串不能作为标号。④标号后面必须跟一个冒号。⑤一条语句可以有标号,也可以没有标号。标号的有无取决于本程序中其他语句是否需要访问这条语句。以下是合法的标号以下是不合法的标号LOOP1:5LOOP:(第一个字符是数字)START:A*5:(“*”不能在标号中出现)Q4_:ADD:(指令助记符)SSS:START(无冒号)L123:L12345678:(超过8个字符)(2)操作码规定语句执行的操作。操作码是以指令助记符或伪指令助记符表示的。操作码是汇编指令中惟一不能空缺的部分。(3)操作数用于给指令的操作提供数据或地址。在一条指令中,操作数可以为1项、2项或3项,各操作数之间用逗号隔开,操作数也可能空缺。例如:LOOP:INCA;1项操作数ADDA,#50H;2项操作数CJNEA,#5,LOOP;3项操作数RET;无操作数(4)注释注释不属于语句的功能部分,它只对语句进行解释说明。在程序汇编时注释字段不被汇编,可有可无,只起说明作用。注释内容以“;”开头。(5)分隔符分隔符用于分割语句的各个部分,以便于区分。冒号“:”用于标号之后;空格用于操作码和操作数之间;逗号“,”用于操作数之间;分号“;”用于注释之前。为节省存储空间,MCS-51单片机采用变字长指令方式。按8位二进制数为一个字节,指令字长有单字节、双字节和三字节3种,在存储单元中分别占1~3个单元。指令周期是指执行一条指令所需要的时间。指令字节数越多,所占存储单元则越多,但指令周期并不与指令所占字节数成比例。2.1.3指令字长和指令周期寻址方式是指CPU寻找操作数或操作数地址的方式。计算机执行程序的过程是不断地寻找操作数并进行操作的过程。MCS-51单片机共有7种寻址方式,分述如下。2.2寻址方式1.寻址范围指令中直接给出操作数所在的单元地址,它的寻址范围为单片机内部RAM。(1)内部RAM低128单元。在指令中直接以单元地址形式给出,地址范围00H~7FH;(2)特殊功能寄存器SFR。直接寻址是SFR惟一的一种寻址方式。SFR可以以单元地址给出,也可以用寄存器符号形式给出(A、AB、DPTR除外)。2.2.1直接寻址2.使用注意事项(1)寻址特殊功能寄存器SFR时,可以用直接地址,也可以用寄存器名。例如:MOVA,0D0H;A←(D0H)MOVA,PSW;A←(PSW)这两条指令汇编后机器码完全一样,均为E5D0H,其中D0H为程序状态字PSW寄存器的物理地址。物理地址D0前要加0(凡以字母A~F开头的十六进制数均需加前导0)。(2)在MCS-51单片机指令系统中,累加器A有三种不同的表达方式,即A、ACC和E0H,分属不同的寻址方式,但指令的执行结果完全相同。例如:INCA;寄存器寻址方式INCACC;直接寻址方式INC0E0H;直接寻址方式操作数直接由指令给出,通常紧跟指令操作码之后的字节是操作数,该操作数被称为立即数。一般立即数可以是8位二进制数,也可以是16位二进制数。2.2.2立即寻址例如:MOVA,#7AHMOVDPTR,#1234H注意:立即数前加“#”号,以区别直接地址。例如:MOVA,#30H;A←30HMOVA,30H;A←(30H)第一条指令是把立即数30H送累加器A,而第二条指令把30H单元的内容送累加器A。这种寻址方式中,操作数在寄存器中,确定了寄存器,就得到了操作数。可用于寄存器寻址的寄存器有:(1)四组工作寄存器R0~R7共32个工作寄存器。由程序状态字PSW中的RS1、RS0两位的状态进行当前工作寄存器组的选择。(2)部分特殊功能寄存器有A、AB、DPTR和Cy。例如:MOVA,R3;当前R3中的内容送累加器A。2.2.3寄存器寻址作为被寻找的操作数。用来存放操作数地址的寄存器称为指针。这种寻址方式称为寄存器间接寻址方式。MCS-51单片机用于间接寻址的寄存器有R0、R1、堆栈指针SP以及数据指针DPTR。2.2.4寄存器间接寻址1.寻址范围(1)内部RAM低128单元,地址范围00H~7FH,用Ri(i=0,1)作为间接寻址寄存器。(2)片外RAM的64KB,地址范围0000H~FFFFH,用DPTR作为间接寻址寄存器。也可用Ri作为间接寻址寄存器,此时用P2口指示高8位地址,Ri指示低8位地址,可寻址片外RAM(I/O口)64KB区域。例如:设(R1)=60H,(60H)=50HMOVA,@R1;执行结果(A)=50H2.使用注意事项(1)为区别寄存器寻址方式,间接寻址寄存器前加@。(2)寄存器间接寻址方式不能用于对特殊功能寄存器SFR的寻址。例如:MOVR0,#0F0HMOVA,@R0以上指令不能执行,因为0F0H为特殊功能寄存器B的物理地址,而对于特殊功能寄存器,不能对其进行间接寻址,只能直接寻址。(3)栈操作指令也是间接寻址方式,它以堆栈指针SP作为间接寻址寄存器。MCS-51单片机的变址寻址是以数据指针DPTR或程序计数器PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成新的16位地址作为操作数地址,再寻址该地址,读取数据。例如:MOVCA,@A+PC设执行指令之前(A)=50H,要取的操作数为37H,该指令所在地址为3F00H单元。2.2.5变址寻址指令功能是把该指令当前地址PC值与A累加器内容相加形成操作码地址3F51H,3F51H中的内容37H送A累加器。(当前地址为取指后的PC值,本例PC当前值为3F01H。)指令执行过程如图2-4所示。图2-4变址寻址示意图对MCS-51单片机指令系统变址寻址方式的几点说明:(1)变址寻址方式只能对程序存储器进行寻址,因此只能用于读取数据,而不能用于存放数据,它主要用于查表性质的访问。(2)变址寻址指令只有3条:MOVCA,@A+PCMOVCA,@A+DPTRJMP@A+DPTR前两条指令是在程序存储器中寻找操作数,指令执行完毕PC当前值不变。后一条指令是要获得程序的跳转地址,指令执行完毕PC值改变。相对寻址用于访问程序存储器,只出现在转移指令中。“寻址”不是寻找操作数的地址,而是寻找程序跳转地址,它以PC的当前值加上指令中给出的相对偏移量(rel)形成转移地址。相对偏移量(rel)是一个带符号的8位二进制数,以补码形式出现。所以程序的转移范围为以PC当前值为中心,介于-128~+127之间。2.2.6相对寻址例如:JCrel设rel=85H,Cy=1,这是一条以Cy状态为条件的转移指令,因为该指令为两字节指令,CPU取出指令的第二个字节时,PC当前值为原PC值+2。由于Cy=1,因此程序转向(PC)+2+rel单元去执行。注意此时rel=85H为负数。若转移指令放在2002H单元,取出指令后PC指向2004H单元,新的转移地址(PC)+rel=2004H+85H=2004H+FF85H(16位二进制补码)=1F89H,经补码运算后,形成跳转地址1F89H。指令执行过程如图2-5所示。图2-5相对寻址(JC85H)示意图MCS-51单片机设有独立的位处理器,又称为布尔处理器,可对位地址空间的211个位地址进行运算和传送操作。2.2.7位寻址位寻址范围(1)内部RAM的位寻址区,共16个单元的128位,单元地址为20H~2FH,位地址为00H~7FH,位地址的表示方法可以用直接位地址或单元地址加位的表示方法。例如:MOVC,7AH或MOVC,2FH.2此例中,7AH与2FH.2表示的是同一个位地址(见表1-3,书9页)。(2)特殊功能寄存器SFR中可供位寻址的专用寄存器共11个,其中有83位可供位寻址,这些位地址在指令中有4种表达方式。①直接使用位地址:MOVC,0D6H②位名称表示法:MOVC,AC③单元地址加位的表示法:MOVC,0D0H.6④专用寄存器符号加位的表示法:MOVC,PSW.6为了使读者更好地理解寻址方式,7种寻址方式作用范围见表2-1。(见书24页)以上对于寻址方式举例中,多是针对源操作数的,实际上目的操作数也有寻址问题。源操作数为间接寻址方式,目的操作数为直接寻址方式。但总的来说源操作数寻址方式多,目的操作数寻址方式较少。源操作数有立即寻址、直接寻址、寄存器寻址、间接寻址、变址寻址和位寻址6种寻址方式。目的操作数有直接寻址、寄存器寻址、间接寻址和位寻址4种寻址方式。2.2.8寻址方式小结综上所述,MCS-51单片机的编址方式有两个突出的特点:一是内部数据存储器与内部I/O口统一编址;二是外部数据存储器与外部I/O口也是统一编址。这样对I/O口的操作就和对数据存储器的操作一样,对于内部数据存储器以直接寻址方式的一切操作,对内部I/O口同样适用。在介绍指令功能之前,先把指令中使用的一些符号的意义做简要说明,见表2-2。(见书24页)下面按指令功能分类介绍MCS-51单片机的指令。2.3指令功能介绍数据传送类指令是指令系统中使用最频繁的指令,主要用于数据的保存及交换等场合。按其操作方式又可分为数据传送、数据交换和栈操作。2.3.1数据传送类指令1.内部数据传送指令MOV指令格式MOV目的操作数,源操作数这类指令的源操作数和目的操作数都在单片机内部。可以是片内RAM地址,也可以是特殊功能寄存器SFR的地址(立即数除外)。指令功能是把源操作数指定的字节变量复制到目的操作数所指定的单元或寄存器中,源字节不变。(1)立即数传送指令指令功能是把源操作数送指定单元或寄存器,源操作数为立即数。MOVA,#data;A←dataMOVRn,#data;Rn←data,n=0~7MOV@Ri,#data;(Ri)←data,i=0,1MOVdirect,#data;direct←dataMOVDPTR,#data16;DPTR←data16(2)内部数据存储器(Rn、内部RAM、SFR)与累加器A之间传送数据。MOVA,Rn;A←(Rn),n=0~7MOVRn,A;Rn←(A)MOVA,@Ri;A←((Ri)),i=0~1MOV@Ri,A;(Ri)←(A)MOVA,direct;A←(direct)MOVdirect,A;direct←(A)(3)内部RAM中Rn、SFR与片内RAM之间的数据传送。MOVdirect,Rn;direct←(Rn)MOVRn,direct;Rn←(direct)MOVdirect,@Ri;direct←((Ri))MOV@Ri,direct;(Ri)←(direct)MOVdirect2,direct1;direct2←(direct1)例2-1设内部RAM中(30H)=40H,(40H)=10H,P1口作输入口,(P1)=0
本文标题:第2章MCS-51单片机应用教程
链接地址:https://www.777doc.com/doc-3402762 .html