第一章 单片机基础知识(二)_第1页
第一章 单片机基础知识(二)_第2页
第一章 单片机基础知识(二)_第3页
第一章 单片机基础知识(二)_第4页
第一章 单片机基础知识(二)_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

1、1.4 8051指令系统1.4.1 寻址方式1.4.2 指令说明1.4.3 伪指令8051 指令系统 指令是指挥计算机执行某种操作的命令。 汇编语言指令用助记符表示。 一台计算机所有指令的集合,称为该计算机的指令系统,它是表征计算机性能的重要标志。每台计算机都有它自己特有的指令系统。 80C51汇编语言需用40多种助记符表征30多种指令功能。通过这些助记符,与指令中的源地址、目的地址组合成80C51的111条指令。 指令格式 MCS-51汇编语言指令格式如下: 标号:标号: 操作码操作码 操作数操作数 ;注释;注释 START:MOV A,30H ;A(30H)标号标号 标号是程序员根据编程需

2、要给指令设定的符号地址,可有可无;每个子程序的第一条语句都必须有标号; 由字母开头的字母数字序列,如LOOP,TIME1; 标号后必须用冒号; 在程序中,不可以重复使用。操作码操作码 操作码表示指令的操作种类,规定了指令的具体操作及实现的功能。是指令的助记符。 比如:比如:ADD(加操作),(加操作),MOV (数据的传送操作)。(数据的传送操作)。操作数操作数 操作数是指令的操作对象,表示参加运算的数据或数据的地址。操作数一般有以下几种形式: 没有操作数项,操作数隐含在操作码中,如RET指令; 只有一个操作数,如CPL A指令;第1个操作数与操作码之间用若干空格分隔; 有两个操作数,如MOV

3、 A,#00H指令,操作数之间以逗号相隔; 有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。注释注释 注释是对指令的解释说明,用以提高程序的可读性和维护性,一般说明指令或程序的功能 ;注释前必须以“;”和指令分开,注释在每条指令后都可以设有。 指令中符号的意义说明指令中符号的意义说明Rn 当前工作寄存器中的某一个,即R0R7; Ri R0或者R1Direct 单片机内部RAM低128字节中的某个字节地址, 或者是某个专用寄存器的名字;#data 8位(1字节)立即数#data16 16位(2字节)的立即数Addr16 16位目的地址,在LJMP和LCALL的指令中

4、采用Addr11 11位目的地址,只在AJMP和ACALL指令中采用Rel 相对转移指令中的偏移量。DPTR 数据指针(由DPH和DPL构成)Bit 内部RAM(包括专用寄存器)中可寻址位的地址或名字A 累加器ACCB B寄存器 间接寻址标志 / 加在位地址前,表示对该位状态取反(X) 某寄存器或某单元的内容(X) 由X间接寻址的单元中的内容 箭头右边的内容传递给箭头左边1.4.1 寻址方式1.1. 寄存器寻址寄存器寻址2.2. 直接寻址直接寻址3.3. 寄存器间接寻址寄存器间接寻址4.4. 立即寻址立即寻址5.5. 变址寻址变址寻址6.6. 相对寻址相对寻址7.7. 位寻址位寻址MCS-51

5、有7种不同的寻址方式:1.1.寄存器寻址寄存器寻址 寄存器寻址是对由指令选定的工作寄存器(R0R7)进行读/写。对累加器A、寄存器B、数据指针DPTR、位处理累加器CY等,也可当作寄存器方式寻址。 比如:比如: MOV A, R7 INC DPTR ADD A, R0 例如,设R7的内容为40H,则执行指令: MOV A,R7 R7MOV A , R7 A XX 40H40H2.2.直接寻址直接寻址直接寻址方式是由指令直接给出操作数地址。直接寻址方式可访问两种地址空间: 特殊功能寄存器地址空间,这是唯一能寻址特殊功能寄存器的寻址方式。 内部数据存储器RAM的007F地址空间。例如指令: MOV

6、 A, 62H MOV PSW, #20H 62HMOV A , 62H 55H XX A55H3.3.寄存器间接寻址寄存器间接寻址 寄存器间接寻址方式以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。 能够用于寄存器间接寻址的寄存器有:R0、R1、DPTR和PC。 间接寻址的存储器空间包括内部数据RAM和外部数据RAM。 如指令格式为:MOV A, R0MOVX A, R1MOVX A, DPTR 在指令形式中,对内部RAM还是对外部RAM寻址,区别在于对外部数据RAM的操作仅有数据传送类指令,且用MOVX的符号形式。以以R0作为间址寄存器方式:作为间址寄存器方式:MOV A , R

7、0以以DPTR作为间址寄存器方式:作为间址寄存器方式: MOVX A, DPTR55H AR055H取出取出地址地址78H78H3FFFH ADPTR3FFFH取出取出地址地址78H78H4.4.立即寻址立即寻址 立即寻址方式由指令直接给出操作数寻址。立即寻址方式由指令直接给出操作数寻址。 立即操作数用前面加有立即操作数用前面加有#号的号的8位或位或16位数来表示。位数来表示。“#”符号称为立即数符号。符号称为立即数符号。 例如指令:例如指令:MOV A, #40H MOV DPTR, #2CA5H MOV 30H, # 40H A XXMOV A , #40H40HMOV DPTR , #2

8、CA5H DPL DPH XX2CH XXA5H5.5.变址寻址变址寻址 基址寄存器加变址寄存器间接寻址方式,以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这二者内容之和为有效地址。例如:JMP ADPTR MOVC A,APC MOVC A,ADPTR 这种寻址方式特别适用于查表。DPTR为16位字长,可指向64KB的任何单元;APC可指向以PC当前值为起始地址的256B单元。指令:指令:MOVC A,A+DPTR 工作过程:工作过程:3055H相加相加=3055HADPTR3000H取出取出地址地址 A55H66H66H6.6.相对寻址相对寻址 相对寻址方式以

9、PC的当前值为基准,加上指令中给出的相对偏移量(rel)形成有效转移地址。相对偏移量是一个带符号的8位二进制数。主要用于实现程序的分支转移。 在跳转程序中有一种相对寻址方式,如: JZ relDJNZ R0,rel 例如执行指令:SJMP 08H程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H7.7.位寻址位寻址 位寻址方式对位地址中的内容作位操作的寻址。 由于单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址(两者统一编址,地址空间为00HFFH),因此位寻址只能对有位地址的这两个空间做寻址操作。 位寻址是一种直接寻址方式,由指令给出直接位地

10、址。但与直接寻址不同之处在于,位寻址只给出位地址,而不是字节地址。 例如:SETB 20H MOV 32H, C ORL C, 5AH 其中,C为进位位地址,而其他是直接位地址。CLR P1.0;将单片机的P1.0清“0”。SETB P1.0;将单片机的P1.0置“1”。P1.0X“0”0P1.0P1.0X“1”1P1.01.4.2 指令说明MCS-51单片机指令系统包括单片机指令系统包括111条指令条指令按功能可以划分为以下按功能可以划分为以下5类:类:数据传送和交换指令数据传送和交换指令(29条)条) 算术运算指令算术运算指令(24条)条)逻辑运算指令逻辑运算指令(24条)条)控制转移指令

11、控制转移指令(17条)条)位操作指令位操作指令(17条条)1. 数据传送和交换指令数据传送和交换指令 数据传送类指令共29条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。 可分为两类,一类为单纯的数据传送,另一类为数据交换。 源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址,目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。一、一、内部数据传送指令内部数据传送指令1)以累加器为目的的传送指令:)以累加器为目的的传送指令:MOV

12、 A, #data ; A data MOV A, direct ; A (direct)MOV A, Rn ; A(Rn)MOV A, Ri ; A(Ri) AXX A33H30H33H结果结果Eg:MOV A,30HEg:MOV A,#10H AXX30H10H结果结果10HAXXA33HR233H55H78H A78HR055H取出取出地址地址Eg:MOV A,R0Eg:MOV A,R2注意:在使用注意:在使用Ri进行间址寻址时,只能够使用进行间址寻址时,只能够使用R0和和R1。2)以通用寄存器)以通用寄存器Rn为目的的传送指令:为目的的传送指令:MOV Rn,A ; Rn (A)MOV

13、 Rn,direct ; Rn(direct)MOV Rn,#data ; Rn dataR2R2XX33HA33HEg:MOV R2,AEg:MOV R2,30HEg:MOV R2,#30HR2R2XX55H30H55HR2XXR230H30H3)以直接地址为目的的传送指令:)以直接地址为目的的传送指令: MOV direct ,#data ; direct data MOV direct1,direct2 ; direct1 (direct2) MOV direct,A ; direct (A) MOV direct ,Ri ; direct (Ri) MOV direct,Rn ; di

14、rect (Rn) Eg:MOV 30H,#33H 30H30HXX33H33H30H30HXX55H31H55HEg:MOV 30H,31HEg:MOV 30H,R0Eg:MOV 30H,AEg:MOV 30H,R3地址地址55H78H30H78HR0取出取出55H30H30H A33HXX33H30H30HR333HXX33H4)以通用寄存器间接地址为目的的传送指令:)以通用寄存器间接地址为目的的传送指令:MOV Ri,A ; (Ri) (A)MOV Ri,direct ; (Ri) (direct)MOV Ri,#data ; (Ri) dataEg:MOV R1,AEg:MOV R1,

15、30HEg:MOV R1,#30H55HAR1(地址地址)55H78H78H55H30HR1(地址地址)55H78H78H55H30HR1(地址地址)55H30H5)数据指针赋值指令)数据指针赋值指令当要对片外的RAM和I/O接口进行访问时,或进行查表操作时,通常要对DPTR赋值。指令为:MOV DPTR, #data16 Eg:将数据指针:将数据指针DPTR指向存于指向存于ROM中的表格首地址。中的表格首地址。 MOV DPTR,#TABLEDPTRDPTRXXXX2000H2000HEg:将数据指针:将数据指针DPTR指向外部指向外部RAM的的2000H单元。单元。 MOV DPTR,#2

16、000H6 6)堆栈操作指令)堆栈操作指令堆栈操作指令包含入栈(堆栈操作指令包含入栈(PUSH)和出栈()和出栈(POP)。在使用)。在使用堆栈之前要首先给堆栈指针堆栈之前要首先给堆栈指针SP赋值。赋值。指令格式:指令格式:PUSH direct POP direct注意:先入后出原则注意:先入后出原则程序举例:程序举例: MOV SP , #30H PUSH SBUF; SP (SP)+1, 31H(SBUF) PUSH 60H ; SP (SP)+1, 32H(60H) POP 60H ; 60H ( 32H), SP (SP)-1 POP SBUF;SBUF (31H), SP (SP)

17、-1(SP+1)栈底栈底 (SP+2)入栈入栈出栈出栈(SP)二、片外数据传递指令二、片外数据传递指令外部数据传送是指片外数据外部数据传送是指片外数据RAM和累加器和累加器A之间的相互数之间的相互数据传送。片外数据存储器只能使用寄存器间接寻址方式,据传送。片外数据存储器只能使用寄存器间接寻址方式,有有4条指令:条指令: MOVX A, DPTR ;A (DPTR)片外片外 MOVX A,Ri ;A (Ri)片外片外 MOVX DPTR,A ;(DPTR)片外片外(A) MOVX Ri,A ;(Ri)片外片外(A)v注意:注意:该指令用于在单片机和外部该指令用于在单片机和外部RAM、扩展、扩展I

18、/O的数据传送;的数据传送;使用使用Ri时,只能访问低时,只能访问低8位地址为位地址为00HFFH地址段;地址段;使用使用DPTR时,能访问时,能访问0000H FFFFH地址段。地址段。三、程序存储器数据传送指令(查表指令)三、程序存储器数据传送指令(查表指令) 从程序存储器读取数据,向累加器从程序存储器读取数据,向累加器A传送。指令格式:传送。指令格式: MOVC A, A+DPTR ;A (A)+(DPTR) MOVC A, A+PC ;A (A)+(PC)3055H相加相加=3055HA66HDPTR3000H取出取出地址地址 A55H66H Eg:MOV DPTR, #3000H M

19、OV A, #55H MOVC A, A+DPTR四、字节交换指令四、字节交换指令字节交换指令指内部字节交换指令指内部RAM中的某个单元和累加器中的某个单元和累加器A之间进之间进行数据交换,可以是整个字节,也可以是半个字节。包含行数据交换,可以是整个字节,也可以是半个字节。包含3种种交换方式:交换方式:1、整字节交换指令:、整字节交换指令: XCH A, Rn ; (A) (Rn) XCH A, direct ; (A) (direct) XCH A, Ri ; (A) (Ri)A内部内部RAM单元单元2、半字节交换指令、半字节交换指令将累加器将累加器A的低的低4位和位和R0或或R1的低的低4

20、位进行交换,各自的位进行交换,各自的高高4位保持不变。位保持不变。 XCHD A, Ri ; (A) 30 (Ri)30指令执行后指令执行后A0A1A2A3D4D5D6D7(Ri)D0D1D2D3A4A5A6A7AD0D1D2D3D4D5D6D7(Ri)A0A1A2A3A4A5A6A7A 执行指令前执行指令前3、累加器、累加器A高低半字节的交换指令高低半字节的交换指令 SWAP A执行前执行前A7A6A5A4A3A2A1A0执行后执行后A3A2A1A0A7A6A5A4例:例: 假设在执行指令之前(假设在执行指令之前(A)= 70H,则在指令执行完后,则在指令执行完后,(A)= 07H。执行前执

21、行前01110000执行后执行后000001112.2.算术运算指令算术运算指令 算术运算指令有加法、减法、乘法和除法四类,除加算术运算指令有加法、减法、乘法和除法四类,除加1和减和减1指令,其他所有的指令都将影响指令,其他所有的指令都将影响PSW的标志位。的标志位。一、不带进位的加法指令一、不带进位的加法指令ADD A,Rn ;A (A)+(Rn)ADD A, direct ;A (A)+(direct)ADD A, Ri ;A (A)+(Ri)ADD A, #data ;A (A)+data例:将内部例:将内部RAM中中40H和和41H单元的数相加,再把和送到单元的数相加,再把和送到42H

22、单元。单元。 MOV A, 40H ADD A, 41H MOV 42H, A加法运算对加法运算对PSW标志位的影响标志位的影响1、在上例中,如果运算结果超出、在上例中,如果运算结果超出FFH(255),将产生进),将产生进位位PSW的的CY位将被置位将被置1。2、若预先说明、若预先说明40H和和41H中放置的是有符号数,则在运算中放置的是有符号数,则在运算指令指令“ADD A,41H”执行后,还要检查执行后,还要检查PSW中溢出位中溢出位OV的的状态,如果状态,如果OV位为位为1,则运算结果错误。,则运算结果错误。溢出产生的条件:溢出产生的条件:在运算时,如果在运算时,如果D6D6位和位和D

23、7D7位中一个有进位而另一个无进位,位中一个有进位而另一个无进位,则则OV=1OV=1,溢出。,溢出。二、带进位的加法运算二、带进位的加法运算该类指令主要用于多字节的加法运算该类指令主要用于多字节的加法运算ADDC A,Rn ; A(A)+(Rn)+(CY)ADDC A, direct ; A (A)+(direct)+(CY)ADDC A, Ri ; A (A)+(Ri)+(CY)ADDC A, #data ;A (A)+data+(CY)v 如果加数和被加数是无符号数,则在计算后要注意是否如果加数和被加数是无符号数,则在计算后要注意是否产生进位。产生进位。v 如果加数和被加数是有符号数,则

24、在计算后要注意是否如果加数和被加数是有符号数,则在计算后要注意是否溢出,只要溢出,则运算结果错误;如果无溢出,则注意溢出,只要溢出,则运算结果错误;如果无溢出,则注意是否有进位。是否有进位。例:加数存放在内部例:加数存放在内部RAM的的41H(高位)和(高位)和40H(低(低位),被加数存放在位),被加数存放在43H(高位)和(高位)和42H(低位),将它(低位),将它们相加,和存放在们相加,和存放在46H44H中。中。程序:程序: CLR C MOV A, 40H ADD A, 42H MOV 44H,A MOV A, 41H ADDC A, 43H MOV 45H,A CLR A ADDC

25、 A, #00H MOV 46H,A三、加三、加1指令指令INC A ;A (A)+1INC Rn ;Rn (Rn)+1INC direct ; direct (direct)+1INC Ri ;(Ri) (Ri)+1INC DPTR ;DPTR (DPTR)+1注意:以上所有指令不会影响注意:以上所有指令不会影响PSW中的各个标志位。中的各个标志位。例:设例:设(A)=FFH,(R0)=25H,(26H)=3AH,(DPTR)=2000H执行程序:执行程序: INC A INC R0 INC R0 INC DPTR结果为:结果为:(A)=00H,(R0)=26H,(26H)=3BH,(DPT

26、R)=2001H四、减四、减1指令指令DEC A ;A(A)-1 DEC Rn ;Rn (Rn)-1 DEC direct ;direct (direct)-1 DEC Ri ;(Ri) (Ri)-1注意:减注意:减1指令也不会影响指令也不会影响PSW的各个标志位。的各个标志位。思考:设思考:设(A)=FFH,(R0)=27H,(26H)=3AH 执行程序:执行程序: DEC A DEC R0 DEC R0 结果结果(A)=_ ,(R0)=_ ,(26H)=_ 。 五、减法指令五、减法指令 SUBB A, Rn ;A (A)-(Rn)-(CY) SUBB A, direct ;A (A)-(d

27、irect)-(CY) SUBB A, Ri ;A (A)-(Ri)-(CY) SUBB A, #data ;A (A)-data-(CY)v如果减数和被减数是无符号数,则在计算后要注意是否如果减数和被减数是无符号数,则在计算后要注意是否产生借位。产生借位。v如果减数和被减数是有符号数,则在计算后要注意是否如果减数和被减数是有符号数,则在计算后要注意是否溢出,只要溢出,则运算结果错误;如果无溢出,则注意溢出,只要溢出,则运算结果错误;如果无溢出,则注意是否有借位。是否有借位。例:设(例:设(A)=C9H,(,(R2)=54H,(,(CY)=1,执行指令,执行指令SUBB A,R2 110010

28、01 01010100 - 1 01110100结果结果:(A)=74H,借位位借位位(CY)=0。六、乘法运算六、乘法运算 MUL AB 指令含义:将指令含义:将(A) (B),乘积的低位字节放在,乘积的低位字节放在A中,中,高位字节放在寄存器高位字节放在寄存器B中。中。七、除法运算七、除法运算DIV AB指令含义:将指令含义:将(A) (B),将商放入,将商放入A,余数放入寄存,余数放入寄存器器B中。中。v对对PSW标志位的影响:标志位的影响:Cy位被清位被清0乘积大于乘积大于FFH时,时,OV位为位为1。如果除数如果除数(B)=0,则,则OV位被置位被置1,表示除法无意义,表示除法无意义

29、,不能进行。不能进行。八、十进制调整指令八、十进制调整指令DA A这条指令用于对这条指令用于对BCDBCD编码的十进制数相加结果进行调整。编码的十进制数相加结果进行调整。例:例: 00100101 (25)BCD + 00111000 (38)BCD 01011101(5DH) 61相应程序:相应程序: MOV R2,#25H MOV A,#38H ADD A, R2 DA A注意:注意:DA A指令只能跟在指令只能跟在ADD或或ADDC加法指令后,不加法指令后,不适用于减法。适用于减法。 3.3.逻辑运算指令逻辑运算指令该类指令包含与、或、非、清该类指令包含与、或、非、清0 0、异或和移位指

30、令等共、异或和移位指令等共2424条。条。执行这些指令时一般不影响程序状态字寄存器执行这些指令时一般不影响程序状态字寄存器PSW,仅当目的,仅当目的操作数为操作数为ACC时对奇偶标志位有影响。时对奇偶标志位有影响。一、逻辑与运算指令组一、逻辑与运算指令组逻辑与指令的功能是将源操作数内容和目的操作数内容按逻辑与指令的功能是将源操作数内容和目的操作数内容按位相与,结果存入目的操作数指定单元,源操作数不变。位相与,结果存入目的操作数指定单元,源操作数不变。 ANL A,Rn ;A (A)(Rn) ANL A,direct; A (A)(direct) ANL A,Ri; A (A)(Ri) ANL

31、A, #data; A (A)data ANL direct, A ; direct (A)(direct) ANL direct,#data ; direct (direct) data例例:(A)=78H,(R1)=37H,则执行指令则执行指令 ANL A,R1后后,(A)= H (A) 01111000 (R1) 00110111 (A) 00110000程序设计程序设计:读入读入P1口的数据口的数据,将其低将其低4位清位清0,高高4位保留位保留,再把结果放到内部再把结果放到内部RAM的的40H单元。单元。MOV A,P1ANL A,#0F0HMOV 40H,A 程序设计程序设计:将累加

32、器将累加器A中压缩中压缩BCD码分为两个字节,形成码分为两个字节,形成非压缩非压缩BCD码,放入内部码,放入内部RAM的的40H和和41单元中。单元中。MOV 30H, A ;保存;保存A中的内容中的内容ANL A, #00001111B ;清高;清高4位,保留低位,保留低4位位MOV 40H, AMOV A, 30H ;取原数据;取原数据ANL A, #11110000B ;保留高;保留高4低,清低低,清低4位位SWAP AMOV 41H, A二、逻辑或运算指令二、逻辑或运算指令 ORL A,Rn ;A (A)V(Rn) ORL A,direct; A (A)V(direct) ORL A,

33、Ri; A (A)V(Ri) ORL A, #data; A (A)Vdata ORL direct,A ; direct (A)V(direct) ORL direct,#data ; direct (direct) Vdata 或运算举例:假设或运算举例:假设(A)=60H,(30H)=79H,则执行指令则执行指令 ORL A, 30H后后,(A)= H (A) 01100000 (30H) V 01111001 01111001程序设计举例程序设计举例:将串口缓冲区将串口缓冲区SBUF中的数据送到内中的数据送到内 部部RAM40H单元单元,再将其低再将其低7位位(D6D0)全部变成全部变

34、成1. MOV 40H,SBUFORL 40H,#7FH三、逻辑异或运算三、逻辑异或运算 XRL A,Rn ;A (A) (Rn) XRL A,direct; A (A) (direct) XRL A,Ri; A (A) (Ri) XRL A, #data; A (A) data XRL direct,A ; direct (A) (direct) XRL direct,#data ; direct (direct) data异或原则是相同为异或原则是相同为0,相异为,相异为1 。异或指令可用于判断两个字节中的数据是否相等异或指令可用于判断两个字节中的数据是否相等. .程序设计程序设计: :如

35、果如果(40H)=(60H),(40H)=(60H),将将PSWPSW中的中的F0F0位置位置1.1. CLR F0 MOV A,40H XRL A,60H JNZ OUT SETB F0四、累加器清四、累加器清0 0和取反指令和取反指令累加器清累加器清0 0指令指令 CLR A ;A 0累加器按位取反指令累加器按位取反指令 CPL A ;A /A例:假设例:假设(A)=89H,(A)=89H,在执行指令在执行指令 CPL A后后,(A)= H 89H=10001001取反取反: 01110110=76H 五、累加器移位指令五、累加器移位指令D0D1D2D3D4D5D6D71 1、循环左移、循

36、环左移 RL A01100101假设假设:(A)=0A6H,:(A)=0A6H,则在执行指令则在执行指令“RL A”RL A”后后,(A)=4DH,(A)=4DH执行前执行前(A):(A):10110010执行后执行后(A):(A):D0D1D2D3D4D5D6D72 2、循环右移、循环右移 RR A01100101假设假设:(A)=0A6H,:(A)=0A6H,则在执行指令则在执行指令“RR A”RR A”后后, ,(A)=53H执行前执行前(A):(A):11001010执行后执行后(A):(A):3、带进位循环左移带进位循环左移RLC A例例: :假设假设(A)=0A6H,(CY)=0;

37、(A)=0A6H,(CY)=0;则在执行指令则在执行指令“RLC A”RLC A”后,后,(A)=_ ,(CY)=_(A)=_ ,(CY)=_执行前执行前: :CYD7 D6 D5 D4 D3 D2 D1 D0010100110101001100执行后执行后:4、带进位位循环右移带进位位循环右移RRC A例例: :假设假设(A)=0A6H,(CY)=0;(A)=0A6H,(CY)=0;则在执行指令则在执行指令“RRC A”RRC A”后,后,(A)=_ ,(CY)=_(A)=_ ,(CY)=_执行前执行前: :CY D7 D6 D5 D4 D3 D2 D1 D00101001101100101

38、00执行后执行后: : 程序设计程序设计:将存储在内部将存储在内部RAM的的40H和和41单元中单元中16位二位二进制数循环左移进制数循环左移1位。位。CLR CMOV A, 40HRLC AMOV 40H, A MOV A, 41HRLC AMOV 41H, A MOV A, 40HADDC A, #00HMOV 40H, A 4.4.控制转移指令控制转移指令 控制转移类指令的功能是根据要求修改程序计数器控制转移类指令的功能是根据要求修改程序计数器PC的内容,以改变程序的运行流程,实现转移。的内容,以改变程序的运行流程,实现转移。 80C51指令系统中有指令系统中有17条控制程序转移类指令。

39、它们是条控制程序转移类指令。它们是无条件转移和条件转移、绝对转移和相对转移、长转移和短无条件转移和条件转移、绝对转移和相对转移、长转移和短转移、调用和返回指令等。这类指令多数不影响程序状态标转移、调用和返回指令等。这类指令多数不影响程序状态标志寄存器。志寄存器。 一、无条件转移指令一、无条件转移指令1、长转移指令、长转移指令 LJMP addr16说明:说明:PC无条件跳转到无条件跳转到addl6地址地址,可在可在64KB范围内转范围内转移移, 称为长转移指令称为长转移指令 。2、绝对转移指令绝对转移指令 AJMP addr11 例:例: AJMP MM MM: MOV A,#00H说明:说明

40、:PC无条件转向到无条件转向到addl1地址可在地址可在2KB范围内转移范围内转移, 称为绝对转移指令。称为绝对转移指令。3、短跳转指令(相对转移指令)短跳转指令(相对转移指令) SJMP rel说明:说明:PCPC2rel, rel是偏移量是偏移量, 它是它是8位有符号数位有符号数, 范围范围-128+127即向后跳转即向后跳转128B, 向前可跳转向前可跳转127B4、间接转移指令间接转移指令 JMP A+DPTR说明:说明: PC ADPTRPC,该指令主要用于多分支的跳该指令主要用于多分支的跳转程序设计。跳转的目标地址是累加器转程序设计。跳转的目标地址是累加器A A和数据指针和数据指针

41、DPTRDPTR之和。之和。二、条件转移指令二、条件转移指令所谓条件转移,指指令中规定的条件满足时,程序跳转所谓条件转移,指指令中规定的条件满足时,程序跳转到目标地址。到目标地址。1 1、累加器判零转移指令、累加器判零转移指令JZ rel ;如;如(A)=0,跳到目标语句,跳到目标语句,PCPC2rel ;如;如(A)0,顺序执行下一条指令,顺序执行下一条指令 JNZ rel ;如;如(A)0,跳到目标语句,跳到目标语句, PCPC2rel ;如;如(A)=0,顺序执行下一条指令,顺序执行下一条指令2 2、比较转移指令、比较转移指令CJNE A, #data, rel; A(direct),

42、顺序执行顺序执行 ; A(direct), PC PC3rel, CY 0 ; A(direct), PC PC3rel, CY 1CJNE A,direct,relCJNE Rn, #data,relCJNE Ri, #data,rel3、循环转移指令、循环转移指令DJNZ Rn,rel ;RnRn-1 ;Rn0, PC PC2rel ;Rn0,顺序执行,顺序执行DJNZ direct, rel程序设计举例:将内部程序设计举例:将内部RAM中中30H3FH的数依次送到的数依次送到70H7FH单元中。单元中。 MOV R0,#30H ;数据源首地址数据源首地址 MOV R1,#70H ;数据存

43、放目标首地址数据存放目标首地址 MOV R2,#10H ;数据个数数据个数LOOP: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,LOOP END三、子程序调用和返回指令三、子程序调用和返回指令1、长调用指令、长调用指令 LCALL addr16 ; PC PC3,SP SP1, ;(SP) PC.7PC.0, SPSP1, ;(SP) PC.15PC.8,PC addr16例:例:LCALL DELAY ;调用;调用DELAY 子程序子程序2、绝对调用指令、绝对调用指令 ACALL addr11;PC PC2,SP SP1, ;(SP) PC.7PC.0,

44、SPSP1, ;(SP) PC.15PC.8, ;PC.10PC.0 addr113、子程序返回指令、子程序返回指令 RET ;子程序调用返回;子程序调用返回 ;PC.15PC.8 (SP), SP SP-1 ;PC.7PC.0 (SP), SP SP-1 4 4、中断服务子程序返回指令、中断服务子程序返回指令 RETI ;PC.15PC.8 (SP), SP SP-1 ;PC.7PC.0 (SP), SP SP-1 说明:用于中断程序返回说明:用于中断程序返回, 执行该指令同时清除优先级状执行该指令同时清除优先级状态触发器态触发器四、空操作指令四、空操作指令指令格式:指令格式: NOP ;

45、PC PC1 说明:只进行取指令和译码说明:只进行取指令和译码, 不进行任何操作不进行任何操作, 故为空操作故为空操作, 常用于产生一个机器周期延时常用于产生一个机器周期延时5. 5. 位操作指令位操作指令 (1717条)条)一、位传送指令一、位传送指令MOV C,bit ;Cy (bit)MOV bit , C ;bit (Cy)例:例: MOV C,00H ;将;将00H位的状态传送给位的状态传送给CY MOV P1.0,C ;将;将CY位的状态传给位的状态传给P1口的第口的第0位位程序设计:将程序设计:将00H位内容与位内容与7FH位内容交换位内容交换MOV C, 00HMOV 01H, CMOV C, 7FHMOV 00H, CMOV C, 01HMOV 7FH, C二、位置二、位置“1”1”和清和清“0”0”CLR bit ; bit 0CLR C ; Cy 0SETB bi

温馨提示

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

评论

0/150

提交评论