1、单片机原理与接口技术 电子教案 重庆工商职业学院,第三章 MCS-51 单片机指令系统,内容提要本章主要讲述MCS-51指令的寻址方式以及各类指令的格式、功能和使用等,并辅以简单的应用举例。在附录A中,把全部指令按字母顺序列出,供使用时查阅。学习要求熟练掌握各种寻址方式,理解常用指令的功能和使用,一般了解常用指令的特点。,3.1 MCS-51单片机指令的寻址方式,1.寄存器寻址方式,以通用寄存器的内容为操作数的寻址方式。通用寄存器指 A、B 、DPTR以及R0R7 。例如:CLR A ;A0INC DPTR ;DPTRDPTR+1ADD R5,# 20H ;R5#20H+R5,3.1 MCS-
2、51单片机指令的寻址方式,2.直接寻址 方式,指令中直接给出操作数地址的寻址方式。能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。例如:MOV A,30H是把内部RAM 30H单元中的内容传送给累加器A,30H为直接给出的内部RAM的地址。,3.1 MCS-51单片机指令的寻址方式,3.寄存器间接寻址方式,以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。例如: MOV A,R0是把R0寄存器指向地址单元
3、中的内容送到累加器A中。假如R0=#56H,那么是将56H单元中的数据送到累加器A中。,3.1 MCS-51单片机指令的寻址方式,4.立即寻址方式,指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。例如:MOV A,#60H ;A#60H MOV DPTR,#3400H ;DPTR#3400HMOV 30H,#40H ;30H单元#40H 执行上述三条指令后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。,3.1 MCS-51单片机指令的寻址方式,5.变址寻址方式,变址寻址是以DPTR或PC作为基址寄存器,以累加
4、器A作为变址寄存器,将两寄存器的内容相加形成16位地址形成操作数的实际地址。 例如: MOV A,A+DPTRMOVX A,A+PCJMP A+DPTR在这三条指令中,A作为偏移量寄存器,DPTR或PC作为变址寄存器,A作为无符号数与DPTR或PC的内容相加,得到访问的实际地址。其中前两条是程序存储器读指令,后一条是无条件转移指令,3.1 MCS-51单片机指令的寻址方式,6.位寻址方式,RAM中的20H2FH字节单元对应的位地址为00H7FH,特殊功能寄存器中的某些位也可进行为寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。例如:SETB 10H ;将10H位置1若2
5、2H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H。又如:MOV 32H,C ;32H进位位CORL C ,32H ;CC32H,3.1 MCS-51单片机指令的寻址方式,7.相对寻址方式,相对寻址方式是为了程序的相对转移而设计的。转移的目的地址可参见如下表达式: 目的地址=转移指令地址+转移指令字接数+偏移量例如:SJMP 08H ;PCPC+2+08H,3.2 MCS-51单片机指令介绍,一、指令的特点及格式,1.指令的特点指令执行时间快。指令短,约有一半的指令为单字节指令。用一条指令即可实现2个一字节的相乘或相除。具有丰富的位操作指令。 可直
6、接用传送指令实现端口的输入输出操作。,3.2 MCS-51单片机指令介绍,一、指令的特点及格式,2.指令的格式 汇编语言格式为:标号: 操作码助记符 目的操作数, 源操作数 ;注释,3.指令描述符号介绍 Rn当前选中的寄存器区中的8个工作寄存器R0R7(n=07)。 Ri当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。 direct8位的内部数据存储器单元中的地址。 #data包含在指令中的8位常数。 #data16包含在指令中的16位常数。,3.2 MCS-51单片机指令介绍,一、指令的特点及格式,3.指令描述符号介绍 addr1616位目的地址。 addr1111位目的地址。
7、 rel8位带符号的偏移字节,简称偏移量。 DPTR数据指针,可用作16位地址寄存器。 bit内部RAM或专用寄存器中的直接寻址位。 A累加器。 B专用寄存器,用于乘法和除法指令中。 C进位标志或进位位,或布尔处理机中的累加器。 间址寄存器或基址寄存器的前缀,如Ri,DPTR。 / 位操作数的前缀,表示对该位操作数取反,如/bit。 片内RAM的直接地址或寄存器。 ()由寻址的单元中的内容。箭头左边的内容被箭头右边的内容所代替。,3.2 MCS-51单片机指令介绍,二、指令的分类,按照指令的功能,可以把MSC-51的111条指令分成五类: 数据传送类指令 (29条) 算术运算类指令 (24条)
8、 逻辑操作类指令 (24条) 控制转移类指令 (17条) 位操作类指令 (17条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。,图3-1 MCS-51单片机片内数据传送图,3.2 MCS-51单片机指令介绍,三、数据传送类指令,MOV A,data ;(data)(A) 直接单元地址中的内容送到
9、累加器A MOV A,#data ;#data(A) 立即数送到累加器A中 MOV A,Rn ;(Rn)(A) Rn中的内容送到累加器A中 MOV A,Ri ;(Ri)(A) Ri内容指向的地址单元中的内容送到累加器A,以累加器A为目的操作数类指令(4条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,以寄存器Rn为目的操作数的指令(3条),这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式: MOV Rn,data ;(data)(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV Rn,#data ;#data(Rn) 立即数直接送
10、到寄存器Rn中 MOV Rn,A ;(A)(Rn) 累加器A中的内容送到寄存器Rn中,3.2 MCS-51单片机指令介绍,三、数据传送类指令,以直接地址为目的操作数的指令(5条),这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式: MOV data,data ;(data)(data) 直接地址单元中的内容送到直接地址单元 MOV data,#data ;#data(data) 立即数送到直接地址单元 MOV data,A ;(A)(data) 累加器A中的内容送到直接地址单元 MOV data,Rn ;(Rn)(da
11、ta) 寄存器Rn中的内容送到直接地址单元 MOV data,Ri ;(Ri)(data) 寄存器Ri中的内容指定的地址单元中数据送到直接地址单元,3.2 MCS-51单片机指令介绍,三、数据传送类指令,这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式: MOV Ri,data ;(data)(Ri) 直接地址单元中的内容送到以Ri中的内容为地址的RAM单元 MOV Ri,#data ;#data(Ri) 立即数送到以Ri中的内容为地址的RAM单元 MOV Ri,A ;(A)(Ri) 累加器A中的内容送到以Ri中的内容为地址的RAM单
12、元,以间接地址为目的操作数的指令(3条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式: MOVC A,A+DPTR ;(A)+(DPTR)(A) 表格地址单元中的内容送到累加器A中 MOVC A,A+PC ;(PC)+1(A),(A)+(PC)(A) 表格地址单元中的内容送到累加器A中,查表指令(2条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式: MOVX DPTR,A ;(A)(DPTR) 累加器中的内容送到数据指针指
13、向片外RAM地址中 MOVX A, DPTR ;(DPTR)(A) 数据指针指向片外RAM地址中的内容送到累加器A中 MOVX A, Ri ;(Ri)(A) 寄存器Ri指向片外RAM地址中的内容送到累加器A中 MOVX Ri,A ;(A)(Ri) 累加器中的内容送到寄存器Ri指向片外RAM地址中,累加器A与片外数据存储器RAM传送指令(4条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,这类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是
14、,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。PUSH data ;(SP)+1(SP),(data)(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中 POP data ;(SP)(data)(SP)-1(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作,堆栈操作类指令(2条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。 XCH A,R
15、n ;(A)(Rn)累加器与工作寄存器Rn中的内容互换 XCH A,Ri ;(A)(Ri)累加器与工作寄存器Ri所指的存储单元中的内容互换 XCH A,data ;(A)(data)累加器与直接地址单元中的内容互换 XCHD A,Ri ;(A3-0)(Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换 SWAP A ;(A3-0)(A7-4)累加器中的内容高低半字节互换,交换指令(5条),3.2 MCS-51单片机指令介绍,三、数据传送类指令,这条指令的功能是把16位常数送入数据指针寄存器。 MOV DPTR,#data16 ;#dataH(DPH),#dataL(DPL)
16、16位常数的高8位送到DPH,低8位送到DPL,16位数据传送指令(1条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,在单片机CPU内部集成了算术运算部件,除能完成加、减、乘、除运算外,还能完成加1运算、减1运算和十进制调整运算。MCS-51单片机算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算
17、。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。,3.2 MCS-51单片机指令介绍,四、算术运算类指令,这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。 ADD A,#data ;(A)+#data(A) 累加器A中的内容与立即数#data相加,结果存在A中 ADD A,data ;(A)+(data)(A) 累加器A中的内容与直接地址单元中的内容相加,结果存在A中 ADD A,Rn ;(A)+(Rn)(A) 累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中 ADD A,Ri ;(A)+(Ri)
18、(A) 累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中,不带进位的加法指令(4条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这4条指令除与1功能相同外,在进行加法运算时还需考虑进位问题。 ADDC A,data ;(A)+(data)+(A) 累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中 ADDC A,#data ;(A)+#data +(A) 累加器A中的内容与立即数连同进位位相加,结果存在A中 ADDC A,Rn ;(A)+Rn+(A) 累加器A中的内容与工作寄存器Rn中的内容、连同进位位相加,结果存在A中 ADDC A,Ri
19、;(A)+(Ri)+(C)(A) 累加器A中的内容与工作寄存器Ri指向地址单元中的内容、连同进位位相加,结果存在A中,带进位的加法指令(4条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。 这里对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。 SUBB A,data
20、 ;(A)-(data) - (C)(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中 SUBB A,#data ;(A)-#data -(C)(A) 累加器A中的内容与立即数、连同借位位相减,结果存在A中 SUBB A,Rn ;(A)-(Rn) -(C)(A) 累加器A中的内容与工作寄存器中的内容、连同借位位相减,结果存在A中 SUBB A,Ri ;(A)-(Ri) -(C)(A) 累加器A中的内容与工作寄存器Ri指向的地址单元中的内容、连同借位位相减,结果存在A中,带借位减法指令(4条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这个指令的作用是把累
21、加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个结果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。 MUL AB ;(A)(B)(A)和(B) 累加器A中的内容与寄存器B中的内容相乘,结果存在A、B中,乘法指令(1条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这个指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。除法运算总是使OV和进位标志位CY等于0。如果OV=1,表明寄存器B中的内容为00H,那么执行结果为不确定值,表示
22、除法有溢出。 DIV AB ;(A)(B)(A)和(B) 累加器A中的内容除以寄存器B中的内容,所得到的商存在累加器A,而余数存在寄存器B中。,除法指令(1条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这5条指令的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式: INC A ;(A)+1(A) 累加器A中的内容加1,结果存在A中 INC data ;(data)+1(data) 直接地址单元中的内容加1,结果送回原地址单元中 INC
23、 Ri ;(Ri)+1(Ri) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中 INC Rn ;(Rn)+1(Rn)寄存器Rn的内容加1,结果送回原地址单元中 INC DPTR ;(DPTR)+1(DPTR)数据指针的内容加1,结果送回数据指针中,加1指令(5条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,这组指令的作用是把所指的寄存器内容减1,结果送回原寄存器,若原寄存器的内容为00H,减1后即为FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是I/O口锁存器时,“读修改写”操作与加1指令类似。 DEC A ;(A)-1
24、(A)累加器A中的内容减1,结果送回累加器A中 DEC data ;(data)-1(data)直接地址单元中的内容减1,结果送回直接地址单元中 DEC Ri ;(Ri)-1(Ri)寄存器Ri指向的地址单元中的内容减1,结果送回原地址单元中 DEC Rn ;(Rn)-1(Rn)寄存器Rn中的内容减1,结果送回寄存器Rn中,减1指令(4条),3.2 MCS-51单片机指令介绍,四、算术运算类指令,在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。 DA A,十进制调整指令(1条),3.2 MCS-51单片机指令介绍,五、逻
25、辑运算及移位类指令,这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一起移位。 RL A ;累加器A中的内容左移一位 RR A ;累加器A中的内容右移一位 RLC A ;累加器A中的内容连同进位位CY左移一位 RRC A ;累加器A中的内容连同进位位CY右移一位,循环移位指令(4条),逻辑运算和移位指令共有25条,有与、或、异或、求反、左右移位、清0等逻辑操作,有直接、寄存器和寄存器间址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。,3.2 MCS-51单片机指令介绍,五、逻辑运算及移位类指令,SWAP A ; 累加器中的内容高低半字节互换,累加器半字节
26、交换指令(1条),CPL A ; 累加器中的内容按位取反,求反指令(1条),CLR A ; 0(A),累加器中的内容清0,清零指令(1条),3.2 MCS-51单片机指令介绍,五、逻辑运算及移位类指令,这组指令的作用是将两个单元中的内容执行逻辑与操作。如果直接地址是I/O地址,则为“读修改写”操作。 ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。 ANL data,#data ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。 ANL A,#data ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。 ANL A
27、,Rn ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。 ANL data,A ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。 ANL A,Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中,逻辑与操作指令(6条),3.2 MCS-51单片机指令介绍,五、逻辑运算及移位类指令,这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读修改写”操作。 ORL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。 ORL data,#d
28、ata ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。 ORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。 ORL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。 ORL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。 ORL A,Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中,逻辑或操作指令(6条),3.2 MCS-51单片机指令介绍,五、逻辑运算及移位类指令,这组指令的作用是将两个单元中的内容执行逻辑异或
29、操作。如果直接地址是I/O地址,则为“读修改写”操作。 XRL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。 XRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。 XRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。 XRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。 XRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。 XRL A,Ri ;累加器A的内容和工作寄存器Ri指
30、向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中。,逻辑异或操作指令(6条),3.2 MCS-51单片机指令介绍,六、控制转移类指令,控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响,3.2 MCS-51单片机指令介绍,这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝
31、对转移指令访问的程序存储器空间为11位地址2kB空间 LJMP addr16 ;addr16(PC),给程序计数器赋予新值(16位地址) AJMP addr11 ;(PC)+2(PC),addr11(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变 SJMP rel ;(PC)+ 2 + rel(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值 JMP A+DPTR ;(A)+ (DPTR)(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值,无条件转移指令(4条),六、控制转移类指令,3.2 MCS-51单片机指令介绍,程序可利用这组丰富
32、的指令根据当前的条件进行判断,看是否满足某种特定的条件,从而控制程序的转向。 JZ rel ; A=0,(PC)+ 2 + rel(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行 JNZ rel ; A0,(PC)+ 2 + rel(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行 CJNE A, data, rel ; A(data),(PC)+ 3 + rel(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行 CJNE A, #data, rel ; A#data,(PC)+ 3 + rel(P
33、C),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行,条件转移指令(8条),六、控制转移类指令,3.2 MCS-51单片机指令介绍,CJNE Rn, #data, rel ; A#data,(PC)+ 3 + rel(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行 CJNE Ri, #data, rel ; A#data,(PC)+ 3 + rel(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行 DJNZ Rn, rel ; (Rn)-1(Rn),(Rn)0,(PC)+ 2
34、 + rel(PC)工作寄存器Rn减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行 DJNZ data, rel ; (Rn)-1(Rn),(Rn)0,(PC)+ 2 + rel(PC)直接地址单元中的内容减1不等于0,则转移到偏移量所指向的地址,否则程序往下执行,条件转移指令(8条),六、控制转移类指令,3.2 MCS-51单片机指令介绍,子程序是为了便于程序编写,需要反复执行的一些程序,我们在编程时一般都把它们编写成子程序,当需要用它们时,就用一个调用命令使程序按调用的地址去执行,这就需要子程序的调用指令和返回指令。 LCALL addr16 ; 长调用指令,可在64kB空间调用
35、子程序。此时(PC)+ 3(PC),(SP)+ 1(SP),(PC7-0)(SP),(SP)+ 1(SP),(PC15-8)(SP),addr16(PC),即分别从堆栈中弹出调用子程序时压入的返回地址 ACALL addr11 ; 绝对调用指令,可在2kB空间调用子程序,此时(PC)+ 2(PC),(SP)+ 1(SP),(PC7-0)(SP),(SP)+ 1(SP),(PC15-8)(SP),addr11(PC10-0) RET ; 子程序返回指令。此时(SP)(PC15-8),(SP)- 1(SP),(SP)(PC7-0),(SP)- 1(SP) RETI ; 中断返回指令,除具有RET功
36、能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替,子程序调用指令(4条),六、控制转移类指令,3.2 MCS-51单片机指令介绍,这条指令将累加器中的内容清0。 NOP ; 这条指令除了使PC加1,消耗一个机器周期外,没有执行任何操作,可用于短时间的延时。,空操作指令(1条),六、控制转移类指令,3.2 MCS-51单片机指令介绍,七、位操作类指令,位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。 MOV C,bit ;bitCY,某位数据送CY MOV bit,C ;CYbit,CY数据送某位,位传送指令(2条),位处理功能是MCS-51系列单片机的一个重要
37、特征,这是出于实际应用需要而设置的。位变量也即开关变量,它是以位(bit)为单位进行操作的。 在物理结构上,MCS-51单片机有一个位处理机,它以进位标志做为累加位,以内部RAM可寻址的128个为存储位。,3.2 MCS-51单片机指令介绍,七、位操作类指令,这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。 CLR C ; 0CY,清CY CLR bit ; 0bit,清某一位 SETB C ; 1CY,置位CY SETB bit ; 1bit,置位某一位,位置位复位指令(4条),3.2 MCS-51单片机指令介绍,七、位操作类指令,位运算都是逻辑运算,有与、或、非三种指令,共六条。
38、 ANL C,bit ;(CY)(bit)CY ANL C,/bit ;(CY)( )CY ORL C,bit ;(CY)(bit)CY ORL C,/bit ;(CY)( )CY CPL C ;( )CY CPL bit ;( )bit,位运算指令(6条),3.2 MCS-51单片机指令介绍,七、位操作类指令,位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下: JC rel ; (CY)=1转移,(PC)+2+relPC,否则程序往下执行,(PC)+2PC。 JNC rel ; (CY)=0转移,(PC)+2+relPC,否则程序往下执行,(PC)+2PC。 JB bit, rel ; 位状态为1转移。 JNB bit, rel ; 位状态为0转移。JBC bit, rel ; 位状态为1转移,并使该位清“0”。 后三条指令都是三字节指令,如果条件满足,(PC)+3+relPC,否则程序往下执行,(PC)+3PC。,位控制转移指令(5条),