《单片机原理及应用》课件-第3章 MCS-51单片机的指令系统_第1页
《单片机原理及应用》课件-第3章 MCS-51单片机的指令系统_第2页
《单片机原理及应用》课件-第3章 MCS-51单片机的指令系统_第3页
《单片机原理及应用》课件-第3章 MCS-51单片机的指令系统_第4页
《单片机原理及应用》课件-第3章 MCS-51单片机的指令系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

ChapterThreeMCS-51单片机的指令系统3.1.1指令系统概述指令一般有功能、时间和空间三种属性。功能划分:数据传送类指令(29条)算术运算类指令(24条)逻辑操作类指令(24条)控制转移类指令(17条)位操作类指令(17条)空间属性划分:单字节指令(49条)双字节指令(46条)三字节指令(16条)时间属性划分单机器周期指令(64条)双机器周期指令(45条)三机器周期的指令(2条)指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地址。(3)指定操作结果存放的地址。3.1.2指令格式指令描述符号介绍:A——是累加器Acc的指令助记符,是最常用的寄存器。许多指令的操作数取自于Acc,许多计算的结果存放在Acc中。B——专用寄存器,用于乘法和除法指令中。C——进位标志或进位位,或布尔处理机中的累加器。@——间址寄存器或基址寄存器的前缀,如@Ri,@DPTR。/——位操作数的前缀,表示对该位操作数取反,如/bit。×——片内RAM的直接地址或寄存器。(×)——由×寻址的单元中的内容。((×))——由×间接寻址的单元中的内容。←——箭头左边的内容被箭头右边的内容所代替。Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。Ri——当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。direct—8位的内部数据存储器单元中的地址。#data——包含在指令中的8位常数。#data16——包含在指令中的16位常数。addr16——16位目的地址。addr11——11位目的地址。rel——8位带符号的偏移字节,简称偏移量。DPTR——数据指针,可用作16位地址寄存器。bit——内部RAM或专用寄存器中的直接寻址位。3.1.3寻址方式立即寻址相对寻址位寻址1234576直接寻址寄存器寻址寄存器间接寻址变址寻址MCS-51系列单片机指令系统共有7种寻址方式。立即寻址指令中直接给出操作数的寻址方式。例如:MOV A,#6CH ;A←6CHMOV P1,#0FEH ;P1←FEHMOV DPTR,#3400H ;DPTR←3400HMOV 30H,#40H ;30H单元←40H直接寻址指令中直接给出操作数地址的寻址方式。能直接寻址的存储空间有内部数据RAM的低128字节和SFR寄存器。例如:已知内RAM(30H)=50H,则MOV P1,30H;P1←内部RAM30H单元中的内容MOV PSW,#20H;PSW←20H寄存器寻址以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及四个寄存器组中的R0~R7。例如:已知R0=70H,R7=25H,DPTR=0300H则MOV A,R0

;A←R0INC DPTR

;DPTR←DPTR+1ADD R7,#20H ;R7←20H+R7寄存器间接寻址。以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。寄存器间接寻址的寄存器有R0,R1,DPTR。例如:已知R0=40H,内RAM(40H)=50H,外RAM(40H)=60H,DPTR=0300H则MOV A,@R0 ;A←内部RAM(R0)MOVX A,@R0 ;A←外部RAM(R0)MOVX @DPTR,A ;外部RAM(DPTR)←A设内部RAM中33H单元中内容为44H,34H单元中内容为0AFH,R0中内容为33H,R1中内容为00H,给出以下每一条指令执行后A中的值。

MOVA,#34HMOVA,34HMOVA,R1MOVA,@R0

练习1设内部RAM30H单元中内容为52H,请给出以下程序结果:MOVA,#30HMOVA,30HMOVR0,#30HMOVA,@R0MOV30H,#30H练习2变址寻址以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址,用该地址访问程序存储器ROM。指令符号上采用MOVC的形式。例如:已知A=60H,DPTR=0300H,PC=0200H,ROM(0260H)=09H,ROM(0360H)=05H,分别执行下列两条指令:MOVC A,@A+DPTR ;A←(A+DPTR)MOVC A,@A+PC ;A←(A+PC)相对寻址以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。实际编程时,多写出跳转的目的地址(标号地址)。例如:SJMPLOOP;LOOP是程序中某一行的标号,

;指令执行结果就是跳转到该行位寻址只能对有位地址的单元作位寻址操作。寻址范围:内部RAM低128字节中的位寻址区(20H-2FH)共128位;内部RAM高128字节中11个SFR中的83位。例如:SETB 10H

;将10H位置1,其中10H是直接使用位地址。MOV 22H.0,C

;22H.0←进位位C

;(其中22H.0是内部RAM22H单元的第0位)ORL C,PSW.0

;C←C∨PSW.0ANL C,P ;C←C∧P

;(其中P是PSW的第0位,是位符号地址)3.2指令系统功能划分数据传送类指令(29条)共111条指令算术运算类指令(24条)逻辑操作类指令(24条)控制转移类指令(17条)位操作类指令(17条)1.内部RAM数据传送指令功能:把源操作数指定的内容送入累加器A中。MOV A,#data

;立即寻址MOV A,direct

;直接寻址MOV A,Rn

;n=0~7,寄存器寻址MOV A,@Ri

;i=0~1,寄存器间接寻址3.2.1数据传送指令若R1=50H,R3=60H,内RAM(30H)=08H,内RAM(50H)=03H,则MOV A,#20H

;A=20HMOV A,30H ;A=08HMOV A,R3 ;A=60HMOV A,@R1 ;A=03H练习3(1)以累加器A为目的操作数的指令。若A=50H,内RAM(30H)=60H,则MOV R5,#23H ;将立即数23H传送给R5MOV R6,30H ;将30H单元的内容传送给R6 MOV R7,A ;将累加器A的内容传送给R7练习4(2)以Rn为目的操作数的指令。功能:把源操作数的内容送入当前工作寄存器区的R0~R7中的某一寄存器。MOV Rn,#data

;n=0~7,立即寻址MOV Rn,direct

;n=0~7,直接寻址MOV Rn,A

;n=0~7,寄存器寻址(3)以直接地址为目的操作数的指令。若R0=50H,R4=38H,内RAM(40H)=05H,内RAM(50H)=25H,A=12H,则MOV 50H,#20H ;(50H)=20HMOV 55H,40H ;(55H)=05HMOV 5AH,A ;(5AH)=12HMOV 60H,R4

;(60H)=38HMOV 68H,@R0 ;(68H)=25H练习5功能:把源操作数指定的内容送到由直接地址data所指定的片内RAM中。MOV direct,#data ;立即寻址MOV direct,direct ;直接寻址MOV direct,A

;寄存器寻址MOV direct,Rn ;n=0~7,寄存器寻址MOV direct,@Ri ;i=0~1,寄存器间接寻址若R0=50H,R1=60H,内RAM(38H)=05H,A=10H,则MOV @R0,#40HMOV @R1,38HMOV @R1,A练习6(4)以间接地址为目的操作数的指令。89C52单片机,若R0=95H,R1=F6H,内RAM(38H)=05H,A=10H,则MOV @R0#40HMOV @R1,38HMOV @R1,A功能:把源操作数指定的内容送到由直接地址data所指定的片内RAM中。MOV @Ri,#data ;立即寻址MOV @Ri,direct ;直接寻址MOV @Ri,A ;寄存器寻址,但不包括RnMOV DPTR,#3300H

;将一个16位立即数3300送入DPTR中

;(其中立即数33H送入DPH,立即数00H送入DPL中)。练习7(5)16位数据传送指令。功能:把16位常数送入DPTR中。16位的数据指针DPTR由DPH和DPL组成。MOV DPTR,#data16

;将一个16位数送入DPTR中(6)堆栈操作进栈指令的功能:先将堆栈指针SP的指针加1,然后把直接地址指出的内容传送到 堆栈指针SP寻址的内部RAM单元中。出栈指令的功能:将堆栈指针SP寻址的内部RAM单元的内容送入直接地址所指的 字节单元中去,同时堆栈指针减1。PUSH direct

;将直接地址中的数压入栈顶POP direct ;将栈顶中的数弹出到直接地址若SP=09H,DPTR=0123HPUSH DPL ;SP的内容加1后变为0AH,DPL的内容23H被送到地址

;为OAH的单元中PUSH DPH ;SP的内容再加1后变为0BH,DPH的内容01H被送到地址

;为OBH的单元中POP DPH ;将内部RAM中地址为OBH的单元内容传送给DPH,

;

即DPH=01H,SP的内容减1,变为0AHPOP DPL ;将内部RAM中地址为OAH的单元内容传送给DPL,

;即DPL=23H,SP的内容减1,变为09H练习83.2.1数据传送指令若DPTR=1000H,A=30H,依次执行下列指令MOVX @DPTR,A

;将累加器A中的数30H写到DPTR指示的片外RAM1000H单元中MOVX A,@DPTR

;将由DPTR指示的片外RAM1000H单元中的数30H写到累加器A练习9用DPTR作为16位地址指针进行累加器A与片外数据存储器之间的数据传送,16位地址通过P0口和P2口输出。MOVX @DPTR,A ;将累加器A中的数写到DPTR指示的片外RAM单元MOVX A,@DPTR

;将由DPTR指示的片外RAM单元中的数写到累加器A2.累加器A与片外RAM数据传送指令3.2.1数据传送指令若A=30H,R0=50H,依次执行下列指令MOVX @R0,A

;将累加器A中的数30H写到R0指示的片外RAM50H单元MOVX A,@R0

;将由R0指示的片外RAM50H单元中的数30H写到累加器A练习10用R0或R1作为低8位地址指针,由P0口送出。MOVX @Ri,A

;将累加器A中的数写到Ri指示的片外RAM单元MOVX A,@Ri

;将由Ri指示的片外RAM单元中的数写到累加器A3.2.1数据传送指令若DPTR=1000H,A=30H,PC=1200H,(1030H)=50H,(1231H)=55HMOVC A,@A+DPTR ;将1000H与30H之和1030H作为地址,取出内容50H送到AMOVC A,@A+PC ;将1201H与30H之和1231H作为地址,取出内容55H送到A练习11对存放于程序存储器中的数据表格进行查找传送。MOVC A,@A+DPTR ;A与DPTR之和作为地址,取出内容送到AMOVC A,@A+PC ;PC加1,A与PC之和作为地址,取出内容送到A3.查表指令3.2.1数据传送指令

两个数据空间的数据交换操作。 XCH A,Rn ;A的内容与Rn的内容交换

XCH A,direct ;A的内容与(direct)交换

XCH A,@Ri ;A的内容与(Ri)的内容交换

XCHD A,@Ri ;A.3~A.0与(Ri.3~Ri.0)的内容互换

SWAP A ;A.7~A.4与A.3~A.0互换4.交换指令3.2.1数据传送指令若A=30H,R0=40H,R3=50H,(38H)=61H,(40H)=58H,下列指令依次执行:XCH A,R3 ;A的内容与R3的内容交换,即A=50H,R3=30HXCH A,38H ;A的内容与38H单元的内容交换,即A=61H,(38H)=50HXCH A,@R0 ;A的内容与以R0单元内容作为地址的单元的内容交换,

;即A=58H,40H=61HXCHD A,@R0 ;A的低4位内容8H与以R0单元内容作为地址的单元的低4位内容1H交换,

;即A=51H,(40H)=68HSWAP A

;A.7~A.4与A.3~A.0互换,即A=15H练习123.2.2算术运算类指令 ADD A,Rn

;A,Rn寄存器内容加到A中

ADD A,direct

;A,直接地址内容加到A中

ADD A,@Ri

;A,间址内容加到A中

ADD A,#data

;A,立即数加到A中ADD类指令是不带进位的加法运算指令1.不带进位的加法指令3.2.2算术运算类指令ADDC A,Rn;A,Rn寄存器内容和进位位状态一并加到A中ADDC A,direct;A,直接地址内容和进位位状态一并加到A中ADDC A,@Ri;A,间址内容和进位位状态一并加到A中ADDC A,#data;A,立即数和进位位状态一并加到A中ADDC类指令是带进位的加法运算指令2.带进位的加法指令3.2.2算术运算类指令若A=0F8H,R3=75H,R1=30H,RAM(30H)=0FFH,依次执行下列指令ADD A,#20H

;将立即数20H与A内容相加传送给A,

;则A=18H,进位标志CY内容为1ADDC A,30H

;将30H单元的内容0FFH与A内容18H相加,

;再与CY相加,结果传送给A,A=18H,

;进位标志CY内容为1ADD A,R3

;将寄存器R3的内容75H与A内容18H相加传送给A, ;A=8DH,进位标志CY内容为0ADDCA,@R1 ;将寄存器R1的内容30H作为地址,将存放在该地址中的 ;内容0FFH与A内容8DH相加,再与CY相加, ;结果传送给A,A=8CH,进位标志CY内容为1练习133.2.2算术运算类指令SUBB A,Rn;A减寄存器Rn内容及进位标志存到A中SUBB A,direct;A减寄存器直接地址内容及进位标志存到A中SUBB A,@Ri;A减间址内容及进位位状态一并存到A中SUBB A,#data;A减立即数及进位位状态一并存到A中SUBB类指令是带进位的加法运算指令3.带借位的减法指令3.2.2算术运算类指令INC A ;A加1INC Rn ;Rn中内容加1INC direct ;直接地址中内容加1INC @Ri ;Ri间址中的内容加1INC DPTR ;数据指针DPTR加1INC指令功能是将操作数内容加1。4.增量(加1)指令3.2.2算术运算类指令DA A ;把A中二进制码自动调整成二-十进制码(BCD码)6.十进制调整指令MUL AB

;A×B,结果是16位,高8位存入B中,

;低8位在A中若乘积大于FFH则将溢出标志OV置1。7.乘法指令DIV AB

;A/B,商存入A,余数存入B ;当除数为0时,结果不确定,则将溢出标志OV置1。8.除法指令3.2.3逻辑运算及移位指令逻辑运算类指令包括清除、求反、移位及与、或、异或等操作。这类指令有:

ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC。ANL逻辑与指令ANL A,Rn

;A与Rn结果送到AANL A,direct

;A与direct结果送到AANL A,@Ri

;A与Ri结果送到AANL A,#data

;A与data结果送到AANL direct,A

;direct与A结果送到directANL direct,#data

;direct与data结果送到direct013.2.3逻辑运算及移位指令ORL逻辑或指令ORL A,Rn

;A或Rn结果送到AORL A,direct

;A或direct结果送到AORL A,@Ri

;A或Ri结果送到AORL A,#data

;A或data结果送到AORL direct,A

;direct或A结果送到directORL direct,#data

;direct或data结果送到direct02练习14若A=95H=10010101B;ANL A,#0FH ANL A,#0F0H练习15若A=95H=10010101B;ORL A,#0FH ORL A,#0F0H3.2.3逻辑运算及移位指令XRL逻辑或指令XRL A,Rn

;A异或Rn结果送到AXRL A,direct

;A异或direct结果送到AXRL A,@Ri

;A异或Ri结果送到AXRL A,#data

;A异或data结果送到AXRL direct,A

;direct异或A结果送到directXRL direct,#data

;direct异或data结果送到direct03练习16若A=95H=10010101B;XRL A,#95H 3.2.3逻辑运算及移位指令累加器A的逻辑操作指令(1)CPL A

;累加器A内容按位取反(2)CLR A

;累加器A清0(3)循环移位指令(共4条)

RL A ;A内容循环左移

RR A ;A内容循环右移

RRC A ;A内容与CY内容一起循环右移

RLC A ;A内容与CY内容一起循环左移04练习17若A=95H=10010101B;CY=1;分别执行上述指令,A=?3.2.4位操作类指令位操作类指令包括位变量的传送、位状态控制、修改和位逻辑操作等操作。这类指令共11种操作助记符:MOV、CLR

温馨提示

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

评论

0/150

提交评论