n第3章 80C51单片机的指令系统

上传人:e****s 文档编号:243715862 上传时间:2024-09-29 格式:PPT 页数:158 大小:330.50KB
返回 下载 相关 举报
n第3章 80C51单片机的指令系统_第1页
第1页 / 共158页
n第3章 80C51单片机的指令系统_第2页
第2页 / 共158页
n第3章 80C51单片机的指令系统_第3页
第3页 / 共158页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章 80C51单片机的指令系统,根本内容,3.1概述,3.1.1指令分类,3.1.2指令格式,3.1.3指令系统中使用的符号,3.2寻址方式和寻址空间,第三章 80C51单片机的指令系统,3.3指令系统,3.3.1数据传送类指令,3.3.2算术运算类指令,3.3.3逻辑运算类指令,3.3.4控制转移类指令,3.3.5布尔位操作类指令,第三章 80C51单片机的指令系统,3.1概述,指令分类,80C51系列单片机完全继承了MCS51的指令系统,共有111条指令,按其功能可分为五大类:, 数据传送类指令28条);, 算术运算类指令(24条);, 逻辑运算类指令(25条);, 控制转移类指令(17条);, 布尔操作(位)类指令(17条)。,第三章 80C51单片机的指令系统,本章将分类介绍这五类指令,并在书后以附录形式逐条列出。,指令格式,指令的表示方法称之为指令格式,其内容包括指令的长度和指令内部信息的安排等。一条指令通常由操作码和操作数两局部组成。操作码是用来规定指令所完成的操作的,而操作数那么表示操作的对象。操作数可能是一个具体的数据,也可能是指出取得数据的地址或符号。单片机由于字长短,因此,指令都是不定长的即变长指令。在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。,第三章 80C51单片机的指令系统, 单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。在80,C51,系列的指令系统中,共有49条单字节指令。, 双字节指令:双字节指令包括两个字节。其中一个字节为操作码,另一个字节是操作数。在80,C51,系列的指令系统中,共有45条双字节指令。,第三章 80C51单片机的指令系统, 三字节指令:在三字节指令中,操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能是地址。在80C51系列的指令系统中,共有17条三字节指令。,指令系统中使用的符号,在说明和使用80C51系列的指令时,经常使用一些符号。下面将所使用的一些符号的意义作一简单说明。,Rn 当前存放器组的8个通用存放器R0R7,所以n=07。,第三章 80C51单片机的指令系统,Ri 可用作间接寻址的存放器,只能是R0,、R1两个存放器,所以i=0,1。,direct 内部的8位地址,既可以指片内,RAM的低128个单元地址,也可以指特殊功能存放器的地址或符号名称,因此direct表示直接寻址方式。,#data 8位立即数。,#data16 16位立即数。,第三章 80C51单片机的指令系统,addr16 16位目的地址,只限于在LCALL和LJMP指令中使用。,addr11 11位目的地址,只限于在ACALL和AJMP指令中使用。,rel 相对转移指令中的偏移量,为8位带符号数。,DPTR 数据指针。,bit 片内RAM (包括特殊功能存放器)中的直接寻址位。,A 累加器。,B B存放器。,第三章 80C51单片机的指令系统,C 进位标志位,是布尔处理机中的累加器,也称之为累加位。, 间址存放器的前缀标志。,/ 位地址的前缀标志,表示对该位操作数取反。,() 某存放器或某单元的内容。,() 由寻址的单元中的内容。, 箭头左边的内容被箭头右边的内容所取代。,第三章 80C51单片机的指令系统,3.2,寻址方式和寻址空间,执行任何一条指令都需要使用操作数。寻址方式就是在指令中用于说明操作数所在地址的方法。,根据指令操作的需要,计算机有多种寻址方式。总的来说,寻址方式越多,计算机的功能就越强,灵活性越大,指令系统也就愈加复杂。因此在设定寻址方式时,应考虑到需要和可能。80,C51,系列单片机指令系统中共有以下7种寻址方式。,第三章 80C51单片机的指令系统,1 立即寻址,立即寻址是指在指令中直接给出操作数。出现在指令中的操作数称为立即数,因此就将这种寻址方式称为立即寻址。为了与直接寻址指令中的直接地址相区别,在立即数前面加前缀“#。,例如: 指令 MOV A,#3AH,图31“MOV A,#3AH示意图,其中3AH就是立即数,指令功能是把8位立即数3AH送入累加器,如图3-1所示。,第三章 80C51单片机的指令系统,此外,在80C51系列指令系统中还有一条16位立即数指令,即:,MOV DPTR,#data16,其功能是把16位立即数送入数据指针存放器。,例如:执行指令 MOV DPTR,#1556H,如图3-2所示。,图3-2“MOV DPTR,#1556H示意图,第三章 80C51单片机的指令系统,2 直接寻址,直接寻址是指在指令中直接给出操作数单元的地址。例如:指令 MOV A,3AH,图3-3“MOV A,3AH示意图,第三章 80C51单片机的指令系统,其功能是把片内RAM中 3AH单元内的数据传送给累加器A,如图3-3所示。,直接寻址方式只能给出8位地址,因此,这种寻址方式的寻址范围只限于片内RAM,具体地说:,1 低128单元,在指令中直接以单元地址形式给出。,第三章 80C51单片机的指令系统,2 特殊功能存放器,这时除可以单元地址形式给出外,还可以存放器符号形式给出。虽然特殊功能存放器可以使用符号标志,但在指令代码中还是按地址进行编码的。,应当说明的是,直接寻址是访问特殊功能存放器的惟一方法。,第三章 80C51单片机的指令系统,3 存放器寻址,存放器寻址是指在指令中将指定存放器的内容作为操作数。因此指定了存放器就能得到了操作数。,存放器寻址方式中,用符号名称来表示存放器。例如:指令 INC R0,其功能是把存放器R0的内容加 1,再送回R0中。由于操作数在R0中,指定了R0,也就得到了操作数,如图3-4所示。,第三章 80C51单片机的指令系统,图3-4“INC R0示意图,第三章 80C51单片机的指令系统,存放器寻址方式的寻址范围包括:,1四个存放器组共32个通用存放器。但在指令中只能使用当前存放器组。因此在使用前要通过指定PSW中的RS1、RS0,以选择使用的当前存放器组。,(2) 局部特殊功能存放器。例如累加器A、AB存放器对以及数据指针DPTR。,第三章 80C51单片机的指令系统,4 存放器间接寻址,存放器间接寻址是指在指令中要到存放器的内容所指的地址去取操作数。可以看出,在存放器寻址方式中,存放器中存放的是操作数;而在存放器间接寻址方式中,存放器中存放的那么是操作数的地址。这就是说,指令的操作数是通过存放器间接得到的,因此,称为存放器间接寻址。,存放器间接寻址也需以存放器符号名称的形式表示。为了区别存放器寻址和存放器间接寻址,在存放器间接寻址中,应在存放器的名称前面加前缀“。,第三章 80C51单片机的指令系统,假定R1存放器的内容是60H,那么指令ANL A,R1的功能是以R1存放器的内容60H为地址,将60H地址单元的内容与累加器A中的数相“与,其结果仍存放在A中。其功能示意请参见图3-5。,第三章 80C51单片机的指令系统,图3-5存放器间接寻址示意图,第三章 80C51单片机的指令系统,存放器间接寻址的寻址范围:,(1)片内RAM低128单元:这里只能使用R0或R1为间址存放器,其通用形式写为Rii=,1。,(2) 片外RAM 64 KB:使用DPTR作为间址存放器,其形式为DPTR,例如:MOVX A,DPTR,其功能是把DPTR指定的片外RAM单元的内容送累加器A。,(3) 片外RAM低256单元:除可使用DPTR作为间址存放器外,也可使用R0或R1作间址存放器。例如:MOVX A,R0,即把R0指定的片外RAM单元的内容送累加器A。,第三章 80C51单片机的指令系统,(4) 堆栈区:堆栈操作指令PUSH和POP 也应算作是存放器间接寻址,即以堆栈指针(SP)作间址存放器的间接寻址方式。,5 相对寻址,相对寻址是指在指令中给出的操作数为程序转移的偏移量。相对寻址方式是为实现程序的相对转移而设立的,为相对转移指令所采用。,第三章 80C51单片机的指令系统,在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel表示,把PC的当前值加上偏移量就构成了程序转移的目的地址。而PC的当前值是指执行完转移指令后的PC值,即转移指令的PC值加上它的字节数。因此转移的目的地址可用如下公式表示:,目的地址=,转移指令所在地址+转移指令字节数+rel,第三章 80C51单片机的指令系统,在80C51系列单片机的指令系统中,有许多条相对转移指令。这些指令多数均为两字节指令,只有个别的是三字节的指令。偏移量rel是一个带符号的8位二进制补码数,所能表示的数的范围是128+127。因此以相对转移指令的所在地址为基点,向前最大可转移127+转移指令字节数)个单元地址,向后最大可转移128转移指令字节数个单元地址。,例如:指令 JC 80H,第三章 80C51单片机的指令系统,表示假设进位位C为0,那么程序计数器PC中的内容不变,即不转移;假设进位位C为1,那么以程序计数器PC中当前值为基地址,加上偏移量80H后所得结果作为该转移指令的目的地址,其执行示意图如图3-6所示。,第三章 80C51单片机的指令系统,图3-6“JC 80H示意图,第三章 80C51单片机的指令系统,指令的操作码存在1000H单元,偏移量存在1001H单元。执行该指令后,程序计数器PC指向1002H即当前值。这里80H128,故1002H与128(80H)相加补码运算后得到转移地址0F82H。,第三章 80C51单片机的指令系统,6 变址寻址,变址寻址是指以DPTR或PC作基址存放器,累加器A作变址存放器,以两者内容相加形成的16位程序存储器地址作为操作数地址。又称基址存放器+变址存放器间接寻址。,例如: 指令MOVC A, A+DPTR,其功能是把DPTR和A的内容相加所得到的程序存储器地址单元的内容送A。假定指令执行前(A)=54H,(DPTR)=3F21H,那么该指令的操作示意请参见图3-7。变址寻址形成的操作数地址为3F21H+54H=3F75H,假设3F75H单元的内容为7FH,那么该指令执行的结果是A的内容为7FH。,第三章 80C51单片机的指令系统,图3-7 变址寻址示意图,第三章 80C51单片机的指令系统,对80,C51,系列的指令系统中的,变址寻址指令有如下特点:,(1)变址寻址方式只能对程序存储器进行寻址,或者说是专门针对程序存储器的寻址方式;,变址寻址指令只有三条:,MOVC A,A+DPTR,MOVC A, A+PC,JMP A+DPTR,其中,前两条是程序存储器读指令,后一条是无条件转移指令;,第三章 80C51单片机的指令系统,(3)尽管变址寻址方式复杂,但这三条指令却都是单字节指令;,(4)变址寻址方式用于查表操作,还可用于散转操作。,7,位寻址,80,C51,系列单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。位寻址的寻址范围:,第三章 80C51单片机的指令系统,(1)片内,RAM,中的位寻址区,片内,RAM,中的单元地址20,H2FH,,共16个单元128位,为位寻址区,位地址是0,H7FH。,对这128个位的寻址使用直接位地址表示。例如:,MOV C,2BH,指令的功能是把位寻址区的2,BH,位状态送累加位,C。,第三章 80C51单片机的指令系统,(2) 可位寻址的特殊功能存放器位,可供位寻址的特殊功能存放器共有11个,实有寻址位83位。对这些寻址位在指令中有如下4种表示方法:, 直接使用位地址表示方法。, 单元地址加位的表示方法。例如88H单元的位5,那么表示为88H.5。, 特殊功能存放器符号加位的表示方法。例如PSW存放器的位5,可表示为PSW.5。, 位名称表示方法,特殊功能存放器中的一些寻址位是有名称的。例如PSW存放器位5为F0标志位,那么可使用F0表示该位。,第三章 80C51单片机的指令系统,一个寻址位有多种表示方法,初看起来似乎是复杂,实际上将为程序设计带来方便。对于指令中的操作数,因为指令操作常伴有从右向左传送数据的内容,所以常把左边操作数称为目的操作数,而右边操作数称为源操作数。上面所讲的各种寻址方式都是针对源操作数的,实际上,目的操作数也有寻址的问题。,例如:指令 MOV 45H,R1,其源操作数是存放器寻址方式,而目的操作数那么是直接寻址方式。上述指令的功能是,把按存放器寻址取出的R1内容,再以直接寻址方式存放于内部RAM的45H单元中。,第三章 80C51单片机的指令系统,总的来说,源操作数的寻址方式多,而目的操作数的寻址方式较少,只有存放器寻址、直接寻址、存放器间接寻址和位寻址四种方式。因此,知道了源操作数的寻址方式,也就不难了解目的操作数的寻址问题了。,以上介绍了80C51指令系统的7种寻址方式,概括起来如表3-1所列。,第三章 80C51单片机的指令系统,表3-180C51中的寻址方式和寻址空间,序号 寻址方式 使用的变量 寻址空间,1 立即寻址 程序存储器,2 直接寻址 片内RAM低128 B,特殊功能存放器,3 存放器寻址 R0R7、A、B、,DPTR、CY,4 存放器间接寻址 R0、R1、SP 片内RAM,R0、R1、DPTR 片外RAM,5 相对寻址 PC+偏移量 程序存储器,6 变址寻址 A+PC、A+DPTR 程序存储器,7 位寻址 片内RAM中的位寻址区,可以位寻址的特殊功能存放器位,第三章 80C51单片机的指令系统,3.3,指令系统,3.3.1 数据传送类指令,80,C51,具有丰富的数据传送指令,能实现多种数据的传送操作。数据传送指令共有28条。数据传送指令按功能又可分为:一般传送指令、目的地址传送指令、累加器传送指令和栈操作指令。,数据传送指令特点是:,第三章 80C51单片机的指令系统, 可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到片内RAM单元中而不必经过累加器A或工作存放器Rn,这样可以大大提高传送速度,缓解累加器A的瓶颈效应。, 用R0和R1存放器间址访问片外数据存储器256个字节中的任一字节单元;用DPTR的16位数据指针间址访问全部64 KB片外数据存储器地址空间中的任何一个单元。,第三章 80C51单片机的指令系统, 累加器A能与选定的Rn中任一个存放器寻扯;直接寻址片内RAM中的任一单元;特殊功能存放器之间进行一个字节的数据传送;片内RAM单元之间进行低半字节的数据交换。, 能用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编程翻译算法提供了方便。,第三章 80C51单片机的指令系统,1一般传送指令,一般传送指令共有15条,这类传送指令的格式为:,MOV ,它的功能是把源字节的内容送到目的字节,而源字节的内容不变。操作属于拷贝性质,不属于搬家性质。,源操作数可以有: 累加器A, 工作存放器Rn(n=0,7), 直接地址direct、间接寻址存放器Ri(i=0,1)和立即数#data。,第三章 80C51单片机的指令系统,目的操作数可以有: 累加器A,工作存放器Rn(n=0,7),直接地址direct和间接寻址存放器Ri(i=0,1)。,其间的传送关系由表3-2表示。,第三章 80C51单片机的指令系统,表3-2一般传送指令传送数据关系,源 操 作 数,A,Rn,direct,Ri,#data,目,的,操,作,数,A,Rn,direct,Ri,第三章 80C51单片机的指令系统,这类指令是以,MOV,为其助记符的。从表上可以看出,以目的操作数为准,可将一般传送指令分为4组。,(1)以累加器,A,为目的操作数的指令组,共有4条指令:,MOV A, Rn ;(A) (Rn),MOV A,direct ;(A)(direct),MOV A,Ri ;(A)(Ri),MOV A,#data ;(A)#data,第三章 80C51单片机的指令系统,这组指令的功能是把源操作数的内容送入累加器。源操作数有存放器寻址、直接寻址、存放器间接寻址和立即寻址等寻址方式。,传送指令是以累加器A为中心的总体结构,绝大局部传送操作均需通过A进行的,所以累加器A是一个特殊的、使用十分频繁的存放器。但是在80C51中,由于可以进行直接地址之间的数据传送,极大地减轻了累加器的负担,大大地缓解了拥堵现象。,第三章 80C51单片机的指令系统,(2) 以存放器Rn为目的操作数的指令组,共有3条指令:,MOV Rn,A ;(Rn)(A),MOV Rn,direct ;(Rn)(direct),MOV Rn,#data ;(Rn)#data,这组指令的功能是把源操作数的内容送入当前工作存放器区的R0R7中的某一个存放器。源操作数有存放器寻址、直接寻址和立即寻址等寻址方式。,第三章 80C51单片机的指令系统,(3),以直接地址,direct,为目的操作数的指令,组,共有5条指令:,MOV direct,A ;(direct)(A),MOV direct,Rn ;(direct)(Rn),MOV direct,direct ;(direct2)(direct1),MOV direct,Ri ;(direct)(Ri),MOV direct,#data ;(direct)#data,第三章 80C51单片机的指令系统,这组指令的功能是把源操作数的内容送入由直接地址指出的存储单元。源操作数有存放器寻址、直接寻址、存放器间接寻址和立即寻址等寻址方式。,直接地址direct为8位直接地址,可寻址0255个单元,对于80C51可直接寻址内部RAM 0127个地址单元和128255地址的特殊功能存放器。对80C51而言,这128255 128个地址单元很多是没有定义的。对于无定义的单元进行读写时,读出的为不定数,而写入的数将被丧失。,第三章 80C51单片机的指令系统,这里,需要注意的,假设累加器A以其直接地址0E0H来寻址,也可实现上述功能,即:,MOV A, #data ; 机器码 74 #data,MOV 0E0H, #data ;机器码 75 E0 #data,但机器码要多一个字节,执行时间也会加长。,第三章 80C51单片机的指令系统,(4) 以间接寻址存放器Ri为目的操作数的指令组,共有3条指令:,MOV Ri,A ;(Ri)(A),MOV Ri,direct ;(Ri)(direct),MOV Ri,#data ;(Ri)#data,这组指令的功能是把源操作数的内容送入由R0和R1的内容所指的内部RAM中的存储单元。源操作数有存放器寻址、直接寻址和立即寻址等寻址方式。,第三章 80C51单片机的指令系统,间接寻址存放器Ri由操作码字节的最低位来选定是R0还是R1存放器,间址是以Ri的内容作为操作数的地址来进行寻址的。也就是说,Ri的内容并不是操作数而是操作数的地址,而此地址所对应的存储单元内容才是真正的操作数。,直接寻址direct单元在编程时就巳明确,而间接寻址单元是在程序进行中明确的,间接寻址空间和直接寻址空间范围相同,均为0255个单元地址。,立即数#data为一常数,它是不带符号的8位二进制数。在编程中必须注意的是直接地址direct和立即数#data均以数据形式出现,但两者的含义是不相同的,故在指令中必须用“#作为立即数的前缀以与直接地址相区别。,第三章 80C51单片机的指令系统,例如:,MOV A,5EH ;,表示片内,RAM,中的5,EH,单元 内容送,A,,这里5,EH,为直接地址,MOV A,#5EH ;,表示把立即数5,EH,送,A,MOV 5EH,#5EH ;,这是一条3字节指令,表示把立即数5,EH,送到片内,RAM,中的5,EH,地址单元中去,MOV 5EH,4EH ;,这是一条3字节指令,表示把4,EH,单元的内容送到5,EH,单元中去。,;这是片内数据存储单元中的直接地址单元数据之间的直接传送,第三章 80C51单片机的指令系统,2,目的地址传送指令,MOV DPTR,#data16 ;,(DPTR)#data16,这是80,C51,中惟一的一条16位指令。此指令把16位常数装入数据指针,DPTR,16,位常数在指令的第二、第三字节中(第二字节为高位字节,DPH,,第三字节为低位字节,DPL)。,此操作不影响标志位。,例如: 执行指令为,MOV DPTR,#1234H,执行结果为 (,DPH)=12H,(DPL)=34H。,第三章 80C51单片机的指令系统,3 累加器传送指令,累加器传送指令均是以累加器为中心进行的,这类指令共有10条,又可分为4组。,(1)字节交换指令XCH组,共有3条指令: XCH A,Rn,XCH A,direct,XCH A,Ri,这组指令的功能是将累加器A与源操作数的内容互换。源操作数有存放器寻址、直接寻址和存放器间接寻址等寻址方式。操作码分别为C5HCFH。,第三章 80C51单片机的指令系统,例如:设 (R0)=30H,(A)=3FH,片内 RAM中(30H)=45H。,执行指令为 XCH A,R0,执行结果为 (A)=45H,30H=3FH。,(2)半字节交换指令XCHD组,只有1条指令: XCHD A,Ri,XCHD指令是将Ri间接寻址单元的低4位内容与累加器A的低4位内容互换,而它们的高4位内容均不变。此指令不影响标志位。,第三章 80C51单片机的指令系统,例如: 设(,R0)=20H,(A)=36H(00110110B),,内部,RAM,中(20,H)=75H,(01110101B)。,执行指令为,XCHD A,R0,执行结果为 (20,H)=01110110B=76H,(A)=00110101 B=35H。,(3)A,与片外数据存储器的传送指令,MOVX,组,共有4条指令:,第三章 80C51单片机的指令系统,MOVX A,Ri,MOVX A,DPTR,MOVX Ri,A,MOVX DPTR,A,这组的功能是实现累加器,A,与外部数据存储器或,I/O,口之间传送一个字节数据的指令。,采用间接寻址方式访问外部数据存储器,有,Ri,和,DPTR,两种间接寻址方式。,第三章 80C51单片机的指令系统,采用R0或R1作间址存放器时,可寻址256个外部数据存储器单元,8位地址和数据均由P0口分时输入和输出。这时假设要访问大于256个单元的片外RAM时,可选用任何其它输出口线来输出高于8位的地址(一般选用P2口输出高8位地址)。,采用16位DPTR作间址时,那么可寻址整个64 KB片外数据存贮空间,低8位(DPL)由P0口进行分时使用,高8位(DPH)由P2口输出。,例如:设工作存放器R0的内容为12H,R1的内容为34H,片外RAM 34H单元的内容为56H。执行指令为,第三章 80C51单片机的指令系统,MOVX A, R1 ;(34H)=56H(A),MOVX R0,A ;(A)=56H12H单元中,执行结果为 (34H)=56H, (12H)=56H。,(4)A与程序存储器传送指令MOVC组或称查表指令,共有2条指令:,MOVC A,A+PC,MOVC A,A+DPTR,这两条指令的功能均是从程序存储器中读取数据,执行过程相同,其差异是基址不同,因此适用范围也不同。,第三章 80C51单片机的指令系统,4 栈操作指令组,这组指令共有2条指令:,PUSH direct,POP direct,入栈PUSH操作指令,又称“压栈操作。指令执行后栈指针(SP)+1指向栈顶上一个空单元,将直接地址(direct)单元内容送入SP所指示的堆栈单元。此操作不影响标志位。,第三章 80C51单片机的指令系统,例如: 中断响应时(SP)=09H,DPTR的内容为0123H,执行入栈指令其结果怎样?,PUSH DPL ;DPL为低8位数据指针存放器,PUSH DPH ;DPH为高8位数据指针存放器,执行结果: 第一条指令 (SP)+1=0AH(SP),(DPL)=23H(0AH)第二条指令 (SP)十1=0BHSP),(DPH)=01H(0BH),第三章 80C51单片机的指令系统,所以片内RAM中,(0AH)=23,(0BH)=01H,(SP)=0BH。,出栈操作指令,又称“弹出操作。由栈指针(SP)所寻址的片内RAM中栈顶的内容(SP)送入直接寻址单元direct中,然后执行(SP)-1并送入SP。此操作不影响标志位。,例如: 设(SP)=32H,片内RAM的30H32H单元中的内容分别为20H,23H,01H,执行以下指令的结果怎样?,第三章 80C51单片机的指令系统,POP DPH ;(SP)=(32H)=01HDPH,;(SP)-1=32H-1=31HSP,POP DPL ;(SP)=(31H)=23HDPL,;(SP)-1=31H-1=30HSP,POP SP ;(SP)-1=2FHSP,;(SP)=(30H)=20HSP,执行结果为 (,DPTR)=0123H,(SP)=20H。,第三章 80C51单片机的指令系统,以上第三条指令为特殊情况,先执行,(,SP)-1=2FH,,后装入由栈顶退出的值,所以执行后(,SP)=20H。,数据传送类指令汇总见附录中附表2。,第三章 80C51单片机的指令系统,算术运算类指令,算术运算类指令都是通过算术逻辑运算单元ALU进行数据运算处理的指令。它包括各种算术操作,其中有加、减、乘、除四那么运算指令共有24条。80C51单片机还有带借位减法、比较指令。这些运算指令,大大加强了80C51的运算能力。,除了加1和减1指令之外,算术运算结果将使进位标志CY、半进位标志AC、溢出标志OV置位或复位。,算术运算类指令中的源操作数与加1、减1指令中的源操作对象见表3-3及表3-4。,第三章 80C51单片机的指令系统,表3-3 算术运算类指令中的源操作数源,操 作 数,助记符,B,Rn,Direct,Ri,#data,DPTR,ADD,ADDC,SUBB,MUL,DIV,第三章 80C51单片机的指令系统,表34 加1和减1指令中的源操作对象,助记符,A,Rn,Direct,Ri,DPTR,INC,DEC,第三章 80C51单片机的指令系统,1 加法指令,加法类指令共14条,包括加法、带进位的加法、加1以及二十进制调整4组指令。,(1)加法指令这组指令的助记符为ADD,共有4条指令:,ADD A,Rn ;A+RnA,ADD A,direct ;A+directA,ADD A,Ri ;A+RnA,ADD A,#data ;A+#data A,第三章 80C51单片机的指令系统,这组指令的源操作数为Rn、direct、Ri或立即数,而目的操作数为累加器A中的内容。这组指令的功能是将工作存放器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数及立即数与累加器A中的内容相加,相加的结果仍存放在A中。,这类指令将影响标志位AC、CY、OV、P。,当和的第3位与第7位有进位时,分别将AC、CY标志置位,否那么为0。,第三章 80C51单片机的指令系统,对于带符号运算数的溢出,当和的第7位与第6位中有一位进位而另一位不产生进位时,溢出标志OV置位,否那么为0。OV=1表示两个正数相加,和为负数;或两个负数相加,和为正数的错误结果。,例如:设A=0C3H,R0=0AAH。,执行指令为 ADD A,R0,执行结果为 A=6DH,CY=1,OV=1,AC=1。,第三章 80C51单片机的指令系统,(2)带进位位加法指令,这组指令的助记符为ADDC,共有4条指令:,ADDC A,Rn ;AA+Rn+CY,ADDC A,direct ;AA+direct+CY,ADDC A,Ri ;AA+Rn+CY,ADDC A,#data ;AA+ #data +CY,这组指令的功能是将工作存放器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数及立即数与累加器A的内容和当前进位标志CY的内容相加,相加的结果仍存放在A中。,第三章 80C51单片机的指令系统,这组指令常用于多字节加法。这类指令将影响标志位AC、CY、OV、P。,当和的第3位、第7位有进位时,分别将AC、CY标志置位,否那么为0。,例如:,设 A=0C3H,R0=0AAH,CY=1。,执行指令为 ADDC A,R0,执行结果为 A=6EH,CY=1,OV=1,AC=0。,第三章 80C51单片机的指令系统,(3) 加1指令这组指令的助记符为INC,共有5条指令:,INC Rn ;RnRn+1,INC direct ;directdirect+1,INC Ri ;RiRi+1,INC A ;AA+1,INC DPTR ;DPTRDPTR+1,这组指令的功能是将工作存放器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数、累加器A和数据指针DPTR的内容加1,相加的结果仍存放在原单元中。,这类指令不影响各个标志位。,第三章 80C51单片机的指令系统,例如:设R0=7EH,7EH=0FFH,7FH=40H。,执行指令为,INC R0 ;0FFH+1=00H7EH,INC R0 ;7EH+1=7FH R0,INC R0 ;40H+1=41H 7FH,执行结果为R0=7FH,7EH=00H,7FH=41H。,第三章 80C51单片机的指令系统,(4)二十进制调整指令,该指令的助记符为DA,只有1条指令:,DA A,该指令的功能是对BCD码的加法结果进行调整。假设两个压缩型BCD码按二进制数相加之后,必须经此指令的调整才能得到压缩型BCD码的和数。,第三章 80C51单片机的指令系统,执行本指令时的操作是:,假设A03)9或AC=1,那么执行A03)+6A03;,假设A479或CY=1,那么执行A47+6A47。,本指令是根据A的原始数值和PSW的状态,决定对A进行加06H、60H或66H的操作的。,例如:设A = 0101 0110 = 56 BCD; R3= 0110 0111 = 67 BCD CY=1。,执行指令为,ADDC A,R3,DA A,第三章 80C51单片机的指令系统,执行情况为,执行ADDC A,R3:,A 0101 0110 56 BCD,R3 0110 0111 67 BCD,+ CY 0000 0001 01 BCD,1011 1110,执行DA A:,+ 0110 0110,1 0010 0100 124 BCD,第三章 80C51单片机的指令系统,2 减法指令,减法类指令共8条,包括带借位的减法、减1两组指令。,(1)带借位减法指令,这类指令的助记符为SUBB,共有4条指令:,SUBB A,Rn ;A-Rn-CYA,SUBB A,direct ;A-direct-CYA,SUBB A,Ri ; A-Rn-CYA,SUBB A,#data ;A-#data -CYA,第三章 80C51单片机的指令系统,这组指令的功能是从A中减去进位位CY和指定的变量,结果差存A中。,假设第7位有借位那么CY置1,否那么CY清0;假设第3位有借位,那么AC置1,否那么AC清0。,假设第7位和第6位中有一位需借位而另一位不借位,那么OV置1;OV位用于带符号的整数减法。OV=1,那么表示正数减负数结果为负数,或负数减正数结果为正数的错误结果。,需要注意的是,在80C51指令系统中没有不带借位的减法。如果需要的话,可以在“SUBB 指令前,用“CLR C 指令将CY清零。,第三章 80C51单片机的指令系统,例如:设A=0C9H,R2=54H,CY=1。,执行指令为 SUBB A,R2,执行结果为 A= 74H,CY= 0,AC= 0,OV=1。,(2) 减1指令,这类指令的助记符为DEC,共有4条指令:,第三章 80C51单片机的指令系统,DEC Rn;Rn-1Rn,DEC direct ;direct-1direct,DEC Ri ;Ri-1Ri,DEC A ;A-1A,这组指令的功能是将工作存放器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数和累加器A的内容减1,相减的结果仍存放在原单元中。,这类指令不影响各个标志位。,第三章 80C51单片机的指令系统,需要注意:执行对并行I/O口的输出内容减1操作,是将该口输出锁存器的内容读出并减1,再写入锁存器,而不是对该输出引脚上的内容进行减1操作。,例如:设R0=7FH,7EH=00H,7FH=40H。,执行指令为,DEC R0 ;7FH-1=40H-1=3FH7FH,DEC R0 ;R0-1=7FH-1=7EH R0,DEC R0;7EH-1=00H-1=0FFH 7EH,执行结果为 R0=7EH,7EH=0FFH,7FH=3FH。,第三章 80C51单片机的指令系统,3 乘法指令,乘法指令的助记符为MUL,,只有1条指令: MUL AB,乘法指令的功能是将A和B中两个无符号8位二进制数相乘,所得的16位积的低8位存于A中,高8位存于B中。如果乘积大于255时,即高位B不为0时,OV置1;否那么,OV置0,CY总是清0的。,第三章 80C51单片机的指令系统,例如: 设A=50H80,B=0A0H160。,执行指令为 MUL AB,执行结果为 乘积3200H12800,A=00H,B=32H,OV=1,CY=0。,4 除法指令,除法指令的助记符为DIV,只有1条指令: DIV AB,除法指令的功能是将A中无符号8位二进制数除以B中的无符号8位二进制数,所得商的二进制数局部存于A,余数局部存于B中,并将CY和OV置0。当除数B=0时,结果不定,那么OV置1。但CY总是清0的。,第三章 80C51单片机的指令系统,例如: 设A=0FBH251,B=12H18。,执行指令为 DIV AB,执行结果为 A=0DH商13,B=11H余数17,OV=0,CY=0。,算术运算类指令汇总见附录中附表3。,第三章 80C51单片机的指令系统,3.3.3 逻辑运算类指令,逻辑运算类指令包括:与、或、异或、去除、求反、移位等操作,共有25条指令。,按参与运算的操作数的个数可分为:单操作数逻辑运算和双操作数逻辑运算两类。,1 单操作数逻辑运算指令,单操作数逻辑运算指令的操作对象都是累加器A,包括:清0、取反、循环左移、带进位循环左移、循环右移、带进位循环右移和半字节互换指令,共有7条。,第三章 80C51单片机的指令系统,(1)累加器清0指令:CLR A 对进行累加器清0。此操作不影响标志位。 例如: 设A= 44H,执行CLR A指令,执行结果为 A= 00H。,(2) 累加器取反指令:CPL A对进行累加器的内容逐位取反,结果仍存在A中。此操作不影响标志位。例如:设A= 21H,执行CPL A指令,执行结果为 A= 0DEH。,第三章 80C51单片机的指令系统,(3) 循环右移指令:RR A它是将累加器的内容逐位循环右移一位,并且a0的内容移到a7,见图3-8(a)所示。此操作不影响标志位。例如:,设A=0A6H10100110B,,执行RR A指令,,执行结果为 A= 53H01010011B。,第三章 80C51单片机的指令系统,(4)带进位循环右移指令:RRC A,它是将累加器的内容和进位位一起循环右移一位,并且a0移入进位位CY,CY的内容移到a7,见图3-8(b)所示。此操作不影响CY之外的标志位。,例如:设A=0B4H10110100B,CY=1,,执行RRC A指令,,执行结果为A=0DAH11011010B,CY=0,第三章 80C51单片机的指令系统,图3-8循环移位指令示意图,第三章 80C51单片机的指令系统,(5)循环左移指令:,RL A,它是将累加器的内容逐位循环左移一位,并且a7的内容移到a0,见图3-8(c)所示。此操作不影响标志位。,例如:设A=3AH00111010B,执行RL A指令,,执行结果为A= 74H01110100B。,第三章 80C51单片机的指令系统,(6)带进位循环左移指令:RLC A,它是将累加器的内容和进位位一起循环左移一位,并且a7移入进位位CY,CY的内容移到a0,见图3-8(d)所示。,此操作不影响CY之外的标志位。,例如:,设A=3AH00111010B,CY=1,,执行RLC A指令,,执行结果为A= 75H01110101B,CY=0,第三章 80C51单片机的指令系统,(7)累加器半字节互换指令:SWAP A,SWAP指令是将累加器A的低半字节a3a0内容与高半字节a7a4内容互换,,见图3-9所示。此操作不影响标志位。,图3-9累加器半字节互换指令示意图,第三章 80C51单片机的指令系统,例如:,设(A)=36H(00110110B) ,,执行 SWAP A指令,,执行结果为(A)=63H(01100011B)。,2 双操作数逻辑运算指令,双操作数逻辑运算指令包括:ANL逻辑“与、ORL逻辑“或及XOR逻辑“异或三类操作,共18条指令。,在指令中包含有两个操作数:,第一操作数 A,direct,第二操作数 A,Rn,direct,#data,Ri,两个操作数之间的配合关系如表3-5 所示,第三章 80C51单片机的指令系统,表3-5 两个操作数之间的配合关系,第一,操作数,第 二 操 作 数,A,Rn,direct,Ri,#data,A,Adirect,第三章 80C51单片机的指令系统,这组指令的特点为:, 两个操作数的ANL、ORL及XOR对于8位是逐位进行的;, 两个操作数的逻辑运算结果存在第一操作数中;, 假设是对口的操作,即为“读改写;, 操作不影响标志位。,(1)逻辑“与运算指令,这组指令的助记符为ANL,共有6条指令:,ANL A,Rn;AARn,ANL A,direct ;AAdirect,第三章 80C51单片机的指令系统,ANL A,Ri ;AARi,ANL A, #data ;AA #data,ANL direct,A ;directdirectA,ANL direct, #data;(directdirect #data,例如: 设A= 0A3H1010 0011B,,R0= 0AAH1010 1010B。,执行指令为 ANL A,Rn:,执行结果为 A= 0A2H1010 0010B。,逻辑“与运算指令用做去除。,第三章 80C51单片机的指令系统,(2)逻辑“或运算指令,这组指令的助记符为ORL,共有6条指令:,ORL A,Rn ;AARn,ORL A,direct ;AAdirect,ORL A,Ri ;AARi,ORL A, #data ;AA#data,ORL direct,A ;directdirectA,第三章 80C51单片机的指令系统,ORL direct, #data;directdirect#data,例如: 设A= 0A3H1010 0011B,R0= 045H0100 0101B。,执行指令为 ORL A,R0,执行结果为 A= 0E7H1110 0111B。,逻辑“或运算指令用做置位。,(3)逻辑“异或运算指令这组指令的助记符为XRL,共有6条指令:,第三章 80C51单片机的指令系统,XRL A,Rn ;AARn,XRL A,direct ;AA direct,XRL A,Ri ;AA Ri,XRL A, #data ;AA #data,XRL direct,A ;directdirect A,XRL direct, #datadirectdirect #data,例如: 设A= 0A3H1010 0011B,R0= 045H0100 0101B。,执行指令为,XRL A,R0,第三章 80C51单片机的指令系统,执行结果为 A= 0E6H1110 0110B。逻辑运算类指令汇总见附录中附表4。,控制转移类指令,为了适应复杂的控制系统的需要,80C51设有丰富的控制转
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!