MCS51单片机指令系统及编程举例.ppt
《MCS51单片机指令系统及编程举例.ppt》由会员分享,可在线阅读,更多相关《MCS51单片机指令系统及编程举例.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 对于任何一台计算机,必须有软件(程序)对于任何一台计算机,必须有软件(程序)的支持,才能工作。计算机所进行的全部的支持,才能工作。计算机所进行的全部操作都是执行程序的结果,而程序是计算操作都是执行程序的结果,而程序是计算机所能识别的命令的集合。机所能识别的命令的集合。 指令系统是一种指令系统是一种CPUCPU所能直接执行的所有所能直接执行的所有命令的集合,命令的集合,CPUCPU的主要功能是由它的指令的主要功能是由它的指令系统来体现的。任何计算机语言编写的任系统来体现的。任何计算机语言编写的任何程序,都必须转换为指令系统中相应指何程序,都必须转换为指令系统中相应指令代码的有序集合,令代码的有
2、序集合,CPUCPU才能执行才能执行 。介绍介绍MCS-51MCS-51汇编语言的指令系统。汇编语言的指令系统。3.1 3.1 指令系统概述指令系统概述 MCS-51MCS-51的基本指令共的基本指令共111111条条,按指令在程序存储器所占,按指令在程序存储器所占的字节来分,其中:的字节来分,其中: (1) (1) 单字节指令单字节指令4949条;条; (2) (2) 双字节指令双字节指令4545条;条; (3) (3) 三字节指令三字节指令1717条。条。按指令的执行时间来分,其中:按指令的执行时间来分,其中:(1) 1(1) 1个机器周期(个机器周期(1212个时钟振荡周期)的指令个时钟
3、振荡周期)的指令6464条;条;(2) 2(2) 2个机器周期(个机器周期(2424个时钟振荡周期)的指令个时钟振荡周期)的指令4545条;条; (3) 只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。 在12MHz晶振的条件下,每个机器周期为1s。有一个位变量的指令子集,在进行位变量处理的程序设计时十分有效、方便。 MCS-51MCS-51指令系统的功能十分强大,它把体指令系统的功能十分强大,它把体现单片机的各种功能的寄存器组织在统一现单片机的各种功能的寄存器组织在统一的地址空间中,的地址空间中,MCS-51MCS-51指令系统在其存储指令系统在其存储空间、时间的利用率及工
4、作效率方面都是空间、时间的利用率及工作效率方面都是较高的。较高的。2.指令格式两部分组成,即操作码和操作数。 操作码用来规定指令进行什么操作。操作数则是指令操作的对象。有单字节指令、双字节指令、三字节不同长度的指令,指令长度不同,格式也就不同。(1)单字节指令:指令只有一个字节,操作码和操 作数同在一个字节中。(2)双字节指令:一个字节为操作码,另一个字节 是操作数。(3)三字节指令:操作码占一个字节,操作数占二 个字节。其中操作数既可能是数据,也可能是 地址。2.2.指令格式指令格式 MCS-51MCS-51指令系统中的每一条指令都有两级指令系统中的每一条指令都有两级指令格式:指令格式: C
5、PUCPU可直接识别并执行的机器语言指令。可直接识别并执行的机器语言指令。 汇编语言指令(简称汇编指令)。汇编语言指令(简称汇编指令)。 MCS-51MCS-51汇编语言指令格式,由以下几个部汇编语言指令格式,由以下几个部分组成:分组成: 标号标号: : 操作码操作码 目的操作数目的操作数 , ,源操作数源操作数 ;注释;注释 3.2 3.2 寻址方式寻址方式所谓寻址方式就是寻找或获得操作数的方式。所谓寻址方式就是寻找或获得操作数的方式。 指令的一个重要组成部分是操作数。由寻址方式指令的一个重要组成部分是操作数。由寻址方式指定参与运算的操作数或操作数所在单元的地址。指定参与运算的操作数或操作数
6、所在单元的地址。MCS-51MCS-51指令系统的寻址方式有以下指令系统的寻址方式有以下7 7种:种:1.1.立即寻址立即寻址2.2.直接寻址直接寻址3.3.寄存器寻址寄存器寻址4.4.寄存器间接寻址寄存器间接寻址5.5.变址寻址变址寻址6.6.相对寻址相对寻址7.7.位寻址位寻址1.立即寻址方式 操作数在指令中直接给出,需在操作数前面加前缀标志“#”。操作数可以是8位或16位数。例如: MOV A,#40H ;(A)=40H MOV DPTR, #2000H; (DPH)=20H,(DPL)=00H2直接寻址方式 操作数直接以单元地址的形式给出 MOV A,40H ; (A)=(40H) 寻
7、址范围: (1) 内部RAM的128个单元(2) 特殊功能寄存器。除了以单元地址的形式外,还可以用寄存器符号的形式给出。例如: MOV A,80H 与 MOV A,P0是等价的。 直接寻址方式是访问特殊功能寄存器的唯一 寻址方式。3.寄存器寻址方式 操作数在寄存器中 MOV A,Rn ;(Rn)A,n=07 表示把寄存器Rn的内容传送给累加器A 寻址范围包括:(1)4组通用工作寄存区共32个工作寄存器(2)部分特殊功能寄存器,例如A、B 以及数据指针 寄存器DPTR等。4、寄存器间接寻址方式 寄存器中存放的是操作数的地址, 在寄存器的名称前面加前缀标志“” 访问内部RAM或外部数据存储器的低2
8、56个字节时,只能采用R0或R1作为间址寄存器。例如: MOV A,Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM中40H单元的内容送到A。寻址范围:(1)访问内部RAM低128个单元,其通用形式为Ri(2)对片外数据存储器的64K字节的间接寻址,例 如: MOVX A,DPTR(3)片外数据存储器的低256字节 例如:MOVX A,Ri(4)堆栈区 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器5、变址寻址(基址寄存器加变址寄存器间接寻址) 本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。两者内容相加形成16位的操作数地址,主要用
9、于访问固化在程序存储器中的某个字节。例如:指令 MOVC A,A+DPTR 其中A的原有内容为05H,DPTR的内容为0400H,该指令执行的结果是把程序存储器0405H单元的内容传送给A。说明: (1)本寻址方式是专门针对程序存储器的寻址方 式,寻址范围可达到64KB。(2)本寻址方式的指令只有3条:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR6、相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一个带符号的8位
10、二进制数补码数 范围是:128 +127 向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。7、位寻址方式 MCS-51有位处理功能,可以对数据位进行操作,例如: MOV C,40H;是把位40H的值送到进位位C。寻址范围包括:(1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位。它们是等价的。(2)特殊功能寄存器中的可寻址位 在指令中有如下4种的表示方法:a.直接使用位地址。例如PSW.5的位地址为0D5H。b.位名称的表示方法。例如PSW.
11、5是F0标志位,可使用F0表示该位。c.单元地址加位数的表示方法。例如 :(0D0H).5。d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。 操作数的寻址方式和寻址空间操作数的寻址方式和寻址空间寻址方式寻址方式寻址空间寻址空间立即寻址立即寻址程序存储器程序存储器寄存器寻址寄存器寻址工作寄存器工作寄存器R0-R7,A,B,CY,DPTR,ABR0-R7,A,B,CY,DPTR,AB直接寻址直接寻址片内片内RAM低低128字节、专用寄存器字节、专用寄存器寄存器间接寻址寄存器间接寻址片内片内RAM低低128字节(字节(R0,R1,SP)片外片外RAM (R0,R1,DPTR)变址寻址变址寻
12、址程序存储器(程序存储器( A+PC、 A+DPTR)相对寻址相对寻址程序存储器程序存储器256字节范围(字节范围( PC偏移量)偏移量)位寻址位寻址片内片内RAM寻址区寻址区(20H-2FH)和和可寻址的可寻址的SFR3.3 3.3 指令系统指令系统111条指令,按功能分类,可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条) (4)控制转移类(17条) (5)位操作类(17条)指令的一些符号的意义指令的一些符号的意义: :Rn Rn 当前寄存器区的当前寄存器区的8 8个工作寄存器个工作寄存器R0R0R7(n=0R7(n=07)7)。Ri Ri
13、 当前选中的寄存器区中可作间接寻址寄存器的当前选中的寄存器区中可作间接寻址寄存器的2 2个个 寄存器寄存器 R0R0、R1(i=0,1)R1(i=0,1)。Direct Direct 直接地址,即直接地址,即8 8位的内部数据存储器单元或特位的内部数据存储器单元或特 殊功能寄存器的地址。殊功能寄存器的地址。#data #data 包含在指令中的包含在指令中的8 8位立即数。位立即数。#data16#data16 包含在指令中的包含在指令中的1616位立即数。位立即数。relrel 相对转移指令中的偏移量,为相对转移指令中的偏移量,为8 8位的带符号补位的带符号补 码数。码数。DPTRDPTR
14、数据指针,可用作数据指针,可用作1616位的地址寄存器。位的地址寄存器。bitbit 内部内部RAMRAM或特殊功能寄存器中的直接寻址位。或特殊功能寄存器中的直接寻址位。/ / 位操作数前缀位操作数前缀, ,表示对该位操作数取反表示对该位操作数取反, ,如如:/bit:/bitC C 或或 CyCy 进位标志位或位处理机中的累加器。进位标志位或位处理机中的累加器。addr11 addr11 1111位目的地址位目的地址addr16 addr16 1616位目的地址位目的地址 间接寻址寄存器前缀,如间接寻址寄存器前缀,如 RiRi, A+DPTRA+DPTR$ $ 当前指令的首地址当前指令的首地
15、址(X)(X) X X中的内容。中的内容。(X)(X) 由由X X寻址的单元中的内容。寻址的单元中的内容。 箭头右边的内容被箭头左边的内容所取代。箭头右边的内容被箭头左边的内容所取代。3.3.1 3.3.1 数据传送类指令数据传送类指令 使用最频繁的一类指令,通用格式: MOV ,数据传送类指令不影响标志位, Cy、Ac和OV,但不包括奇偶标志位P。1以累加器为目的操作数的指令 MOV A,Rn ; (Rn)A,n=07 MOV A,Ri ; (Ri)A,i=0,1 MOV A,direct ;(direct)A MOV A,#data ; #dataA例如: MOV A,R6 ;(R6)A,
16、寄存器寻址 MOV A,70H ;(70H)A,直接寻址 MOV A,R0 ;(R0)A,间接寻址 MOV A,#78H ;78HA,立即寻址 2.以Rn为目的操作数的指令 MOV Rn,A ; (A)Rn,n=07 MOV Rn,direct ;(direct)Rn,n=07 MOV Rn,#dat ; #dataRn,n=07 这组指令的功能是把源操作数的内容送入当前一组 工作寄存器区的R0R7中的某一个寄存器。3.以直接地址direct为目的操作数的指令 MOV direct,A ; (A)direct MOV direct,Rn;(Rn)direct, n=07 MOV direct1
17、,direct2; MOV direct,Ri ; (Ri)direct MOV direct,#data; #datadirect功能是把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。4.以寄存器间接地址为目的操作数的指令 MOV Ri,A ;(A)(Ri),i=0,1 MOV Ri,direct; (direct)(Ri) MOV Ri,#data ; #data(Ri)5.16位数传送指令 MOV DPTR,#data16 ; #data16DPTR唯一的一条16位数据的传送指令 ,立即数的高8位送入DPH,立即数的低8位送入DPL。6堆栈操作指令在MC
18、S-51内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作堆栈。堆栈指针SP指出堆栈的栈顶位置。(1)进栈指令 PUSH direct先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内部RAM单元中。例如:当(SP)=60H,(A)=30H,(B)=70H时,执行 下列指令 PUSH ACC; (SP)+1=61HSP,(A)61H PUSH B; (SP)+1=62HSP,(B)62H 结果:(61H)=30H,(62H)=70H,(SP)=62H (2)出栈指令 POP directSP指示的栈顶(内部RAM单元)内容送入direc
19、t字节单元中,栈指针SP减1.例如: 当 (SP)=62H,(62H)=70H,(61H)=30H,执行下 列指令: POP DPH ;(SP)DPH,(SP)-1SP POP DPL ;(SP)DPL,(SP)-1SP 结果:(DPTR)=7030H,(SP)=60H7.累加器A与外部数据存储器传送指令 MOVX A,DPTR ;(DPTR)A,读外部RAM/IO MOVX A,Ri ;(Ri)A,读外部RAM/IO MOVX DPTR,A;(A)(DPTR),写外部RAM/IO MOVX Ri,A ;(A)(Ri),写外部RAM/IO功能是读外部RAM存储器或I/O中的一个字节的数据到 累
20、加器A中,或从累加器A中的一个字节的数据写到外部RAM存储器或I/O中。采用DPTR作可寻址64KB片外数据存储器,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。采用Ri(i=0,1)作间接寻址,可寻址片外256个单元的数据存储器。8位地址和数据均由P0口输出,可选用其它任何输出口线来输出高于8位的地址(一般选用P2口输出高8位的地址)。MOV的后面 “X”表示单片机访问的是片外RAM存储器或I/O。8.查表指令 共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。 (1) MOVC A,A+PC 以PC作基址寄存器,A的内容作为无符号整
21、数和PC中的内容(下一条指令的起始地址)相加后得到一个16位的地址该地址指出的程序存储单元的内容送到累加器A。例如: (A)=30H,执行地址1000H处的指令 1000H: MOVC A,A+PC本指令占用一个字节,下一条指令的地址为1001H,(PC)=1001H再加上A中的30H,得1031H,结果将程序存储器中1031H的内容送入A。优点是不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点是表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,而且表格只能被一段程序所利用。 (2) MOVC A,A+DPTR以DPTR作为基址寄存器,A的内容作为
22、无符号数和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A. 例如 (DPTR)=8100H (A)=40H 执行指令 MOVC A,A+DPTR结果将程序存储器中8140H单元内容送入累加器A中。这条查表指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。两条指令是在MOV的后面加C,“C”是CODE的第一个字母,即代码的意思。 9字节交换指令 XCH A,Rn XCH A,direct XCH A,Ri例如: (A)=80H
23、,(R7)=08H,(40H)=F0H (R0)=30H,(30H)=OFH执行下列指令: XCH A,R7 ;(A)与(R7)互换 XCH A,40H ;(A)与(40H)互换 XCH A,R0 ;(A)与(R0)互换结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H 10半字节交换指令 XCHD A,Ri 累加器的低4位与内部RAM低4位交换。例如: (R0)=60H,(60H)=3EH,(A)=59H执行完 XCHD A,RO 指令,则(A)=5EH,(60H)=39H。3.3.2 3.3.2 算术操作类指令算术操作类指令 单字节的加、减、乘、除法指令,都是针
24、对8位二进制无符号数。执行的结果将使PSW中的进位(Cy),辅助进位(Ac),溢出(OV)3种标志位置“1”或清“0”,但是增1和减1指令不影响这些标志。1加法指令 共有4条加法运算指令: ADDA,Rn;(A)+(Rn)A, n=07 ADD A,direct ; (A)+(direct)A ADD A,Ri ; (A)+(Ri)A,i=0,1 ADD A,#data ; (A)+#dataA这4条8位二进制数加法指令的一个加数总是来自累加器A,而另一个加数可由寄存器寻址、直接寻址、寄存器间接寻址和立即寻址等不同的寻址方式得到。其相加的结果总是放在累加器A中。使用加法指令时,要注意累加器A中
25、的运算结果对各个标志位的影响:(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位)(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置“1”,否则清“0”OV。溢出标志位OV的状态,只有在带符号数加法运算时才有意义。当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围 例 (A)=53H,(R0)=FCH,执行指令 ADD A,R0结果为: (A)=4FH,Cy=1,Ac=0,OV=0,P=1注意:上面的运算中,由于位6和位7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 指令系统 编程 举例
限制150内