




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3 3章章 MCS-51MCS-51单片机的指令系统单片机的指令系统3.1 3.1 指令概述指令概述3.2 3.2 指令格式指令格式3.3 3.3 寻址方式寻址方式3.4 3.4 指令分类指令分类 3.1 3.1 指令概述指令概述1 1 指令指令2 2 指令系统指令系统3 3 两种指令语言两种指令语言4 4 指令分类指令分类 l 按字节数按字节数l 按执行周期按执行周期l 按功能按功能3.1 3.1 指令概述指令概述l MCS-51 MCS-51的基本指令共的基本指令共111111条;条;l 按字节数分:按字节数分: (1) (1) 单字节指令,操作码和操作数同在一个字节中。单字节指令,操
2、作码和操作数同在一个字节中。 4949条;条; (2) (2) 双字节指令,一个字节为操作码,另一个字节是双字节指令,一个字节为操作码,另一个字节是操作数。操作数。4545条;条; (3) (3) 三字节指令,操作码占一个字节,操作数占二个三字节指令,操作码占一个字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。字节。其中操作数既可能是数据,也可能是地址。 1717条。条。l 按指令的执行时间来分:按指令的执行时间来分: (1) 1(1) 1个机器周期的指令个机器周期的指令6464条;条; (2) 2(2) 2个机器周期的指令个机器周期的指令4545条;条; (3) 4(3) 4个
3、机器周期的指令个机器周期的指令2 2条,条,( (乘、除两条指令乘、除两条指令) )。 MCS-51系列单片机指令系统功能强、系列单片机指令系统功能强、指令短、执行快。指令短、执行快。 从功能上可分成五大类:从功能上可分成五大类:u 1、数据传送指令;、数据传送指令;u 2、算术运算指令;、算术运算指令;u 3、逻辑操作指令;、逻辑操作指令;u 4、控制转移指令;、控制转移指令;u 5、位操作指令、位操作指令(布尔变量类指令布尔变量类指令)。标号标号: 操作码操作码 目的操作数目的操作数,源操作数源操作数 ;注释注释(1)标号标号是该指令的符号地址,由是该指令的符号地址,由18个字符组成,后面
4、须个字符组成,后面须带冒号,不可重复。它主要为转移指令提供转移的带冒号,不可重复。它主要为转移指令提供转移的目的地址目的地址。(2)操作码操作码实质是实质是00H至至FFH的二进制数,每一个二进制数就的二进制数,每一个二进制数就是一个操作码,代表一种指令或操作功能,不同的指令有不同是一个操作码,代表一种指令或操作功能,不同的指令有不同的指令助记符表达,它一般用说明其功能的英文单词的缩写形的指令助记符表达,它一般用说明其功能的英文单词的缩写形式表示。如式表示。如MOV、ADD、JMP。(3)操作数操作数用于给指令的操作提供用于给指令的操作提供数据数据、数据的地址数据的地址或或指令指令的地址的地址
5、,操作数往往用相应的寻址方式指明。,操作数往往用相应的寻址方式指明。MCS-51单片机单片机指令系统的指令按操作数的多少可分为无操作数、单操作数、指令系统的指令按操作数的多少可分为无操作数、单操作数、双操作数和三操作数四种情况。双操作数和三操作数四种情况。 (4)注释注释是对该指令的解释,是对该指令的解释,前面须带分号前面须带分号。它们是编程。它们是编程者根据需要加上去的,用于对指令进行说明,对于指令本身者根据需要加上去的,用于对指令进行说明,对于指令本身功能而言是可以不要的。功能而言是可以不要的。3.2 3.2 指令格式指令格式(1)Ri和和Rn:表示当前工作寄存器区中的工作寄存器。:表示当
6、前工作寄存器区中的工作寄存器。 i取取0或或1,表示,表示R0或或R1。n取取07,表示,表示R0R7。(2)#data和和#data16 :表示:表示8位立即数和位立即数和16位立即数。位立即数。(3) :间址寄存器前缀。:间址寄存器前缀。(4)rel:以补码形式表示的:以补码形式表示的8位相对偏移量,范围为位相对偏移量,范围为-128+127,主,主要用在相对寻址的指令中。要用在相对寻址的指令中。(5)addr16和和addr11:分别表示:分别表示16位目的地址和位目的地址和11位目的地址。位目的地址。(6)direct:表示直接寻址的地址。:表示直接寻址的地址。片内低片内低128个个R
7、AM单元地址及单元地址及SFR地地址址(可用符号名称表示可用符号名称表示)。(7)bit:表示可位寻址的直接位地址。:表示可位寻址的直接位地址。片内片内RAM位地址、位地址、SFR的位地址的位地址(可用符号名称表示);(可用符号名称表示);(8)(X):表示:表示X单元中的内容。单元中的内容。(9)(X):表示以:表示以X单元的内容为地址的存储器单元内容,即单元的内容为地址的存储器单元内容,即(X)作地作地址,该地址单元的内容用址,该地址单元的内容用(X)表示。表示。(10)/ 和和符号:符号:“/”表示对该位操作数取反,但不影响该位的原值。表示对该位操作数取反,但不影响该位的原值。“”表示操
8、作流程,将箭尾一方的内容送入箭头所指一方的单元中去。表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。 为便于后面的学习,在这里先对指令中用到的一些为便于后面的学习,在这里先对指令中用到的一些符号的约定意义作以下说明:符号的约定意义作以下说明:3.3 3.3 寻址方式寻址方式l1 1 立即寻址立即寻址l2 2 直接寻址直接寻址l3 3 寄存器寻址寄存器寻址l4 4 寄存器间接寻址寄存器间接寻址l5 5 变址寻址变址寻址l6 6 相对寻址相对寻址l7 7 位寻址位寻址返回本章首页寻址方式就是在指令中说明操作数所在地址的方法。共7种寻址方式。 在指令中直接给出操作数,出现在指令中的操在指令
9、中直接给出操作数,出现在指令中的操作数称为立即数。立即数可以作数称为立即数。立即数可以8 8位或位或1616位。在立即数位。在立即数前面必需加上前缀前面必需加上前缀“”。1.1.立即寻址立即寻址如:MOV A,50H 操作数是常数,直接出现在指令中,紧跟在操作码的后面,作为指令的一部分。与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。分析下面三条指令的执行结果:分析下面三条指令的执行结果:MOVMOVA A,#60H#60H ;A#60H A#60H MOVMOVDPTRDPTR,#3400H#3400H;DPTR#3400HDPTR#3400HMOVMOV30H
10、30H,#40H#40H ;30H30H单元单元#40H #40H 上述三条指令执行完后,累加器上述三条指令执行完后,累加器A A中数据为立即中数据为立即数据数据60H60H,DPTRDPTR寄存器中数据为寄存器中数据为3400H3400H,30H30H单元单元中数据为立即数中数据为立即数40H40H。1.1.立即寻址立即寻址 概念:操作数直接以单概念:操作数直接以单元地址的形式给出;元地址的形式给出; 寻址空间:片内寻址空间:片内RAMRAM低低128128字节字节( (以地址形式表示以地址形式表示) );SFR(SFR(以地址或以地址或SFRSFR的符号形的符号形式表示式表示) );MOV
11、 AMOV A,80H 80H 与与MOV AMOV A,P0P0是等价的。是等价的。 直接寻址是访问特殊功直接寻址是访问特殊功能寄存器的唯一方法。能寄存器的唯一方法。2.2.直接寻址直接寻址如:MOV A,50H 指数据在存储器单元中,在指令中直接提供存储器单元的地址。分析下面两条指令的执行结果:分析下面两条指令的执行结果:MOVMOVPSWPSW,#20H#20H ;PSW#20HPSW#20H,PSWPSW为直接寻址寄存器的符号地址。为直接寻址寄存器的符号地址。MOVMOVA A,30H30H ;A30HA30H内部内部RAMRAM单元中的内容,单元中的内容,30H30H为直接给出为直接
12、给出的内部的内部RAMRAM的地址。的地址。2.2.直接寻址直接寻址3. 3. 寄存器寻址寄存器寻址如:MOV A,R0 概念:操作数直接以寄存概念:操作数直接以寄存器名称的形式给出;器名称的形式给出;寻址范围:工作寄存器寻址范围:工作寄存器R0R0R7R7;累加器;累加器A A;寄存;寄存器器B B;数据指针;数据指针DPTRDPTR;位;位处理累加器处理累加器CYCY。3. 3. 寄存器寻址寄存器寻址分析下面三条指令的执行结果:分析下面三条指令的执行结果:CLR CLR A A ;A0A0INC INC DPTRDPTR ;DPTRDPTR+1DPTRDPTR+1ADDADDR5R5,#2
13、0H#20H ;R5#20H+R5R5#20H+R54.4.寄存器间接寻址寄存器间接寻址概念:概念:指数据存放在存储单元指数据存放在存储单元中,而存储单元地址存放在寄存器中,而存储单元地址存放在寄存器中,在指令中通过提供存放存储单中,在指令中通过提供存放存储单元地址的寄存器来使用对应的存储元地址的寄存器来使用对应的存储单元。单元。实质:寄存器中存放的是操作实质:寄存器中存放的是操作数的地址。以寄存器中内容为地址,数的地址。以寄存器中内容为地址,以该地址中内容为操作数的寻址方以该地址中内容为操作数的寻址方式。式。寻址范围:间接寻址的存储器寻址范围:间接寻址的存储器空间包括内部数据空间包括内部数据
14、RAM和外部数据和外部数据RAM。能用于寄存器间接寻址的寄。能用于寄存器间接寻址的寄存器有存器有R0,R1,DPTR,SP。其中。其中R0、R1必须是工作寄存器组中的寄必须是工作寄存器组中的寄存器。存器。SP仅用于堆栈操作。仅用于堆栈操作。在寄存器间接寻址中,寄存器在寄存器间接寻址中,寄存器的名称前面应加的名称前面应加“”。如:MOV A,R0 该指令的功能是将以工作该指令的功能是将以工作寄存器寄存器R0中的内容为地址的片中的内容为地址的片内内RAM单元的数据传送到累加单元的数据传送到累加器器A中去。中去。l 片内片内RAM的数据传送采用的数据传送采用“MOV”类指令,间接寻类指令,间接寻址寄
15、存器采用寄存器址寄存器采用寄存器R0或或R1(堆栈操作时采用(堆栈操作时采用SP)。)。l 片外片外RAM的数据传送采用的数据传送采用“MOVX”类指令,这时类指令,这时间接寻址寄存器有两种选择,一是采用间接寻址寄存器有两种选择,一是采用R0和和R1作间作间址寄存器,这时址寄存器,这时R0或或R1提供低提供低8位地址(外部位地址(外部RAM多于多于256字节采用页面方式访问时,可由字节采用页面方式访问时,可由P2口未使用口未使用的的I/O引脚提供高位地址);二是采用引脚提供高位地址);二是采用DPTR作为间址作为间址寄存器。寄存器。 l堆栈区:堆栈操作指令堆栈区:堆栈操作指令PUSH和和POP
16、,以,以SP作间址作间址寄存器的间接寻址方式。寄存器的间接寻址方式。MOV R0MOV R0,A A ;内部;内部RAM(R0)ARAM(R0)A其指令操作过程示意图如图所示。其指令操作过程示意图如图所示。片内RAM30HR034HA30H34HMOVX AMOVX A,R1 R1 ;AA外部外部RAM(P2R1)RAM(P2R1)其指令操作过程示意图如图所示。其指令操作过程示意图如图所示。MOVX DPTRMOVX DPTR,A A ;外部;外部RAM(DPTR)ARAM(DPTR)A其指令操作过程示意图如图所示。其指令操作过程示意图如图所示。 以以DPTR或或PC为基址寄存器,累加器为基址
17、寄存器,累加器A为变址为变址寄存器,以两者内容相加后形成的寄存器,以两者内容相加后形成的16位程序存储器位程序存储器地址作为操作数地址。地址作为操作数地址。 又称基址寄存器变址寄存器间接寻址。又称基址寄存器变址寄存器间接寻址。5. 5. 变址寻址变址寻址如:MOVC A,A+DPTR (1) 变址寻址只能对程序存储器中数据进行变址寻址只能对程序存储器中数据进行操作。寻址范围可达到操作。寻址范围可达到64KB。由于程序存储器。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用在指令符号上采用MOVC的形式。的形式。 (2) 本寻
18、址方式的指令只有本寻址方式的指令只有3条:条:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR (3) 变址寻址方式用于查表操作。变址寻址方式用于查表操作。5. 5. 变址寻址变址寻址5. 5. 变址寻址变址寻址 MOVC A,A+DPTR A:02H,DPTR:0300H执行结果:程序存储器执行结果:程序存储器0302H单元的内容传送给单元的内容传送给A。 相对寻址是以程序计数器相对寻址是以程序计数器PC的当前值为基准,加上指令的当前值为基准,加上指令中给出的相对偏移量中给出的相对偏移量 rel 形成目标地址形成目标地址的寻址方式的寻址方式 。 目的地址目的地址= 转移指
19、令所在的地址转移指令所在的地址 + 转移指令的字节数转移指令的字节数+ rel =当前当前PC+rel , rel 是一个带符号的是一个带符号的8位二进制数,取值范位二进制数,取值范围是围是128127,以补码形式置于操作码之后存放。当为,以补码形式置于操作码之后存放。当为负值时,向前转移,当为正数时向后转移。负值时,向前转移,当为正数时向后转移。6. 6. 相对寻址相对寻址如:JC 75H SJMP 54H 假设原假设原 PC=2000H,机器码,机器码80H 54H存放在存放在2000H处处 则转移到的地址:则转移到的地址:PC2000H+02H+54H=2056H6. 6. 相对寻址相对
20、寻址相对寻址示意图 位寻址其实是一种直接寻址方式,不过其地址是位寻址其实是一种直接寻址方式,不过其地址是位地址。指令中给出的是操作数位地址。指令中给出的是操作数(8位二进制数中的位二进制数中的某一位某一位)的位地址。的位地址。 寻址空间寻址空间为:片内为:片内RAM的的20H2FH单元中的单元中的128可寻址位;可寻址位;SFR的可寻址位。的可寻址位。 习惯上,位有两种表示方法,例如,习惯上,位有两种表示方法,例如,40H或者或者(28H).0。 如:如: CLR ACC.0 MOV 30H,C7. 7. 位寻址位寻址 在在MCS-51系统中,位地址的表示可以用以下几系统中,位地址的表示可以用
21、以下几种方式:种方式:1直接使用位地址直接使用位地址(00H07FH+83位)。位)。例如:例如:PSW的位的位6可表示为可表示为0D6H(位地址)。(位地址)。2字节地址带位号字节地址带位号。例如:例如:PSW的位的位6可表示为可表示为0D0H.6; 20H.3表示表示20H单元的单元的3位。位。3特殊功能寄存器名带位号特殊功能寄存器名带位号。例如:例如: PSW的位的位6可表示为可表示为PSW.6 ; P0.1表示表示P0口的口的1位。位。4位符号地址位符号地址。例如:例如: PSW的位的位6可表示为可表示为AC; TR0是定时是定时/计数器计数器T0的启动位。的启动位。例:例: MOV
22、CMOV C,40H40H;CYCY( (位地址位地址40H)40H) 设指令执行前设指令执行前 CY=1CY=1,位地址,位地址40H40H存储器单元存储器单元 如图,执行指令后,如图,执行指令后,CY= CY= ?29H 0110001028H 11010110位寻址区位寻址区 0寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址R0-R7ABDPTR寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址R0R1DPTR寄存器寻址直接寻址立
23、即数寻址寄存器间接寻址变址寻址相对寻址位寻址ADPTRPC寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址10 0 0 0 0 0 0 07F7F77776F6F67675F5F57574F4F474737372F2F27271F1F17170F0F0707 7E7E76766E6E66665E5E56564E4E4646 36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D454535352D2D25251D1D15150D0D05057C7C74746
24、C6C64645C5C54544C4C4444 34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B4343 33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A4242 32322A2A22221A1A12120A0A020279797171696961615959515149494141 313129292121191911110909010178787070686860605858505048484040 3030282820201818101008080000 例:
25、3D3D 3C3C 3B3B3F3F 3E3E3A3A 3939383827H27H寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址0 0 0 0 0 0 01 0序号序号寻址方式寻址方式寻址存储器空间寻址存储器空间1寄存器寻址寄存器寻址R0R7(Rn)A,B,C,DPTR2直接寻址直接寻址内部内部RAM(低(低128B)特殊功能寄存器特殊功能寄存器(SFR)3寄存器间接寄存器间接寻寻 址址内部内部RAM(R0,R1(Ri),SP)外部外部RAM(R0,R1,DPTR)4立即数寻址立即数寻址程序存储器程序存储器ROM中的常数中的常数(#data)5变址寻址变址寻址程序存储器程序
26、存储器(A+PC,A+DPTR)6相对寻址相对寻址ROM256B范围范围(基址基址PC+偏移偏移)7位寻址位寻址内部内部RAM的的20H2FH,16B(0127)可位寻址的可位寻址的SFR(21个)个)(128255)8051寻址方式寻址方式(7种寻址方式及寻址空间)3.4 3.4 分类指令分类指令l1 1 数据传送指令,数据传送指令,2828条条l2 2 算术运算指令,算术运算指令,2424条条l3 3 逻辑运算指令,逻辑运算指令,2525条条l4 4 控制转移指令,控制转移指令,1717条条l5 5 位位( (布尔布尔) )操作指令,操作指令,1717条条返回本章首页MCS-51单片机共有
27、111条指令,按其功能可分为5大类一、数据传送类指令一、数据传送类指令u 数据传送操作是单片机最基本、最重要的操作;数据传送操作是单片机最基本、最重要的操作;u数据传送是否灵活、快速,对程序的执行效率产数据传送是否灵活、快速,对程序的执行效率产生重大影响;生重大影响;u数据传送可以在累加器数据传送可以在累加器A、工作寄存器、工作寄存器Rn,内部,内部数据存储器、外部数据存储器之间进行;数据存储器、外部数据存储器之间进行;u常用的指令助记符常用的指令助记符8种:种:MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。u实质是复制,不是剪切。实质是复制,不是剪切。直接地址di
28、rect累加器A直接地址direct间接地址Ri寄存器Rn立即数#data寄存器DPTRMCS-51单片机片内数据传送图 MOV A,Rn MOV A,Rn ;(Rn)(A) ,n=0;(Rn)(A) ,n=07 7 MOV A,Ri MOV A,Ri ;(Ri)(A),i=0;(Ri)(A),i=0、1 1 MOV A,direct MOV A,direct ;(direct)(A);(direct)(A) MOV A,#data MOV A,#data ; data(A); data(A) 这组指令的功能是这组指令的功能是把源操作数的内容送入累加器把源操作数的内容送入累加器A A。源源操作
29、数操作数的寻址方式分别为直接寻址、寄存器间接寻址、的寻址方式分别为直接寻址、寄存器间接寻址、寄存器寻址和立即寻址四种基本寻址方式。寄存器寻址和立即寻址四种基本寻址方式。1、 以以累加器累加器A A为目的操作数为目的操作数 的传送指令的传送指令(4 4条条)MOV A,R6 MOV A,70H MOV A,R0 MOV A,#78H例:若(例:若(R1)= 20H,(,(20H)= 55H,执行指令执行指令 MOV A,R1 (A)= 55H MOV Rn,A MOV Rn,A ;(A)(Rn),n=0;(A)(Rn),n=07 7 MOV Rn,direct MOV Rn,direct;(di
30、rect)(Rn),n=0;(direct)(Rn),n=07 7 MOV Rn,#data MOV Rn,#data ;data(Rn),n=0;data(Rn),n=07 7 这组指令的功能是把源字节送入寄存器这组指令的功能是把源字节送入寄存器Rn中。源字节中。源字节的寻址方式分别为立即寻址、直接寻址和寄存器寻址(的寻址方式分别为立即寻址、直接寻址和寄存器寻址(由于由于目的字节为工作寄存器,所以源字节不能是工作寄存器及其目的字节为工作寄存器,所以源字节不能是工作寄存器及其间址方式寻址间址方式寻址)。)。2、 以以工作寄存器工作寄存器RnRn为目的操作数的为目的操作数的 传送指令传送指令(3
31、 3条条)例:若(例:若(50H)= 40H,执行指令执行指令 MOV R6,50H 后,后, (R6)= 40H。3、以、以直接地址直接地址为目的字节的传送指令为目的字节的传送指令(5 5条条) MOV direct,A MOV direct,A ;(A);(A)(directdirect) MOV direct,Rn MOV direct,Rn ;(Rn);(Rn)(directdirect),n=0,n=07 7 MOV direct,Ri MOV direct,Ri ;(Ri);(Ri)(directdirect),i=0,i=0、1 1 MOV direct1,direct2 MOV
32、 direct1,direct2;(direct2);(direct2)(direct1direct1) MOV direct,#dataMOV direct,#data;data;data(directdirect) 这组指令的功能是把源字节送入这组指令的功能是把源字节送入direct中。源字节的寻中。源字节的寻址方式分别为立即寻址、直接寻址、寄存器间接寻址和寄址方式分别为立即寻址、直接寻址、寄存器间接寻址和寄存器寻址。存器寻址。 例:若(例:若(R1)=50H,(50H)=18H,执行指令执行指令MOV 40H,R1 后后, (40H)=18H。 4、以、以寄存器间址寄存器间址为目的字节的
33、为目的字节的 传送指令传送指令(3 3条条) MOV Ri,A MOV Ri,A ;(A)(Ri),i=0;(A)(Ri),i=0、1 1 MOV Ri,direct MOV Ri,direct ;(direct)(Ri),i=0;(direct)(Ri),i=0、1 1 MOV Ri,#data MOV Ri,#data ;data(Ri),i=0;data(Ri),i=0、1 1 这组指令的功能是把源字节送入这组指令的功能是把源字节送入Ri内容为地址的单内容为地址的单元,源字节寻址方式为立即寻址、直接寻址和寄存器寻元,源字节寻址方式为立即寻址、直接寻址和寄存器寻址(因目的字节采用寄存器间接
34、寻址,故源字节不能是址(因目的字节采用寄存器间接寻址,故源字节不能是寄存器及其间址寻址)。寄存器及其间址寻址)。 例:若(例:若(R1)=30H,(,(A)=20H,执行指令执行指令 MOV R1,A 后,后, (30H)=20H。5、16位数据传送指令位数据传送指令MOV DPTR,#data16 MOV DPTR,#data16 ;data16(DPTR);data16(DPTR)【例例】MOV DPTR,#1234H MOV DPTR,#1234H ;DPTR=1234H;DPTR=1234H该指令也可以用两条该指令也可以用两条8 8位数据传送指令实现:位数据传送指令实现:MOV DPH
35、,#12H MOV DPH,#12H ;DPH=12H;DPH=12HMOV DPL,#34H MOV DPL,#34H ;DPL=34H,DPTR=1234H;DPL=34H,DPTR=1234H例:例:lMOV A,#30HlMOV 4FH,AlMOV R0,#20HlMOV R0,4FlMOV 21H,20H练习题:练习题:用两种寻址方式实现,将片内用两种寻址方式实现,将片内RAMRAM 60H 60H单元的数据传送给累加器单元的数据传送给累加器A A。解:解: MOV A,#60H()MOV R0,#60H() MOV A,R0;A=30H;(4FH)=30H;R0=20H;(20H)
36、=30H;(21H)=30HMOV R0,60H MOV A,R0 () 解:解: MOV A,60H () 结果结果A=32Hl顺序执行下列指令序列,求每一步执行结果。地址内容32H58H60H32H 说说 明:明: 只有指令表中的指令才有对应指令代码,计算机只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。才能执行。编程时,不能随意创造发明指令。1、一条指令中不能同时出现两个工作寄存器。一条指令中不能同时出现两个工作寄存器。非法非法指令:指令:MOV R1MOV R1,R2R2MOV R2MOV R2,R0R02、间址寄存器只能使用间址寄存器只能使用 R0R
37、0、R1R1。 非法非法指令:指令: MOV AMOV A,R2R23、 SFRSFR区只能区只能直接寻址直接寻址,不能用寄存器间接寻址。,不能用寄存器间接寻址。非法非法指令:指令: MOV R0MOV R0,#80H#80H MOV A MOV A,R0R04、指令表(、指令表(P287):关注表中):关注表中指令字节数指令字节数和和机器周期数机器周期数PUSH direct PUSH direct ;SP+1SP;SP+1SP,(direct)(SP)(direct)(SP) POP direct POP direct ;(SP)(direct);(SP)(direct),SP-1SPSP
38、-1SP“先加后压先加后压” “先弹后减先弹后减”6、堆栈操作指令、堆栈操作指令(2条条) 所谓堆栈是在片内所谓堆栈是在片内RAM中按中按“先进后出,后进先出先进后出,后进先出”原则设置的专用存储区。在原则设置的专用存储区。在MSC-51中,堆栈的生长方向是中,堆栈的生长方向是向上的(地址增大)。数据的进栈出栈由指针向上的(地址增大)。数据的进栈出栈由指针SP统一管理。统一管理。系统复位时,系统复位时,SP的内容为的内容为07H。通常用户应在系统初始化。通常用户应在系统初始化时对时对SP重新设置。重新设置。SP的值越小,堆栈的深度越深。堆栈的的值越小,堆栈的深度越深。堆栈的操作有如下两条专用指
39、令:操作有如下两条专用指令: PUSHPUSH为入栈指令为入栈指令例例PUSH 30HPUSH 30H;(;(30H30H)=2BH=2BH,具体操作是:具体操作是: POPPOP为出栈指令为出栈指令例例 POP 40H POP 40H ;(40H)=4CH(40H)=4CH,具体操作是:具体操作是:练习:练习: 说明程序执行过程中,说明程序执行过程中,SP的内容及堆栈中内容的内容及堆栈中内容的改变过程。的改变过程。 程序如下:程序如下: MOV SP,#30H MOV A,#20H MOV B,#30H PUSH A PUSH B POP A POP B7、字节交换指令(、字节交换指令(3条
40、)条) XCH A,Rn XCH A,Rn ; (A)(Rn); (A)(Rn),n=0n=07 7 XCH A,Ri XCH A,Ri ; (A)(Ri); (A)(Ri),i=0i=0、1 1 XCH A,direct XCH A,direct ; (A)(direct); (A)(direct)例:设(例:设(R0)30H,(,(A)3FH,片内,片内(30H)BBH。 执行指令执行指令 XCH A,R0 执行结果执行结果 (A)=BBH,(,(30H)3FH。8、半字节交换指令、半字节交换指令XCHD A,Ri XCHD A,Ri ; (A)3; (A)30(Ri)30(Ri)30 0
41、 高高4 4位不变。位不变。i=0i=0、1 1 XCHD指令指令的功能是间址操作数的低半字节的功能是间址操作数的低半字节与与A的低半字节内容互换。的低半字节内容互换。例:若(例:若(R0)30H,(,(30H)67H, (A)20H。执行指令。执行指令 XCHD A,R0 指令后,指令后,(A)27H,(,(30H)60H。 9、累加器高低四位互换指令、累加器高低四位互换指令SWAP A SWAP A ; A; A7 74 4AA3 30 0若(若(A)30H,执行指令,执行指令SWAP A后,(后,(A)03H。10、片外数据存储器传送指令、片外数据存储器传送指令MOVX 在在MCS-51
42、系统中只能通过累加器系统中只能通过累加器A与片外数据存储器进行数与片外数据存储器进行数据传送,访问时,只能通过据传送,访问时,只能通过Ri和和DPTR以间接寻址方式进行。以间接寻址方式进行。MOVX指令共有四条:指令共有四条:DPTR作作16位数据指针,寻址位数据指针,寻址64KB片外片外RAM空间:空间: MOVX A,DPTR;A(DPTR) (读)(读)MOVX DPTR,A;(;(DPTR)A (写)(写) Ri作作8位数据指针,寻址位数据指针,寻址256B片外片外RAM空间:空间: MOVX A,Ri;A(P2Ri) (读)(读)MOVX Ri,A ;(P2Ri)A (写)(写) 其
43、中前两条指令通过其中前两条指令通过DPTR间接寻址,可以对整个间接寻址,可以对整个64KB片外片外数据存储器访问。后两条指令通过数据存储器访问。后两条指令通过Ri间接寻址,只能对片外数间接寻址,只能对片外数据存储器的低端的据存储器的低端的256字节访问,访问时将低字节访问,访问时将低8位地址放于位地址放于Ri中。中。例:实现片外数据存储器数据传送(例:实现片外数据存储器数据传送(2000H) (2100H)。MOV DPTRMOV DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX D
44、PTR,A A;DPTR=2000HDPTR=2000H;A=XA=X;DPTR=2100HDPTR=2100H;(2100H)=X(2100H)=X习题:习题:将片外将片外RAM 0000HRAM 0000H单元的数据传送到片内单元的数据传送到片内RAMRAM的的60H60H单元单元。片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。下列为下列为非法非法指令:指令: MOVX AMOVX A,2000H 2000H MOVX 2100H MOVX 2100H,2000H2000H思考题:思考题:为什么对为什么对DPTRDPTR的数据传送使用内部传送指令?的数据传送使用内部传送指令? 读
45、片外读片外RAM的硬件响应的硬件响应 MOVX A,DPTR ;(A)(DPTR) MOVX A,Ri ;(A)(Ri) 第一条指令执行时,在第一条指令执行时,在DPH中的高中的高8位地址由位地址由P2口输出,在口输出,在DPL中的低中的低8位地址由位地址由P0口分时输出,并由口分时输出,并由ALE信号锁存在地址信号锁存在地址锁存器中。第二条指令执行时,低锁存器中。第二条指令执行时,低8位地址在位地址在R0或或R1中由中由P0口分口分时输出,时输出,ALE信号将地址信息锁存在地址锁存器中(多于信号将地址信息锁存在地址锁存器中(多于256字节字节的访问,高位地址由的访问,高位地址由P2口提供)。
46、口提供)。 读片外读片外RAM的的MOVX操作,使操作,使P3.7引脚输出的信号选通片外引脚输出的信号选通片外RAM单元,相应单元的数据从单元,相应单元的数据从P0口读入累加器中。口读入累加器中。 写片外写片外RAM的硬件响应的硬件响应 第一条指令执行时,在第一条指令执行时,在DPH中高中高8位地址由位地址由P2口输出,口输出,在在DPL中的低中的低8位地址,由位地址,由P0口分时输出,并由口分时输出,并由ALE信号锁信号锁存在地址锁存器中。第二条指令执行时,低存在地址锁存器中。第二条指令执行时,低8位地址在位地址在R0或或R1中由中由P0口分时输出,口分时输出,ALE信号将地址信息锁存在地址
47、锁信号将地址信息锁存在地址锁存器中(多于存器中(多于256字节的访问,高位地址由字节的访问,高位地址由P2口提供)。口提供)。 写片外写片外RAM的的“MOVX”操作,使操作,使P3.6引脚的信号有效,引脚的信号有效,累加器累加器A的内容从的内容从P0口输出并写入选通的相应片外口输出并写入选通的相应片外RAM单元。单元。注:当片外扩展的注:当片外扩展的I/O端口映射为片外端口映射为片外RAM地址时,也要利地址时,也要利用这用这4条指令进行数据的输入输出。条指令进行数据的输入输出。 MOVX DPTR,A ;(DPTR)(A)MOVX Ri,A ;(Ri)(A) 11、程序存储器传送指令、程序存
48、储器传送指令MOVC 程序存储器传送指令只有两条,一条用程序存储器传送指令只有两条,一条用DPTR基址基址变址寻址。一条用变址寻址。一条用PC基址变址寻址。这两条指令通常基址变址寻址。这两条指令通常用于访问表格数据,因此以称为用于访问表格数据,因此以称为查表指令查表指令。只读。只读。 DPTRDPTR为基址寄存器为基址寄存器: : MOVC MOVC A A,A+DPTR A+DPTR ;A A(A+DPTRA+DPTR) (读)(读) 查表范围为查表范围为 64KB64KB 程序存储器任意空间,程序存储器任意空间, 称为称为远程远程查表指令。查表指令。 PCPC为基址寄存器为基址寄存器: :
49、 MOVCMOVC A A,A+PCA+PC ;A A(A+PCA+PC) (读)(读) 常数表只能在查表指令后常数表只能在查表指令后256B256B范围内,称为范围内,称为近程近程查表指令。查表指令。例如:查表指令例如:查表指令MOVC A,A+PC所在的地址为所在的地址为2000H,表格的起始,表格的起始单元地址为单元地址为2035H,表格的第,表格的第4个元素(位移量为个元素(位移量为03H)的内容为)的内容为45H,则,则查表指令的处理过程如下:查表指令的处理过程如下:MOV A,#03H;表格元素相对于表首的位移量送累加器;表格元素相对于表首的位移量送累加器AADD A,#34H;当
50、前程序计数器;当前程序计数器PC相对于表首的差值加到累加器相对于表首的差值加到累加器A中中MOVC A,A+PC;查表,查得第;查表,查得第4个元素内容个元素内容45H送累加器送累加器A 注意:查表指令的长度为注意:查表指令的长度为1个字节,当前程序计数器个字节,当前程序计数器PC的值应为的值应为查表指令的地址加查表指令的地址加1。地 址内 容2000HMOVC2001H2035H表格2036H2037H45HPCPClDPTR内容为基址内容为基址 MOVC A,A+DPTR ;(A) (A)+(DPTR)该指令首先执行该指令首先执行16位无符号数加法,将获得的基址与变址之位无符号数加法,将获
51、得的基址与变址之和作为和作为16位的程序存储器地址,然后将该地址单元的内容传送到位的程序存储器地址,然后将该地址单元的内容传送到累加器累加器A。指令执行后。指令执行后DPTR的内容不变。的内容不变。lPC内容为基址内容为基址MOVC A,A+PC ;(A)(A)+(PC)取出该单字节指令后取出该单字节指令后PC的内容增的内容增1,以增,以增1后的当前值去执行后的当前值去执行16位无符号数加法,将获得的基址与变址之和作为位无符号数加法,将获得的基址与变址之和作为16位的程序位的程序存储器地址。然后将该地址单元的内容传送到累加器存储器地址。然后将该地址单元的内容传送到累加器A。指令执。指令执行后行
52、后PC的内容不变。的内容不变。MOV , MOV A,#20H MOV DPTR,#data16 MOVX , 合法指令合法指令or非法指令?非法指令?lMOV R5,R2lMOV R2,#60HlMOV R2,#60HlMOV R7,R1lMOV A,R1lMOV R0,AcclMOV SBUF,R1lMOV R0,60HlMOV 60H,R0lMOV DPTR,#1234HlMOV DPTR,#30HlMOVX DPTR,AlMOVX R0,PSWlMOVX R0,AlMOVX R0,AcclMOVC A,R0lMOVC A,DPTRlMOVC A,A+PC合法指令合法指令or非法指令?非
53、法指令?lPUSH BlPOP R1lPOP AlSWAP AcclSWAP AlPUSH AcclSWAP R0 lXCH 30H,AlXCH A,30HlXCH A,#30HlXCH A,R1lXCH A,R1lXCHD A,R1lXCHD A,R1lXCHD A,30H【例例3-1】写出完成下列功能的程序段。写出完成下列功能的程序段。(1)将)将R0的内容送的内容送R6中程序为:中程序为:MOV A,R0MOV R6,A(2)将片内)将片内RAM 30H单元的内容送片外单元的内容送片外60H单元中程序为:单元中程序为:MOV A,30HMOV R0,#60HMOVX R0,A(3)将片处
54、)将片处RAM 1000H单元的内容送片内单元的内容送片内20H单元中程序为:单元中程序为:MOV DPTR,#1000HMOV A,DPTRMOV 20H,A(4)将)将ROM 2000H单元的内容送片内单元的内容送片内RAM的的30H单元中程序为:单元中程序为:MOV A,#0MOV DPTR,#2000HMOVC A,A+DPTRMOV 30H,A习题:找出指令错误并改正:习题:找出指令错误并改正:l1MOV A,#1000H ;A1000H(A装1个字节数)l2MOVX A,1000H ;A(1000H)片外RAM(DPTR、Ri)l3MOVC A,1000H ;A(1000H)片外R
55、OM(DPTR、PC)l4MOVX 60H,A ;片外RAM(60H)A(应为MOV)l5MOV R0,60H ;片内RAM:(61H)(60H) l MOV 61H,R0 (片内RAM可直接寻址) l6. XCH R1,R2 ;R1 R2(必须有A参加)l7. MOVX DPTR,#2000H ;DPTR2000H(应为MOV)l8. MOVX 60H,DPTR ;片内RAM片外RAMl (必须有A参加) ADD A,Rn ADD A,Rn ;(A)+(Rn)(A)(n=0;(A)+(Rn)(A)(n=07)7) ADD A,Ri ADD A,Ri ;(A)+(Ri)(A)(i=0;(A)+
56、(Ri)(A)(i=0、1)1) ADD A,direct ADD A,direct ;(A)+(direct)(A);(A)+(direct)(A) ADD A,#data ADD A,#data ;(A)+data(A);(A)+data(A)二、算术运算类指令二、算术运算类指令1、不带进位的加法指令不带进位的加法指令(4条条) 累加器累加器A A中的运算结果对各个标志位的影响:中的运算结果对各个标志位的影响:(1 1)如果位)如果位7 7有进位,则置有进位,则置“1”1”进位标志进位标志CyCy,否则,否则清清“0”Cy0”Cy(2 2)如果位)如果位3 3有进位,置有进位,置“1”1”
57、辅助进位标志辅助进位标志AcAc,否,否则清则清“0”Ac0”Ac(AcAc为为PSWPSW寄存器中的一位)寄存器中的一位)(3 3)如果位)如果位6 6有进位,而位有进位,而位7 7没有进位,或者位没有进位,或者位7 7有进有进位,而位位,而位6 6没有,则溢出标志位没有,则溢出标志位OVOV置置“1”1”,否则清,否则清“0”OV0”OV。 例例 (A)=53H(A)=53H,(R0)=FCH(R0)=FCH,执行指令,执行指令 ADD A,R0ADD A,R0结果为结果为: (A)=4FH: (A)=4FH,Cy=1Cy=1,Ac=0Ac=0,OV=0OV=0,P=1P=1例例 (A)=
58、 85H,(R0)=20H,(A)= 85H,(R0)=20H,(20H20H)=AFH=AFH,执行指令:,执行指令: ADD A,R0ADD A,R0 结果为结果为: :(A A)=34H=34H,Cy=1Cy=1,Ac=1Ac=1,OV=1OV=1,P=1P=1 ADDC A,Rn ; ADDC A,Rn ; ( (A)+(Rn)+(Cy)(A)A)+(Rn)+(Cy)(A) ADDC A,Ri ; ADDC A,Ri ; ( (A)+(Ri)+(Cy)(AA)+(Ri)+(Cy)(A ADDC A,direct ; ADDC A,direct ; ( (A)+(direct)+(Cy)
59、(A)A)+(direct)+(Cy)(A) ADDC A,#data ; ADDC A,#data ; ( (A)+data+(Cy)(A)A)+data+(Cy)(A)2、带进位的加法指令带进位的加法指令(4条条)CyCy为来自为来自PSWPSW状态寄存器中的进位位状态寄存器中的进位位CyCy。例:(例:(A A)=85H,=85H,(20H20H)=FFH, Cy=1=FFH, Cy=1,执行指令:,执行指令: ADDC A,20HADDC A,20H结果为结果为: :(A A)=85H=85H,Cy=1Cy=1,Ac=1Ac=1,OV=0OV=0,P=1P=1【例例3-4】试把存放在试
60、把存放在R1R2和和R3R4中的两个中的两个16位数相加,结果存于位数相加,结果存于R5R6中。中。 处理时,处理时,R2和和R4用一般的加法指令用一般的加法指令ADD,结,结果放于果放于R6中,中,R1和和R3用带进位的加法指令用带进位的加法指令ADDC,结果放于结果放于R5中,程序如下:中,程序如下:MOV A,R2ADD A,R4MOV R6,AMOV A,R1ADDC A,R3MOV R5,AR1 R2R3 R4R5 R6C+ADDADDCC INC A INC A ;(A)+1(A);(A)+1(A) INC Rn INC Rn ;(Rn)+1(Rn),n=0;(Rn)+1(Rn),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 橱柜购销与安装工程合同
- 招聘服务合同
- 内部施工合同协议
- 城市规划咨询顾问合同
- 家装使用装修合同
- 工业自动化设备采购及安装服务合同
- 电子商务平台运营合作合同
- Unit 2More than fun Presenting ideas教学设计2024-2025学年外研版英语七年级上册
- 江海职业技术学院《现代文学与新女性》2023-2024学年第二学期期末试卷
- 兴义民族师范学院《摄影测量学实验》2023-2024学年第二学期期末试卷
- 《医院应急培训》课件
- 提高教育教学质量深化教学改革措施
- 招标代理机构遴选投标方案(技术标)
- 证件使用协议书(2篇)
- 三级安全教育试题(公司级、部门级、班组级)
- 贫血医学教学课件
- 肺栓塞患者护理查房课件
- 委托书之工程结算审计委托合同
- 《如何有效组织幼儿开展体能大循环活动》课件
- (完整版)重力式挡土墙专项方案
- 花城版四年级音乐下册全册教案
评论
0/150
提交评论