MCS-51单片机指令系统.ppt
《MCS-51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机指令系统.ppt(93页珍藏版)》请在三一办公上搜索。
1、第3章 单片机的指令系统,本章学习 指令是控制计算机进行各种运算和操作的命令。一台计算机所能执行的全部指令的集合称为指令系统。一般来说,一台计算机的指令越丰富,寻址方式越多,指令的执行速度越快,则它的总体功能也就越强。不同种类的单片机指令系统一般是不同的。本章将以80C51为例,详细介绍MCS-51单片机的指令系统的寻址方式、指令的格式及功能。,3.1汇编指令与格式 3.1.1 指令格式和常用符号,1.指令格式(1)汇编语言指令格式标号:操作码 第一操作数,第二操作数,第三操作数;注释其中方括号括起来的部分为可选项。例如:AM1:MOV A,#78H;向A传输立即数78H,标号 标号是指令的符
2、号地址。程序汇编时,汇编程序将指令首地址(即指令第一个字节所存单元的地址)赋值给标号,有了标号,程序中的其他语句操作就能寻找到该语句。标号由16个英文字母或数字组成,且第一个必须为英文字母;本汇编语言中已经有确切定义的符号不能作为标号,如指令助记符、伪指令、寄存器名、条件标志等;同一标号在一个程序中只能定义一次;标号后面必须跟以冒号。操作码 用来规定指令进行何种操作,是指令中不能空缺的部分。一般采用具有相关含义的英语单词或缩写表示。操作数 表示参与指令操作的数或数所在的地址。在一条指令中操作数的个数可以是一个、二个或三个,也可以没有操作数。操作码与操作数之间以空格分隔,操作数与操作数之间用逗号
3、“,”分隔。指令中有两个操作数时,一般将前面的操作数称为目的操作数,后面的操作数称为源操作数,格式为:操作码 目的操作数,源操作数 注释 注释是为了便于阅读程序,对语句所作的解释说明,不产生目标代码。注释必须用分号“;”开头。当注释内容一行写不完时,可以换行继续写,但是新的一行必须同样以“;”号开头。,(2)机器码指令格式 机器码指令也包括操作码和操作数两个基本部分。在MCS-51单片机指令系统中,指令根据其机器码的长度分为单字节、双字节和三字节三种指令。单字节指令 单字节指令只有一个字节的操作码,无操作数,在程序存储器中占一个存储单元。例如指令:RET 机器码为:00100010,十六进制代
4、码为:22H。例如指令:MOV A,R0 其机器码为:11101000,十六进制代码为:E8H。,双字节指令 双字节指令含有两个字节,第一个字节为操作码,第二个字节为操作数,在程序存储器中要占两个存储单元。例如指令:MOV A,55H 机器码为:01110100 01010101B,十六进制代码为:7455H;其中74H为操作码,55H为操作数,累加器A的信息隐含在了操作码中。三字节指令 这类指令中,第一个字节为操作码,第二和第三字节均为操作数。在程序存储器中要占3个存储单元。例如指令:MOV 20H,#79H 机器码为:01110101 00100000 01111001B,十六进制代码为:
5、752079H,其中75H为操作码,20H为操作数1,79H为操作数2。,2.指令系统中有关符号说明 在MCS-51指令系统中,描述指令格式时要用到一些符号,这些符号的约定含义是:Rn当前工作寄存器区中的工作寄存器R0R7(n=0、1、2.7)。Ri 当前工作寄存器区中的工作寄存器R0和R1(i=0或1)。Direct8位直接字节地址。既可以是内部RAM的低128个单元的地址,也可以是特殊功能寄存器的单元地址(或寄存器符号)。#data8位常数,也称立即数。#为立即数前缀符号。#data1616位立即数。,addr1616位目的地址,用于LCALL和LJMP指令中。Addrll11位目的地址,
6、用于ACALL和AJMP指令中。rel 相对偏移量,用8位带符号数的补码表示,在相对转移指令中作地址偏移量,其对应的十进制值范围为-128+127。Bit 位地址。/位操作指令中操作数的前缀,表示将该操作数的内容取反。(X)某寄存器或某单元的内容。(X)表示以X中的内容为地址的单元中的内容。数据传送的方向。$当前指令的起始存放地址。,3.1.2 伪指令 伪指令由程序设计人员在源程序中写出,是对汇编程序进行汇编是下达的指示。例如,指定程序存放的地址,定义符号,指定暂存数据的存储区等。伪指令并不生成目标代码,仅仅在汇编过程中起作用,故又称他为汇编命令或汇编程序控制命令。不同的单片机开发系统,其汇编
7、程序的伪指令并不完全相同,下面介绍一些常用的伪指令。,ORG(指定程序或数据起点)指令格式:ORG nn其中nn是16位二进制数或十进制数表示的地址值。指令功能:指明随后语句从nn单元开始存放。汇编时,第一条指令或数据首字节存入nn单元。以后程序顺序往下存放。此语句总是出现在每段源程序的前面。当程序中有多条ORG指令时,要求各条ORG指令的操作数(16位地址)由小到大顺序安排,空间不允许重叠。,ORG 0000H LJMP MAIN;上电转向主程序 ORG 0023H;串行口中断入口地址 LJMP SERVE1;转中断服务程序 ORG 2000H;主程序 MAIN:MOV TMOD,#20H;
8、设T1作方式2 MOV TH1,#0F3H;赋计数初值 MOV TL1,0F3H SETB TR1;启动T1,2.END(汇编结束)指令格式:END或END标号指令功能:源程序的结束标志,表明程序结束。汇编程序对该指令后面的内容将不再处理。如果源程序是一段子程序,END后不写标号;如果是主程序,则必须写标号,所写标号是该主程序第一条指令的符号地址。一个程序中要有而且只能有一条END指令。,3.EQU(赋值)指令格式:字符名称 EQU 赋值项指令功能:用于给字符名称赋予一个特定值。赋值以后,其值在整个程序中有效,同一字符名称只能赋值一次。其中,赋值项可以是常数、地址或标号,其值可为8位或16位二
9、进制数,赋值以后的字符名称既可以作地址使用也可以作立即数使用。例如:AA EQU R1 A10 EQU 10H ORG 0500H MOV R0,A10;R0(10H)MOV A,AA;A(R1),4.DB(定义字节)指令格式:标号:DB 项或项表指令功能:用于定义字节的内容。项或项表指所定义的一个字节或用逗号分开的字节串,汇编程序将把DB指令中项或项表所指字节的内容(数据或ASCII码)依次存人从标号开始的存储器单元。例如:ORG 1000HFIRST:DB 73,01,01,90,38,00,01,00SECOND:DB 02,34,00,89,67,45,15,26,又例如:ORG 06
10、00HSTART:MOV A,#0B4HTAB:DB 45H,73,01011010B,5,A,-4H上述程序中,通过DB伪指令实现将项表中的5个字节数依次存放在以TAB标号为起始地址的各存储单元中,即TAB单元存入45H,TAB1单元存入49H(即73的十六进制数),TAB2单元存入5AH(即01011010B),TAB3单元存入35H(5的ASCll码),TAB4单元存入41H(A的ASCll码)。TAB5单元存入FCH(-4H的补码)。,DW指令(定义字)指令格式:标号:DW 项或项表指令功能:用于定义字的内容。项或项表指所定义的一个字(两个字节)或用逗号分开的字节串。每个字低8位先放,
11、高8位后放,低字节放在低地址,高字节放在高地址。,DS(定义数据单元)指令格式:标号:DS 数字指令功能:用于保留待存放的一定数量的存贮单元,定义应保留的存贮器单元数。说明自标号所在的地址起共有指令中数字指明的存贮单元数保留可供存入数据。例如:ORG 1800HDATE:DS 05H上面DS指令表示,从1800H地址开始,保留5个连续的地址单元作为备用。注意:对MCS-51单片机来说,DB、DW、DS伪指令只能对程序存储器使用,不能对数据存储器使用。,BIT(定义位)指令格式:标号 BIT 项指令功能:用于定义某特定位的标号。项指的是所定义的位。经定义后,便可用指令中队左面的标号来代替BIT面
12、项所指出的位。例如:FLG BIT F0经BIT伪指令定义后,可以在指令中用FLG来代替位地址F0。这就是直接寻址位的第四种表示方式,,3.2 寻址方式 计算机绝大多数指令执行时都需要使用操作数,因此,指令中就需要给出这些操作数或者给出寻找操作数的地址。指令中给出操作数的地址的方式,叫做寻址方式。根据指令操作的需要,计算机总是提供多种寻址方式。寻址方式越多,计算机的寻址能力就越强,单片机的功能也就越强。MCS5l单片机共有七种寻址方式,下面分别介绍。,1立即寻址 指令中直接给出参与操作的常数(称为立即数),这种寻址方式称为立即寻址。【例3-1】MOV A,60H 机器码为“74H 60H”【例
13、3-2】MOV DPTR,1808H 机器码是“90H 18H 08H”,2直接寻址 指令中直接给出操作数所在存储单元的地址,这种寻址方式称为直接寻址。(1)内部数据存储区(00H7FH)【例3-3】MOV A,40H 机器码是“E5H 40H”,(2)特殊功能寄存器区(80HFFH)特殊功能寄存器SFR只能用直接寻址方式访问。当直接寻址某个SFR时,直接地址可以用它的单元地址,也可以使用它的寄存器符号。以上两种表示方式,对应的机器码是唯一的。使用后者可以增强程序的可读性。【例3-4】MOV A,0F0H MOV A,B 以上两条指令功能完全相同,都是将寄存器B的内容送到累加器A中,前一条指令
14、中第二个操作数采用B寄存器的单元地址表示;后一条指令中是直接用B寄存器的名称来表示。但汇编后的机器码是完全一样的,两个字节:“E5H F0H”。,3寄存器寻址 指令中指定将某个寄存器的内容作为操作数,这种寻址方式称为寄存器寻址。这类寄存器包括工作寄存器R0R7、A、DPTR等。【例3-5】INC R2 机器码是“0AH”,4寄存器间接寻址 指令中指定将某一寄存器的内容作为操作数的地址,这种寻址方式称为寄存器间接寻址。特别要注意的是,存放在寄存器中的内容不是操作数,而是操作数所在的存储单元的地址。利用寄存器间接寻址可访问片内RAM和片外RAM单元中的内容。访问片内RAM中的数据时,只能使用寄存器
15、R0、R1间接寻址;而访问片外RAM中的数据时,可使用R0、R1或DPTR间接寻址。此时,这些寄存器被用作地址指针,前面要加前缀符“”。规定用MOV指令访问片内RAM,用MOVX指令访问片外RAM单元。,【例3-6】MOV A,R0;A(R0)机器码为“E6H”,5变址寻址 以16位寄存器(PC或DPTR)的内容作为基址,以累加器A的内容作为偏移量,将两者进行相加得到的和作为操作数地址,这种寻址方式称为变址寻址。变址寻址只能对程序存储器进行寻址,它可以分为两类:(1)以PC的当前值为基址例如指令:MOVC A,A+PC;(PC)(PC)+1,A(A)+(PC)单字节指令,源操作数为变址寻址。P
16、C的当前值是从程序存储器中取出该条指令后的PC值,它等于该条指令首字节地址加指令的字节数,上述指令的功能是:先使PC加1,然后与累加器的内容相加,形成操作数的地址。,(2)以DPTR的内容为基址例如指令:MOVC A,A+DPTR;A(A)+(DPTR)下面这段程序是将程序存储器ROM中1065H单元的内容读入累加器A中:MOV DPTR,#1060H;DPTR#1060HMOV A,#05H;A#05HMOVC A,A+DPTR;A(1065H),6.相对寻址 相对寻址方式主要用于转移指令,它是把指令中给出的相对地址偏移量rel与PC当前值相加,得到程序转移的目标地址。即:目标地址=PC当前
17、值+relrel是一个带符号的8位二进制补码,其取值范围为128+127。指令中含有操作数rel的转移指令均为相对转移指令,采用的都是相对寻址方式例如:在地址1068H处有一条相对转移指令:1068H SJMP 30H;PC(PC)+2+rel 指令为双字节指令,操作码为“80H 30H”。PC的当前值=1068H+2=106AH,把它与偏移量30H相加,就形成了程序转移的目标地址109AH(向后跳转)。相对寻址方式只适合对程序存储器的访问。,7.位寻址指令中直接给出位操作数的地址,这种寻址方式称为位寻址。例如指令:MOV C,37H;CY(37H),3.3 指令类型 MCS-51单片机指令系
18、统共有111条指令。这些指令可按不同方法进行分类:1.按字节数分 单字节指令(49条)、双字节指令(46条)、三字节指令(16条)。2.按指令的执行时间分 单机器周期指令(64条)、双机器周期指令(45条)、四机器周期指令(2条)。3.按指令的功能分 数据传送指令(28条)、算术运算指令(24条)、逻辑运算指令(25条)、控制转移指令(17条)、位操作指令(17条)。,3.4数据传送类指令3.4.1.内部数据传送指令指令格式:MOV(目的字节),(源字节)说明:将源字节指定的源操作数传送到目的字节指定的存储单元中,而源字节不变。,1.以累加器A为目的地址指令 操作 机器码MOV A,Rn;A(
19、Rn)11101rrrMOV A,direct;A(direct)11100101 directMOV A,Ri;A(Ri)1110011iMOV A,#data;A#data 01110100 data 这组指令的功能是把源操作数送入累加器A中。源操作数的寻址方式分别为寄存器寻址、直接寻址、寄存器间接寻址和立即寻址方式。机器码中i 的值取决于Ri的下标(i=0或1)。,2.以Rn为目的地址指令 操作 机器码MOV Rn,A;Rn(A)11111rrrMOV Rn,direct;Rn(direct)10101rrr directMOV Rn,#data;Rn#data 01111rrr dat
20、a 这组指令的功能是把源操作数送入工作寄存器中。源操作数的寻址方式分别为寄存器寻址、直接寻址和立即寻址方式。【例3-7】设(32H)=10H,执行指令:MOV R0,#32HMOV A,R0执行结果是:(R0)=32H,(A)=10H,(32H)=10H,3.以直接地址为目的地址指令 操作 机器码MOV direct,A;direct(A)11110101 directMOV direct,Rn;direct(Rn)10001rrr directMOV direct,Ri;direct(Ri)1000011i directMOV direct1,direct2;direct1(direct2)
21、10000101 direct2 direct1MOV direct,#data;direct#data 01110101 direct data 这组指令的功能是将源操作数送入直接地址所指的存储单元中。源操作数的寻址方式分别为寄存器寻址、寄存器间接寻址、直接寻址和立即寻址方式。,4.以寄存器间接地址为目的地址指令 操作 机器码MOV Ri,A;(Ri)(A)1111011iMOV Ri,direct;(Ri)(direct)1010011i directMOV Ri,#data;(Ri)data 0111011i data 这组指令的功能是把源操作数送入R0或R1指针间接寻址的片内RAM单元
22、中。源操作数的寻址方式分别为寄存器寻址、直接寻址和立即寻址方式。该组指令中目的操作数是寄存器间接寻址方式,可在片内RAM的00H7FH范围内寻址,寄存器间接寻址是不能对SFR区进行访问的,这是对8051、8031、8751等芯片而言的。对增强型单片机芯片如8052、8032和8752等具有与SFR区地址重叠的高128个单元(80FFH)的片内RAM,该高128个单元只能采用寄存器间接寻址方式进行读写操作。,5.以DPTR为目的地址的16位指令指令 操作 机器码MOV DPTR,#data16;DPTR#data16 10010000(data)高8位(data)低8位 这条指令的功能是把一个1
23、6位立即数送入DPTR寄存器。立即数的高8位送DPH,立即数的低8位送DPL。【例3-8】MOV DPTR,2200H;DPTR#2200H指令的执行结果是:(DPTR)=2200H,其中(DPH)=22H,(DPL)=00H。,【例3-9】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。MOV R0,#30H;R0#30HMOV A,R0;A(30H),(A)=40HMOV R1,A;R1(A),(R1)=40HMOV B,R1;B(40H),(B)=10HMOV R1,P1;(R1)(P1),(40H)=0CAHMOV P2,P1;P2(P1),(
24、P2)=0CAH结果是:(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH,3.4.2.片外数据传送指令 此类指令实际上是片外RAM与累加器A之间的传送指令。片外RAM单元只能采用寄存器间接寻址的方式来访问,R0、R1或 DPTR可作间接寻址的寄存器。1.用DPTR间接寻址的指令指令 操作 机器码MOVX A,DPTR;A(DPTR)11100000MOVX DPTR,A;(DPTR)(A)11110000 使用以上两条指令时,先将要访问的片外RAM单元的地址送入DPTR,然后再用上述指令来实现数据的传送。,【例3-10】将片外RAM 1000H单元中的内容送到2000H
25、单元。MOV DPTR,#1000H;DPTR#1000HMOVX A,DPTR;A(DPTR)MOV DPTR,#2000H;DPTR#2000HMOVX DPTR,A;(DPTR)(A)在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。由于DPTR是16位的地址指针,因此可寻址64KB的外部RAM。,2.用R0和R1间接寻址的指令指令 操作 机器码MOVX A,Ri;A(Ri)1110001i;A(P2Ri)MOVX Ri,A;(Ri)(A)1111001i;(P2Ri)(A)使用以上指令时,要先将外部RAM的单元地址送入Ri(R0或R1),由于Ri只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 指令系统

链接地址:https://www.31ppt.com/p-6512331.html