单片机设计技术课件:第3章 MCS-51指令系统_第1页
单片机设计技术课件:第3章 MCS-51指令系统_第2页
单片机设计技术课件:第3章 MCS-51指令系统_第3页
单片机设计技术课件:第3章 MCS-51指令系统_第4页
单片机设计技术课件:第3章 MCS-51指令系统_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 MCS-51指令系统3.1 简 介 3.1.1 指令概述一台微机所具有的所有指令的集合,就构成了指令系统。指令系统越丰富,说明CPU的功能越强。例如,Z80 CPU中,没有乘法和除法指令,乘法和除法运算必须用软件来实现,因此执行速度相对较慢;而MCS-51单片机提供了乘法和除法指令,实现乘法和除法运算时就要快得多。 一台微机能执行什么样的操作,是在微机设计时确定的。一条指令对应着一种基本操作。由于计算机只能识别二进制数,所以指令也必须用二进制形式来表示,称为指令的机器码或机器指令。 MCS-51单片机指令系统共有33种功能,42种助记符,111条指令。 3.1.2 指令格式不同指令翻译

2、成机器码后字节数也不一定相同。按照机器码个数,指令可以分为以下三种: MCS-51单片机指令系统包括49条单字节指令、46条双字节指令和16条三字节指令。 采用助记符表示的汇编语言指令格式如下: 标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由18个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。 操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。 操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPL A指令;有两个操作数,如MO

3、V A,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。 注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。 操作数是指令的重要组成部分,指出了参与操作的数据或数据的地址。寻找操作数地址的方式称为寻址方式。一条指令采用什么样的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。 MCS-51指令系统共使用了7种寻址方式,包括寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址等。我们初步接触了寄存器寻址、立即数寻址、直接寻址和寄存器间接寻址等4种寻址方式。 3.2 寻 址 方 式

4、1. 寄存器寻址 寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。 如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器,对应地址为08H0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H,如图3.1所示。采用寄存器寻址的指令如下: MOV P1,A;将累加器A的内容送 到P1口 MOV P1,R4 ;将寄存器R4的内容送到P1口 CLR

5、A;将累加器A清0 CPL A;将累加器A中的内容取反 RL A;将累加器A的内容循环左移图3.1 寄存器寻址示意图 图3.2 直接寻址示意图 2. 直接寻址 直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。 例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。 设内部RAM 3AH单元的内容是88H,那么指令MOV A,3AH的执行过程如图3.2所示。采用直接寻址的指令如下: MOV P1,20

6、H ;将20H单元的内容传送到P1口 3. 立即数寻址 立即数寻址是指将操作数直接写在指令中。 例如,指令MOV A,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如图3.3所示。 图3.3 立即数寻址示意图采用立即数寻址的指令如下: MOVP1,#55H;将立即数55H送P1口 MOV20H,#55;将立即数55H送20H 单元 MOVA,#0F0H;将立即数0F0H送累加器A MOVR4,#0FH;将立即数0FH送寄存器R4中 MOVR0,#20H;将立即数20H送寄存器R0口 AND A,#

7、0FH;累加器A的内容与立即数0FH进行逻辑与操作 OR A,#0F0H;累加器A的内容与立即数0F0H进行逻辑或操作 MOVA,#01H ;将立即数01H送累加器A中 MOV A,#55H ;将立即数55H送累加器A中 4. 寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。 在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。 注意:间接寻址寄存器前面必须加上符号“”。例如,指令MOV A,R0执行的

8、操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中。 设R0=3AH,内部RAM 3AH中的值是65H,则指令MOV A,R0的执行结果是累加器A的值为65H,该指令的执行过程如图3.4所示。采用寄存器间接寻址的指令如下: MOV P1,R0;将R0所指的存 储单元的内容送P1口图3.4 寄存器间接寻址示意图 5. 变址寻址 变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。 例如,指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加

9、,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。 设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如图3.5所示。 图3.5 变址寻址示意图 6. 相对寻址 相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。 例如,指令SJMP 54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。 设指令SJMP 54H的机器码80H 54H存放在

10、2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如图3.6所示。图3.6 相对寻址示意图 7. 位寻址 位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H2FH,共16个RAM单元,位

11、地址为00H7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义。 例如,指令SETB 3DH执行的操作是将内部RAM位寻址区中的3DH位置1。 设内部RAM 27H单元的内容是00H,执行SETB 3DH后,由于3DH对应内部RAM 27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图3.7所示。图3.7 位寻址示意图3.3 指 令 系 统 MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类 数据传送指令(29条) 算术运算指令(24条) 逻辑运算指令(24条) 控制转移指令(17条) 位操作指令(17条)

12、3.3.1 指令系统中的符号说明 指令的书写必须遵守一定的规则,为了叙述方便,我们采用表3.2的约定。表3.2 指令描述约定符 号含 义Rn表示当前选定寄存器组的工作寄存器R0R7Ri表示作为间接寻址的地址指针R0R1#data表示8位立即数,即00HFFH#data16表示16位立即数,即0000HFFFFHaddr16表示16位地址,用于64K范围内寻址addr11表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址Rel带符号的8位偏移量(-128+127)Bit位寻址区的直接寻址位(X)X地址单元中的内容,或X作为间接寻址寄

13、存器时所指单元的内容将 后面的内容传送到前面去 3.3.2 数据传送类指令 数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部 RAM、寄存器、外部RAM以及程序存储器之间的数据传送。 数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。 数 据目的地址 源地址 1. 内部8位数据传送指令(15条) 内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式: MOV , 1) 以累加器A为目的地址的传送指令(4条) 助记符格式机器码(B)相应操作指令说明机器周期MOV A,Rn11101rrrA(Rn)n=07,

14、 rrr=0001111MOV A,direct11100101 directA (direct)1MOV A,Ri1110011iA (Ri)i=0,1 1MOV A,#data01110100 dataA #data1 注意:以上传送指令的结果均影响程序状态字寄存器PSW的P标志。 例3.1 已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。 累加器A40H寄存器R050H内部RAM:40H30H内部RAM:50H10H (1) MOV A,#20H (2) MOV A,40H (3) MOV A,R0 (4) MOV A,R0解:(1) MOV A,#20H执行后A=20H

15、。 (2) MOV A,40H执行后A=30H。 (3) MOV A,R0执行后A=50H。 (4) MOV A,R0执行后A=10H。 2) 以Rn为目的地址的传送指令(3条)助记符格式机器码(B)相应操作指令说明机器周期MOV Rn,A11111rrr(Rn)An=07, rrr=0001111MOV Rn,direct10101rrr directRn (direct)n=07, rrr=0001111MOV Rn,#data01111rrr dataRn #datan=07, rrr=0001111 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。3) 以直接地址为目的地址的

16、传送指令(5条)助记符格式机器码(B)相应操作指令说明机器周期MOV direct,A11111010 direct(direct) A1MOV direct,Rn10001rrr direct(direct )Rnn=07, rrr=0001111MOV direct2,direct110000101direct1 direct2(direct2) direct12MOV direct,Ri1000011i direct(direct )(Ri)i=0,12MOV direct,#data01110101direct data(direct)#data2 注意:以上传送指令的结果不影响程序状

17、态字寄存器PSW标志。 4) 以寄存器间接地址为目的地址的传送指令(3条)助记符格式机器码(B)相应操作指令说明机器周期MOV Ri,A1111011i(Ri)Ai=0,11MOV Ri,direct1110011i direct(Ri)(direct)2MOV Ri,#data0111010i data(Ri)#data1 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。 例3.2 已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H(1) MOV

18、A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H解:(1) MOV A,R6执行后A=30H。(2) MOV R6,70H执行后R6=40H。(3) MOV 70H,50H执行后(70H)=60H。(4) MOV 40H,R0执行后(40H)=60H。(5) MOV R1,#88H执行后(66H)=88H。3. 16位 数据传送指令(1条)助记符格式机器码(B)相应操作指令说明机器周期MOV DPTR,#data1610010000 data158 data70(DPTR) #data16把16位常数装入数据指针2#

19、data16 入数据指针 注意:以上指令结果不影响程序状态字寄存器PSW标志。 3. 外部数据传送指令(4条)助记符格式机器码(B)相应操作指令说明机器周期MOVX A,DPTR11100000A(DPTR)把DPTR所对应的外部RAM地址中的内容传送给累加器A2MOVX A,Ri1110001iA (Ri)i=0,12MOVX DPTR,A11110000(DPTR) A结果不影响P标志2MOVX Ri,A1110001i(Ri) Ai=0,1,结果不影响P标志2 注意: 外部RAM只能通过累加器A进行数据传送。 累加器A与外部RAM之间传送数据时只能间接寻址方式,间接寻址寄存器为DPTR,

20、R0,R1。 以上传送指令结果通常影响程序状态字寄存器PSW的P标志。 例3.3 把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。 解:MOV DPTR,#2040H MOVX A,DPTR;先将2040H单元的内容传送到累加器A中 MOV DPTR,#2560H MOVX DPTR,A;再将累加器A中的内容传送到2560H单元中4. 交换和查表类指令(9条)1) 字节交换指令(3条)助记符格式机器码(B)相应操作指令说明机器周期XCH A,Rn11001rrr ARn A与Rn内容互换1XCH A,direct11000101 directA(direct)1X

21、CH A,Ri1100011iA(Ri)i=0,11注意:以上指令结果影响程序状态字寄存器PSW的P标志。2) 半字节交换指令(1条)助记符格式机器码(B)相应操作指令说明机器周期XCHD A,Ri1101011iA30(Ri)30低4位交换,高4位不变1 注意:上面指令结果影响程序状态字寄存器PSW的P标志。3) 累加器A中高4位和低4位交换(1条)助记符格式机器码(B)相应操作指令说明机器周期SWAP A11000100A 30A74 高、低4位互相交换1 注意:上面指令结果不影响程序状态字寄存器PSW标志。 例3.4 设内部数据存储区2AH、2BH单元中连续存放有4个BCD码(1个BCD

22、码占 a3 a2a0 a1 a1 a0 a2 a3 2AH 2BH 2AH 2BH 4) 查表指令(2条) 助记符格式机器码(B)相应操作指令说明机器周期MOVC A,A+PC10000011A(A+PC)A+PC所指外部程序存储单元的值送A2MOVC A,A+DPTR10010011A(A+DPTR)A+DPTR所指外部程序存储单元的值送A2 注意: 以上指令结果影响程序状态字寄存器PSW的P标志。 查表指令用于查找存放在程序存储器中的表格。 5) 堆栈操作指令(2条) 助记符格式机器码(B)相应操作指令说明机器周期PUSH direct11000000directSPSP+1(SP)(di

23、rect)将SP加1,然后将源地址单元中的数传送到SP所指示的单元中去2POP direct11010000direct(direct) (SP)SPSP-1将SP所指示的单元中的数传送到direct地址单元中,然后SPSP-12 注意: 堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。 堆栈遵循后进先出的原则安排数据。 堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成: PUSH/POP ACC 或 PUSH/POP 0E0H而不能写成: PUSH/POP A 堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现

24、场。 以上指令结果不影响程序状态字寄存器PSW标志。 例3.5 设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。 解:MOV SP,#30H ;设置堆栈指针,SP=30H为栈底地址 PUSH ACC ;SP+1SP,SP=31H,ACC (SP) PUSH DPH ;SP+1SP,SP=32H,DPH (SP) 3.3.3 算术运算类指令 1. 加、减法指令(22条) 1) 加法指令(8条)助记符格式机器码(B)相应操作指令说明机器周期ADD A,Rn00101rrrA(A+Rn)n=07, rrr=0001111ADD A,direct

25、00100101AA+(direct)1ADD A,Ri0010011iA(A+(Ri)i=0,11ADD A,#data00100100 dataAA+#data1ADDC A,Rn00111rrrAA+Rn+CYn=07, rrr=0001111ADDC A,direct00110101 directAA+(direct)+CY1ADDC A,Ri0011011iAA+(Ri)+CYi=0,11ADDC A,#data00110100 dataAA+#data+CY1 注意: ADD与ADDC的区别为是否加进位位CY。 指令执行结果均在累加器A中。 以上指令结果均影响程序状态字寄存器PSW

26、的CY、OV、AC和P标志。 2) 减法指令(4条)助记符格式机器码(B)相应操作指令说明机器周期SUBB A,Rn1001rrrAA-(Rn)-CYn=07 rrr=0001111SUBB A,direct10010101 directAA-(direct)-CY1SUBB A,Ri1001011iAA- (Ri)-CYi=0,11SUBB A,#data10010100 dataAA-(#data)-CY1 注意: 减法指令中没有不带借位的减法指令,所以在需要时,必须先将CY清0。 指令执行结果均在累加器A中。 减法指令结果影响程序状态字寄存器PSW的CY、OV、AC和P标志。 例3.6

27、编写计算12A4H+0FE7H的程序,将结果存入内部RAM 41H和40H单元,40H存低8位,41H存高8位。 解:单片机指令系统中只提供了8位的加减法运算指令,两个16位数(双字节)相加可分为两步进行,第一步先对低8位相加,第二步再对高8位相加。 3) BCD码调整指令(1条)助记符格式机器码(B)指令说明机器周期DA A11010100BCD码加法调整指令1 注意: 结果影响程序状态字寄存器PSW的CY、OV、AC和P标志。 BCD(Binary Coded Decimal)码是用二进制形式表示十进制数,例如十进制数45,其BCD码形式为45H。BCD码只是一种表示形式,与其数值没有关系

28、。 BCD码用4位二进制码表示一位十进制数,这4位二进制数的权为8421,所以BCD码又称为8421码。十进制数码09所对应的二进制码如表3.3所示。表3.3 十进制数码与BCD码对应表十进制数码0123456789二进制码0000000100100011010001010110011110001001 在表3.3中,用4位二进制数表示一个十进制数位,例如56D和87D的BCD码表示为 0101 0110 (56D) 1000 0111 (87D) 0001 0100 0011 (143D) DAA指令将A中的二进制码自动调整为BCD码。 DAA指令只能跟在ADD或ADDC加法指令后. 例3.

29、7 说明指令MOV A,#05H和ADD A,#08H及DA A的执行结果。 解:MOV A,#05H ;05HA ADD A,#08H ;05H+08HA,A=0DH DA A ;自动调整为BCD码,A=13H4) 加1减1指令(9条) 助记符格式机器码(B)相应操作指令说明机器周期INC A00000100AA+1影响PSW的P标志1INC Rn00001rrrRnRn+1n=07, rrr=0001111INC direct0101 direct(direct)(direct)+11INC Ri0000011i(Ri)(Ri)+1i=0,11INC DPTR10100011DPTRDPT

30、R+12DEC A00010100AA-1影响PSW的P标志1DEC Rn00011rrrRnRn-1n=07, rrr=0001111DEC direct00010101 direct(direct)(direct)+11DEC Ri0001011i(Ri)(Ri)-1i=0,11 注意:以上指令结果通常不影响程序状态字寄存器PSW。 例3.8 分别指出指令INC R0和INC R0的执行结果。设R0=30H,(30H)=00H。 解: INC R0 ;R0+1=30H+1=31HR0,R0=31H INCR0 ;(R0)+1=(30H)+1(R0),(30H)=01H,R0中内容不变 2.

31、 乘、除法指令 1) 乘法指令(2条)助记符格式机器码(B)相应操作指令说明机器周期MUL AB10100100BAA*B无符号数相乘,高位存B,低位存A4 注意:乘法结果影响程序状态字寄存器PSW的OV(积超过0FFH则置1,否则为0)和CY(总是清0)以及P标志。 2) 除法指令(1条)助记符格式机器码(B)相应操作指令说明机器周期DIV AB10000100AA/B的商BA/B的余数无符号数相除,商存A,余数存B4 注意: 除法结果影响程序状态字寄存器PSW的OV(除数为0则置1,否则为0)和CY(总是清0)以及P标志。 当除数为0时结果不能确定。3.3.4 逻辑运算及移位类指令1. 逻

32、辑运算指令(20条)1) 逻辑与指令(6条)助记符格式机器码(B)相应操作指令说明机器周期ANL A,direct01010101 directAAdirect按位相与1ANL A,Rn01011rrrAARnn=07, rrr=0001111ANL A,Ri0101011iAA(Ri)i=0,11ANL A,#data01010100 dataAA#data1ANL direct,A01010010 direct(direct)(direct)A不影响PSW的P标志1ANL direct,#data01010011 direct data(direct)(direct)#data不影响PSW

33、的P标志2 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑与指令通常用于将一个字节中的指定位清0,其它位不变。 2) 逻辑或指令(6条)助记符格式机器码(B)相应操作指令说明机器周期ORL A,direct01000101 directAAdirect按位相或1ORL A,Rn01001rrrAARnn=07, rrr=0001111ORL A,Ri0100011iAA(Ri)i=0,11ORL A,#data01000100 dataAA#data1ORL direct,A01000010 direct(direct)(direct)A不影响PSW的P标志1ORL dir

34、ect,#data01000011 direct data(direct)(direct)#data不影响PSW的P标志2 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑或指令通常用于将一个字节中的指定位置1,其余位不变。 3) 逻辑异或指令(6条)助记符格式机器码(B)相应操作指令说明机器周期XRL A,direct01100101 directAA(direct)按位相异或1XRL A,Rn01101rrrAARnn=07, rrr=0001111XRL A,Ri0110011iAA (Ri)i=0,11XRL A,#data01100100 dataAA#data1X

35、RL direct,A01100010 direct(direct)(direct)A不影响PSW的P标志1XRL direct,#data01100011 direct data(direct)(direct)#data不影响PSW的P标志2 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 “异或”原则是相同为0,不同为1。 4) 累加器A清0和取反指令(2条)助记符格式机器码(B)相应操作指令说明机器周期CLR A11100100A00HA中内容清0,影响P标志1CPL A11110100AA中内容按位取反,影响P标志12. 循环移位指令(4条)助记符格式机器码(B)相应操作

36、指令说明机器周期RL A00100011A7A0循环左移1RLC A00110011CYA7A0带进位循环左移,影响CY标志1RR A00000011A7A0循环右移1RRC A00010011CYA7A0带进位循环右移,影响CY标志1 注意:执行带进位的循环移位指令之前,必须给CY置位或清0。 3.3.5 控制转移类指令 控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。 1. 无条件转移指令(4条) 1) 长转移指令(1条) 助记符格式机器码(B)相应操作指令说明机器周期LJMP addr16000000

37、10 addr158 addr70PCaddr16程序跳转到地址为addr16开始的地方执行2 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令可以转移到64 KB程序存储器中的任意位置。 2) 绝对转移指令 (1条)助记符格式机器码(B)相应操作指令说明机器周期AJMP addr11a10a9a800001addr70PC100addr11程序跳转到地址为PC1511addr11开始的地方执行,2 KB内绝对转移2 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令转移范围是2 KB。 例3.9 指令KWR: AJMP KWR1的执行结果。 解:设KWR标号地址=1030H,K

38、WR1标号地址=1100H,该指令执行后PC首先加2变为1032H,然后由1032H的高5位和1100H的低11位拼装成新的PC值0001000100000000B,即程序从1100H开始执行。 3) 相对转移指令 (1条)助记符格式机器码(B)相应操作指令说明机器周期SJMP rel10000000 relPCPC+rel-80H(-128)7FH(127)短转移2 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令的转移范围是以本指令的下一条指令为中心的-128+127字节以内。 在实际应用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用标号来代替的,不

39、一定写出它们的具体地址。4) 间接寻址的无条件转移指令(1条) 助记符格式机器码(B)相应操作指令说明机器周期JMP A+DPTR01110011PCA+DPTR64 KB内相对转移2 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令通常用于散转(多分支)程序。 2. 条件转移指令(8条) 1) 累加器A判0指令(2条) 助记符格式机器码(B)相应操作机器周期JZ rel0110000若A=0, 则PCPC+rel, 否则程序顺序执行 2JNZ rel01110000若A0, 则PCPC+rel, 否则程序顺序执行2 注意: 以上指令结果不影响程序状态字寄存器PSW。 转移范围与指令S

40、JMP相同。 2) 比较转移指令(4条) 助记符格式机器码(B)相应操作机器周期CJNE A,#data,rel10110100 data rel若A#data, 则PCPC+rel,否则顺序执行;若 A#data,则CY=1,否则CY=02CJNE Rn,#data,rel10111rrrdata rel若 Rn#data,则PCPC+rel,否则顺序执行;若Rn#data,则CY=1,否则CY=02CJNE Ri,#data,rel1011011idata rel若(Ri)#data,则PCPC+rel,否则顺序执行;若(Ri)#data,则CY=1,否则CY=02CJNE A,direc

41、t,rel10110101direct rel若A(direct),则PCPC+rel,否则顺序执行;若A(direct),则CY=1,否则CY=02 注意: 以上指令结果影响程序状态字寄存器PSW的CY标志。 转移范围与SJMP指令相同。 3) 减1非零转移指令(2条)助记符格式机器码(B)相应操作机器周期DJNZ Rn,rel11011rrr relRnRn-1,若Rn0,则PCPC+rel, 否则顺序执行2DJNZ direct,rel11010101 direct rel(direct)(direct)-1,若(direct)0,则PCPC+rel,否则顺序执行2 注意: DJNZ指令

42、通常用于循环程序中控制循环次数。 转移范围与SJMP指令相同。 以上指令结果不影响程序状态字寄存器PSW。 3. 调用和返回指令(5条) 1) 绝对调用指令(1条)助记符格式机器码(B)相应操作机器周期ACALL addr11a10a9a810001addr70PC PC+2SP SP+1,(SP)PC07SP SP+1,(SP)PC815PC010 addr112 注意: 该指令结果不影响程序状态字寄存器PSW。 调用范围与AJMP指令相同。 2) 长调用指令(1条) 助记符格式机器码(B)相应操作机器周期LCALL addr1600010010addr158addr70PCPC+3SP S

43、P+1,SPPC07SP SP+1,SPPC815PC addr162 注意: 该指令结果不影响程序状态字寄存器PSW。 调用范围与LJMP指令相同。3) 返回指令(2条) 助记符格式机器码(B)相应操作机器周期RET00100010PC815 (SP), SP SP-1PC07 (SP), SP SP-1子程序返回指令2RETI00110010PC815 SP, SP SP-1PC07 SP, SP SP-1中断返回指令2 注意:该指令结果不影响程序状态字寄存器PSW。4) 空操作(1条)助记符格式机器码(B)相应操作指令说明NOP00000000空操作消耗1个机器周期注意:该指令结果不影响

44、程序状态字寄存器PSW。 3.3.6 位操作类指令 位操作指令的操作数是“位”,其取值只能是0或1,故又称之为布尔操作指令。位操作指令的操作对象是片内RAM的位寻址区(即20H2FH)和特殊功能寄存器SFR中的11个可位寻址的寄存器。片内RAM的20H2FH共16个单元128个位,我们为这128个位的每个位均定义一个名称:00H7FH,称为位地址,如表3.4所示。对于特殊功能寄存器SFR中可位寻址的寄存器的每个位也有名称定义,如表3.5所示。 表3.4 片内RAM位寻址区的位地址分布位地址/位名称字节地址D7D6D5D4D3D2D1D07F7E7D7C7B7A79782FH7776757473

45、7271702EH6F6E6D6C6B6A69682DH67666564636261602CH5F5E5D5C5B5A59582BH57565554535251502AH4F4E4D4C4B4A494829H474645444342414028H3F3E3D3C3B3A393827H373635343332313026H2F2E2D2C2B2A292825H272625242322212024H1F1E1D1C1B1A191823H171615141312111022H0F0E0D0C0B0A090821H070605040302010020H续表(2)表3.5 SFR中的位地址分布SFR位地

46、址/位名称字节地址D7D6D5D4D3D2D1D0BF7HF6HF5HF4HF3HF2HF1HF0HF0HACCE7HE6HE5HE4HE3HE2HE1HE0HE0HACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.0PSWD7HD6HD5HD4HD3HD2HD1HD0HD0HCYACF0RS1RS0OVF1P 续表(2)IPBFHBEHBDHBCHBBHBAHB9HB8HB8HPSPT1PX1PT0PX0P3B7HB6HB5HB4HB3HB2HB1HB0HB0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IEAFHAEHADHACHABHAAH

47、A9HA8HA8HEAESET1EX1ET0EX0P2A7HA6HA5HA4HA3HA2HA1HA0HA0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0续表(3)SCON9FH9EH9DH9CH9BH9AH99H98H98HSM0SM1SM2RENTB8RB8TIRIP197H96H95H94H93H92H91H90H90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0P087H86H85H84H83H82H81H80H80HP0.7P0.6P0.

48、5P0.4P0.3P0.2P0.1P0.0 对于位寻址,有以下三种不同的写法。 第一种是直接地址写法, 如 MOV C,0D2H,其中,0D2H表示PSW中的OV位地址。 第二种是点操作符写法,如 MOV C , 0D0H.2。 第三种是位名称写法,在指令格式中直接采用位定义名称,这种方式只适用于可以位寻址的SFR,如MOV C,OV。 1. 位传送指令(2条)助记符格式机器码(B)相应操作指令说明机器周期MOV C,bit10100010CY bit位传送指令,结果影响CY标志2MOV bit,C10010010bit CY位传送指令,结果不影响PSW2 注意:位传送指令的操作数中必须有一个

49、是进位位C,不能在其它两个位之间直接传送。进位位C也称为位累加器。 2. 位置位和位清零指令(4条)助记符格式机器码(B)相应操作指令说明机器周期CLR C11000011CY 0位清0指令,结果影响CY标志1CLR bit11000010 bitbit 0位清0指令,结果不影响PSW1SETB C11010011CY1位置1指令,结果影响CY标志1SETB bit11010010 bitbit 1位置1指令,结果不影响PSW13. 位运算指令(6条) 助记符格式机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位与指令2ANL C/bit10110

50、010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY CY位或指令2CPL C10110011CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2助记符格式机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位与指令2ANL C/bit10110010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY CY位或指令2CPL C1011001

51、1CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2助记符格式机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位与指令2ANL C/bit10110010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY CY位或指令2CPL C10110011CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2助记符格式机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位

52、与指令2ANL C/bit10110010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY CY位或指令2CPL C10110011CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2助记符格式机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位与指令2ANL C/bit10110010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY C

53、Y位或指令2CPL C10110011CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2c机器码(B)相应操作指令说明机器周期ANL C,bit10000010 bitCY CYbit位与指令2ANL C/bit10110010 bitCY CY位与指令2ORL C,bit01110010 bitCY CYbit位或指令2ORL C/bit10100010 bitCY CY位或指令2CPL C10110011CY位取反指令2CPL bit10110010bit位取反指令,结果不影响CY2助记符格式机器码(B)相应操作机器周期JB bit,rel00100000 bit rel若bit=1

温馨提示

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

评论

0/150

提交评论