n第3章 80C51单片机的指令系统_第1页
n第3章 80C51单片机的指令系统_第2页
n第3章 80C51单片机的指令系统_第3页
n第3章 80C51单片机的指令系统_第4页
n第3章 80C51单片机的指令系统_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 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条); 布尔操作(位)

2、类指令(17条)。第三章 80C51单片机的指令系统 本章将分类介绍这五类指令,并在书后以附录形式逐条列出。指令格式 指令的表示方法称之为指令格式,其内容包括指令的长度和指令内部信息的安排等。一条指令通常由操作码和操作数两局部组成。操作码是用来规定指令所完成的操作的,而操作数那么表示操作的对象。操作数可能是一个具体的数据,也可能是指出取得数据的地址或符号。单片机由于字长短,因此,指令都是不定长的即变长指令。在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。第三章 80C51单片机的指令系统 单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。在80C51系列的指令

3、系统中,共有49条单字节指令。 双字节指令:双字节指令包括两个字节。其中一个字节为操作码,另一个字节是操作数。在80C51系列的指令系统中,共有45条双字节指令。第三章 80C51单片机的指令系统 三字节指令:在三字节指令中,操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能是地址。在80C51系列的指令系统中,共有17条三字节指令。指令系统中使用的符号 在说明和使用80C51系列的指令时,经常使用一些符号。下面将所使用的一些符号的意义作一简单说明。Rn 当前存放器组的8个通用存放器R0R7,所以n=07。第三章 80C51单片机的指令系统Ri 可用作间接寻址的存放器,只能是R

4、0 、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

5、 进位标志位,是布尔处理机中的累加器,也称之为累加位。 间址存放器的前缀标志。/ 位地址的前缀标志,表示对该位操作数取反。() 某存放器或某单元的内容。() 由寻址的单元中的内容。 箭头左边的内容被箭头右边的内容所取代。第三章 80C51单片机的指令系统3.2寻址方式和寻址空间 执行任何一条指令都需要使用操作数。寻址方式就是在指令中用于说明操作数所在地址的方法。 根据指令操作的需要,计算机有多种寻址方式。总的来说,寻址方式越多,计算机的功能就越强,灵活性越大,指令系统也就愈加复杂。因此在设定寻址方式时,应考虑到需要和可能。80C51系列单片机指令系统中共有以下7种寻址方式。第三章 80C51单

6、片机的指令系统 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

7、 DPTR,#1556H示意图第三章 80C51单片机的指令系统2 直接寻址 直接寻址是指在指令中直接给出操作数单元的地址。例如:指令 MOV A,3AH图3-3“MOV A,3AH示意图第三章 80C51单片机的指令系统 其功能是把片内RAM中 3AH单元内的数据传送给累加器A,如图3-3所示。 直接寻址方式只能给出8位地址,因此,这种寻址方式的寻址范围只限于片内RAM,具体地说:1 低128单元,在指令中直接以单元地址形式给出。第三章 80C51单片机的指令系统2 特殊功能存放器,这时除可以单元地址形式给出外,还可以存放器符号形式给出。虽然特殊功能存放器可以使用符号标志,但在指令代码中还是

8、按地址进行编码的。 应当说明的是,直接寻址是访问特殊功能存放器的惟一方法。第三章 80C51单片机的指令系统3 存放器寻址 存放器寻址是指在指令中将指定存放器的内容作为操作数。因此指定了存放器就能得到了操作数。 存放器寻址方式中,用符号名称来表示存放器。例如:指令 INC R0 其功能是把存放器R0的内容加 1,再送回R0中。由于操作数在R0中,指定了R0,也就得到了操作数,如图3-4所示。第三章 80C51单片机的指令系统图3-4“INC R0示意图第三章 80C51单片机的指令系统存放器寻址方式的寻址范围包括:1四个存放器组共32个通用存放器。但在指令中只能使用当前存放器组。因此在使用前要

9、通过指定PSW中的RS1、RS0,以选择使用的当前存放器组。(2) 局部特殊功能存放器。例如累加器A、AB存放器对以及数据指针DPTR。第三章 80C51单片机的指令系统4 存放器间接寻址 存放器间接寻址是指在指令中要到存放器的内容所指的地址去取操作数。可以看出,在存放器寻址方式中,存放器中存放的是操作数;而在存放器间接寻址方式中,存放器中存放的那么是操作数的地址。这就是说,指令的操作数是通过存放器间接得到的,因此,称为存放器间接寻址。 存放器间接寻址也需以存放器符号名称的形式表示。为了区别存放器寻址和存放器间接寻址,在存放器间接寻址中,应在存放器的名称前面加前缀“。 第三章 80C51单片机

10、的指令系统 假定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低

11、256单元:除可使用DPTR作为间址存放器外,也可使用R0或R1作间址存放器。例如:MOVX A,R0,即把R0指定的片外RAM单元的内容送累加器A。第三章 80C51单片机的指令系统(4) 堆栈区:堆栈操作指令PUSH和POP 也应算作是存放器间接寻址,即以堆栈指针(SP)作间址存放器的间接寻址方式。5 相对寻址 相对寻址是指在指令中给出的操作数为程序转移的偏移量。相对寻址方式是为实现程序的相对转移而设立的,为相对转移指令所采用。第三章 80C51单片机的指令系统 在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel表示,把PC的当前值加上偏移量就构成了程序转移的

12、目的地址。而PC的当前值是指执行完转移指令后的PC值,即转移指令的PC值加上它的字节数。因此转移的目的地址可用如下公式表示: 目的地址= 转移指令所在地址+转移指令字节数+rel第三章 80C51单片机的指令系统 在80C51系列单片机的指令系统中,有许多条相对转移指令。这些指令多数均为两字节指令,只有个别的是三字节的指令。偏移量rel是一个带符号的8位二进制补码数,所能表示的数的范围是128+127。因此以相对转移指令的所在地址为基点,向前最大可转移127+转移指令字节数)个单元地址,向后最大可转移128转移指令字节数个单元地址。 例如:指令 JC 80H第三章 80C51单片机的指令系统

13、表示假设进位位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作变址存

14、放器,以两者内容相加形成的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单片机的指令系统 对80C51系列的指令系统中的变址寻址指令有如下特点:(1)变址寻址方

15、式只能对程序存储器进行寻址,或者说是专门针对程序存储器的寻址方式; 变址寻址指令只有三条:MOVC A,A+DPTRMOVC A, A+PCJMP A+DPTR其中,前两条是程序存储器读指令,后一条是无条件转移指令;第三章 80C51单片机的指令系统(3)尽管变址寻址方式复杂,但这三条指令却都是单字节指令;(4)变址寻址方式用于查表操作,还可用于散转操作。7 位寻址 80C51系列单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。位寻址的寻址范围:第三章 80C51单片机的指令系统(1)片内RAM中的位寻址区 片内RAM中的单元地址20H2FH,共16个单元128位,为位寻址

16、区,位地址是0H7FH。对这128个位的寻址使用直接位地址表示。例如: MOV C,2BH指令的功能是把位寻址区的2BH位状态送累加位C。第三章 80C51单片机的指令系统(2) 可位寻址的特殊功能存放器位 可供位寻址的特殊功能存放器共有11个,实有寻址位83位。对这些寻址位在指令中有如下4种表示方法: 直接使用位地址表示方法。 单元地址加位的表示方法。例如88H单元的位5,那么表示为88H.5。 特殊功能存放器符号加位的表示方法。例如PSW存放器的位5,可表示为PSW.5。 位名称表示方法,特殊功能存放器中的一些寻址位是有名称的。例如PSW存放器位5为F0标志位,那么可使用F0表示该位。 第

17、三章 80C51单片机的指令系统 一个寻址位有多种表示方法,初看起来似乎是复杂,实际上将为程序设计带来方便。对于指令中的操作数,因为指令操作常伴有从右向左传送数据的内容,所以常把左边操作数称为目的操作数,而右边操作数称为源操作数。上面所讲的各种寻址方式都是针对源操作数的,实际上,目的操作数也有寻址的问题。 例如:指令 MOV 45H,R1 其源操作数是存放器寻址方式,而目的操作数那么是直接寻址方式。上述指令的功能是,把按存放器寻址取出的R1内容,再以直接寻址方式存放于内部RAM的45H单元中。第三章 80C51单片机的指令系统 总的来说,源操作数的寻址方式多,而目的操作数的寻址方式较少,只有存

18、放器寻址、直接寻址、存放器间接寻址和位寻址四种方式。因此,知道了源操作数的寻址方式,也就不难了解目的操作数的寻址问题了。 以上介绍了80C51指令系统的7种寻址方式,概括起来如表3-1所列。 第三章 80C51单片机的指令系统 表3-180C51中的寻址方式和寻址空间序号 寻址方式 使用的变量 寻址空间1 立即寻址 程序存储器2 直接寻址 片内RAM低128 B 特殊功能存放器3 存放器寻址 R0R7、A、B、 DPTR、CY4 存放器间接寻址 R0、R1、SP 片内RAM R0、R1、DPTR 片外RAM5 相对寻址 PC+偏移量 程序存储器6 变址寻址 A+PC、A+DPTR 程序存储器7

19、 位寻址 片内RAM中的位寻址区 可以位寻址的特殊功能存放器位第三章 80C51单片机的指令系统3.3 指令系统3.3.1 数据传送类指令 80C51具有丰富的数据传送指令,能实现多种数据的传送操作。数据传送指令共有28条。数据传送指令按功能又可分为:一般传送指令、目的地址传送指令、累加器传送指令和栈操作指令。 数据传送指令特点是:第三章 80C51单片机的指令系统 可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到片内RAM单元中而不必经过累加器A或工作存放器Rn,这样可以大大提高传送速度,缓解累加器A的瓶颈效应。 用R0和R1存放器间址访问片外数据存储器256个字节中

20、的任一字节单元;用DPTR的16位数据指针间址访问全部64 KB片外数据存储器地址空间中的任何一个单元。第三章 80C51单片机的指令系统 累加器A能与选定的Rn中任一个存放器寻扯;直接寻址片内RAM中的任一单元;特殊功能存放器之间进行一个字节的数据传送;片内RAM单元之间进行低半字节的数据交换。 能用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A中。这为编程翻译算法提供了方便。第三章 80C51单片机的指令系统1一般传送指令 一般传送指令共有15条,这类传送指令的格式为: MOV , 它的功能是把源字节的内容送到目的字节,而源字节的内容不变。操作

21、属于拷贝性质,不属于搬家性质。 源操作数可以有: 累加器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一般传送指令传送数据关系 源 操 作 数ARndirectRi#data目的操作数 ARndirectRi第三章 80C51单片机的指令系统 这类指令是以MOV为其助记符的。从表上可以看出,以目的操作数

22、为准,可将一般传送指令分为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中,由于可以进行直接地址之间的数据传送,极大地减轻了累

23、加器的负担,大大地缓解了拥堵现象。第三章 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)(R

24、n)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个地址单元很多是没有定义的。对于无定义的单元进行读

25、写时,读出的为不定数,而写入的数将被丧失。第三章 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

26、和R1的内容所指的内部RAM中的存储单元。源操作数有存放器寻址、直接寻址和立即寻址等寻址方式。第三章 80C51单片机的指令系统 间接寻址存放器Ri由操作码字节的最低位来选定是R0还是R1存放器,间址是以Ri的内容作为操作数的地址来进行寻址的。也就是说,Ri的内容并不是操作数而是操作数的地址,而此地址所对应的存储单元内容才是真正的操作数。 直接寻址direct单元在编程时就巳明确,而间接寻址单元是在程序进行中明确的,间接寻址空间和直接寻址空间范围相同,均为0255个单元地址。 立即数#data为一常数,它是不带符号的8位二进制数。在编程中必须注意的是直接地址direct和立即数#data均以数

27、据形式出现,但两者的含义是不相同的,故在指令中必须用“#作为立即数的前缀以与直接地址相区别。第三章 80C51单片机的指令系统 例如: MOV A,5EH ;表示片内RAM中的5EH 单元 内容送A,这里5EH为直接地址 MOV A,#5EH ;表示把立即数5EH送A MOV 5EH,#5EH ; 这是一条3字节指令,表示把立即数5EH送到片内RAM中的5EH地址单元中去MOV 5EH,4EH ;这是一条3字节指令,表示把4EH单元的内容送到5EH单元中去。;这是片内数据存储单元中的直接地址单元数据之间的直接传送第三章 80C51单片机的指令系统2 目的地址传送指令 MOV DPTR,#dat

28、a16 ; (DPTR)#data16 这是80C51中惟一的一条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与源操作

29、数的内容互换。源操作数有存放器寻址、直接寻址和存放器间接寻址等寻址方式。操作码分别为C5HCFH。第三章 80C51单片机的指令系统 例如:设 (R0)=30H,(A)=3FH,片内 RAM中(30H)=45H。执行指令为 XCH A,R0执行结果为 (A)=45H,30H=3FH。(2)半字节交换指令XCHD组,只有1条指令: XCHD A,RiXCHD指令是将Ri间接寻址单元的低4位内容与累加器A的低4位内容互换,而它们的高4位内容均不变。此指令不影响标志位。第三章 80C51单片机的指令系统 例如: 设(R0)=20H,(A)=36H(00110110B),内部RAM中(20H)=75H

30、,(01110101B)。执行指令为 XCHD A,R0执行结果为 (20H)=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位地址和数据均由

31、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与程序存储器传

32、送指令MOVC组或称查表指令,共有2条指令: MOVC A,A+PC MOVC A,A+DPTR 这两条指令的功能均是从程序存储器中读取数据,执行过程相同,其差异是基址不同,因此适用范围也不同。第三章 80C51单片机的指令系统4 栈操作指令组这组指令共有2条指令:PUSH directPOP direct入栈PUSH操作指令,又称“压栈操作。指令执行后栈指针(SP)+1指向栈顶上一个空单元,将直接地址(direct)单元内容送入SP所指示的堆栈单元。此操作不影响标志位。第三章 80C51单片机的指令系统 例如: 中断响应时(SP)=09H,DPTR的内容为0123H,执行入栈指令其结果怎样?

33、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单元中的内容分别为2

34、0H,23H,01H,执行以下指令的结果怎样?第三章 80C51单片机的指令系统 POP DPH ;(SP)=(32H)=01HDPH ;(SP)-1=32H-1=31HSPPOP DPL ;(SP)=(31H)=23HDPL ;(SP)-1=31H-1=30HSPPOP SP ;(SP)-1=2FHSP ;(SP)=(30H)=20HSP执行结果为 (DPTR)=0123H,(SP)=20H。第三章 80C51单片机的指令系统 以上第三条指令为特殊情况,先执行 (SP)-1=2FH,后装入由栈顶退出的值,所以执行后(SP)=20H。 数据传送类指令汇总见附录中附表2。第三章 80C51单片机

35、的指令系统算术运算类指令 算术运算类指令都是通过算术逻辑运算单元ALU进行数据运算处理的指令。它包括各种算术操作,其中有加、减、乘、除四那么运算指令共有24条。80C51单片机还有带借位减法、比较指令。这些运算指令,大大加强了80C51的运算能力。 除了加1和减1指令之外,算术运算结果将使进位标志CY、半进位标志AC、溢出标志OV置位或复位。 算术运算类指令中的源操作数与加1、减1指令中的源操作对象见表3-3及表3-4。 第三章 80C51单片机的指令系统 表3-3 算术运算类指令中的源操作数源 操 作 数助记符 BRnDirectRi#dataDPTRADDADDCSUBBMUL DIV第三

36、章 80C51单片机的指令系统表34 加1和减1指令中的源操作对象助记符ARnDirectRiDPTRINCDEC第三章 80C51单片机的指令系统1 加法指令 加法类指令共14条,包括加法、带进位的加法、加1以及二十进制调整4组指令。(1)加法指令这组指令的助记符为ADD,共有4条指令: ADD A,Rn ;A+RnAADD A,direct ;A+directA ADD A,Ri ;A+RnA ADD A,#data ;A+#data A第三章 80C51单片机的指令系统 这组指令的源操作数为Rn、direct、Ri或立即数,而目的操作数为累加器A中的内容。这组指令的功能是将工作存放器Rn

37、、片内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单片机的指

38、令系统(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标志置位,否那

39、么为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+1INC Ri ;RiRi+1INC A ;AA+1INC DPTR ;DPTRDPTR+1 这组指令的功能是将工作存放器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数、累加器A和数据指针DPTR的内容加1,相加的结果仍存放在原单元中。 这类指令不影响各个标志位。

40、第三章 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

41、)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

42、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位中有一

43、位需借位而另一位不借位,那么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 ;dire

44、ct-1directDEC 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 DE

45、C 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 除法指令

46、 除法指令的助记符为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条

47、指令。 按参与运算的操作数的个数可分为:单操作数逻辑运算和双操作数逻辑运算两类。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。第三章

48、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

49、=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,执行RL

50、C A指令,执行结果为A= 75H01110101B,CY=0第三章 80C51单片机的指令系统(7)累加器半字节互换指令:SWAP ASWAP指令是将累加器A的低半字节a3a0内容与高半字节a7a4内容互换, 见图3-9所示。此操作不影响标志位。图3-9累加器半字节互换指令示意图第三章 80C51单片机的指令系统例如: 设(A)=36H(00110110B) ,执行 SWAP A指令,执行结果为(A)=63H(01100011B)。2 双操作数逻辑运算指令 双操作数逻辑运算指令包括:ANL逻辑“与、ORL逻辑“或及XOR逻辑“异或三类操作,共18条指令。 在指令中包含有两个操作数:第一操作数

51、 A,direct 第二操作数 A,Rn,direct,#data,Ri 两个操作数之间的配合关系如表3-5 所示第三章 80C51单片机的指令系统表3-5 两个操作数之间的配合关系第一操作数 第 二 操 作 数ARndirectRi#dataAAdirect第三章 80C51单片机的指令系统 这组指令的特点为: 两个操作数的ANL、ORL及XOR对于8位是逐位进行的; 两个操作数的逻辑运算结果存在第一操作数中; 假设是对口的操作,即为“读改写; 操作不影响标志位。(1)逻辑“与运算指令 这组指令的助记符为ANL,共有6条指令: ANL A,Rn;AARn ANL A,direct ;AAdi

52、rect 第三章 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 ;AA

53、direct ORL A,Ri ;AARi ORL A, #data ;AA#dataORL 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 di

54、rect 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设有丰富的控制转移指令。控制转移指令共有17条,可分为:无条件转移、调用和返回、条件转移、循环转移

55、以及空操作指令。第三章 80C51单片机的指令系统1 无条件转移指令这类指令共有4条: SJMP rel AJMP addr11 LJMP addr16 JMP A+DPTR 这类指令的功能是程序无条件地转移到各自指定的目标地址去执行,不同的指令形成的目标地址不同。第三章 80C51单片机的指令系统(1)相对转移SJMP指令:其目标地址是由PC程序计数器和指令的第二字节带符号的相对地址相加而成的。指令可转向指令前128 B或指令后127 B。例如: 设PC= 0101H,转入地址为标号RELADR所指的单元0123H,因此rel= 0123H0101H+2= 20H 第三章 80C51单片机的

56、指令系统执行指令为 SJMP RELADR执行结果为 PC+2+rel= 0101H+2+20H=0123H所以,程序转向0123H单元执行。(2) 短转移AJMP指令: 其提供11位地址,目标地址由指令第一字节的高三位a10a8和指令第二字节的a7a0所组成。因此,程序的目标地址必须包含AJMP指令后第一条指令的第一个字节在内的2 KB范围内。 第三章 80C51单片机的指令系统例如:设PC= 0456H,标号JMPADR所指的单元0123H。 执行指令为 AJMP JMPADR执行结果为PC=0123H所以,程序转向0123H单元执行。(3) 长转移LJMP指令:其提供16位地址,目标地址

57、由指令第二字节和第三字节组成。因此,程序转向的目标地址可以包含程序存储器的整个64 KB空间。第三章 80C51单片机的指令系统例如: 设PC= 0123H,标号JMPADR所指的单元3456H。执行指令为 LJMP JMPADR执行结果为 PC=3456H所以,程序转向3456H单元执行。(4) 间接转移JMP指令:其目标地址是将累加器A中的8位无符号数与数据指针DPTR的内容相加而得。相加运算不影响累加器A和数据指针DPTR的原内容。假设相加的结果大于64 KB,那么从程序存储器的零地址往下延续。例如:第三章 80C51单片机的指令系统设A=5,DPTR=4567H。执行指令为 JMP A

58、+DPTR执行结果为PC=A+DPTR=4567H+5H= 456CH所以,程序转向456CH单元执行。 这里请注意,这4条指令的执行均不影响标志位。2 调用和返回指令这类指令共有4条:ACALL addr11 LCALL addr16 RET RETI第三章 80C51单片机的指令系统(1)绝对调用ACALL指令: 其无条件地调用首址为addr11处的子程序。执行时,把PC加2以获得下一条指令的地址,将这16位的地址压进堆栈先PCL,后PCH,同时栈指针加2。然后将指令提供的11位目标地址,送入PC10PC0,而PC15PC11的值不变,程序转向子程序的首地址开始执行。目标地址由指令第一字节

59、的高三位和指令第二字节的所组成。所以,所调用的子程序的首地址必须与ACALL后面指令的第一个字节在同一个2 KB区域内。 本指令的操作不影响标志位。 第三章 80C51单片机的指令系统例如: 设SP=60H,PC= 0123H,子程序SUBRTN的首地址为0456H。 执行指令为 ACALL SUBRTN执行结果为 PC+2=0123H+2=0125HPC将PC压入堆栈:25H压入SP+1=61H,01H压入SP+1=62H,此时SP=62H。第三章 80C51单片机的指令系统(2) 长调用LCALL指令:其无条件地调用首址为addr16处的子程序。执行时,把PC加3以获得下一条指令的地址,将

60、这16位的地址压进堆栈先PCL,后PCH,同时栈指针加2。然后将指令第2和第3字节所提供的16位目标地址,送入PC15PC0,程序转向子程序的首地址开始执行。所调用的子程序的首地址可以在64 KB范围内。本指令的操作不影响标志位。 例如: 第三章 80C51单片机的指令系统设SP=60H,PC= 0123H,子程序SUBRTN的首地址为0456H。 执行指令为 LCALL SUBRTN执行结果为 PC+3=0123H+3=0126HPC将PC压入堆栈:26H压入SP+1=61H,01H压入SP+1=62H,此时SP=62H。第三章 80C51单片机的指令系统(3) 子程序返回RET指令: 其执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论