2019/12/23 一、8051指令系统分类 旋点用的有空间可分为 单片机原理及其应用 夏字 51指令可分为以下五类 传送类指今29条 运坐指 第二幸MCS-51指令系统 7案 乘、雕法指) 二、指令格式 三、寻址方式 MCS51汇情指令由兼作码助记特李及和操作数李受所血成: ·号业方式:就是湘令中给出参与运算的操作数的方式 指◆格式加下: ,MC351单片机有七种哥址方式: 5变址闻楼 个英 ·2、直楼哥址 6、州对哥址 ·子寄存器丹址 不寄存喜间接平址
2019/12/23 1 第二章 MCS-51指令系统 一、8051指令系统分类 按照指令占用的存储空间可分为: 单字节指令(49条) 双字节指令(45条) 三字节指令(17条) 按照指令的功能划分,8051指令可分为以下五类: 数据传送类指令(29条) 算术运算类指令(24条) 逻辑运算类指令(24条) 控制转移类指令(17条) 位操作类指令(17条) 按照指令的执行时间可分为: 单周期指令(64条) 双周期指令(45条) 四周期指令(2条,乘、除法指令) 二、指令格式 MCS-51汇编指令由操作码助记符字段和操作数字段所组成。 指令格式如下: 标号:操作码 ︹ [操作数1] [,操作数2] [,操作数3] [;注释] 标号加在指令之前,标号必须以字母开 始,后跟1~8个字母或数字,并以“:” 结尾,用户定义的标号不能和汇编保留 符号(包括指令操作码助记符以及寄存 器名等)重复。标号的值是它后面的指 令存储地址。 操作码表明操作的种 类,由2~5个英文字 母所组成,如JB、 MOV、CJNE、 LCALL等。 它以一个或几个空格和操作码隔 开,根据指令功能的不同,操作 数可以有1、2、3个或没有(如 NOP)。操作数之间以“,”分开。 它以“;”和操作数分开。如果一行写不下, 可以另起一行,但都必须以“;”开始。注释 的作用:是用户对某一条指令或某一段程序 的功能说明,在指令中不起作用。 三、寻址方式 • 寻址方式:就是指令中给出参与运算的操作数的方式 • MCS-51单片机有七种寻址方式: • 1、立即寻址 5、变址间接寻址 • 2、直接寻址 6、相对寻址 • 3、寄存器寻址 7、位寻址 • 4、寄存器间接寻址 1 2 3 4
2019/12/23 1.立即寻址 2.直楼寻址方式 ·指令中直接给出操作数所在存储单元的地址 ,立即寻址方式中作歌包含在指令中。即操作数以指令字节的形式 ,直接寻址方式访问以下三种存储空间: 存破于程存储器中。在绿作码后面。用“表示 ,特珠功能态存器(S只能用直接寻址方式访间): 操作数可以是8位的。也可以是16位的. ◆内部数据存储器RAM低128字节 位地址空间 ·如 ADD A.WODIH 3.寄存器寻址 4.寄存器间接寻址 ·由指令指出某一个寄存器的内容作为操作数 寄存器间接寻址是指将存放接作数的内存单元的地址被在寄存器中 可用寄存器寻址方式访同等南存有 指令中只给出该寄存器。寄存器前面必须加上符号“@,执行指令时。 的-R,A息DPTR进位标志C(布尔处蛋器的聚加器9等 首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操 作数井完成相应操作 · :将位家加和
2019/12/23 2 1. 立即寻址 • 立即寻址方式中操作数包含在指令中。即操作数以指令字节的形式 存放于程序存储器中。在操作码后面。用“#”表示。 操作数可以是8位的,也可以是16位的。 • 如: MOV A,#3AH ; 3AHA MOV DPTR,#23C8H ; 23C8H DPTR ADD A,#0D4H ;(A)+0D4H A 2. 直接寻址方式 • 指令中直接给出操作数所在存储单元的地址 • 直接寻址方式访问以下三种存储空间: ●特殊功能寄存器(SFR只能用直接寻址方式访问); ●内部数据存储器RAM低128字节 ●位地址空间 • 如: MOV A,3AH ;(3AH)A • MOV P1,R0 ;(R0)P1口 INC 58H ;(58H)+1 58H SUBB A,TL0 ;(A)-(TL0) A 3. 寄存器寻址 • 由指令指出某一个寄存器的内容作为操作数 可用寄存器寻址方式访问的寄存器有: R0~R7、A、B、DPTR、进位标志C(布尔处理器的累加器C)等 • 如:MOV A,R0 ;(R0)A MOV P1, A ; 将累加器A的内容送 到P1口 MOV P1, R4 ;将寄存器R4的内容送到P1口 CLR A ;将累加器A清0 CLR C ;将位累加器C清0 4. 寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中, 指令中只给出该寄存器。寄存器前面必须加上符号“@”。执行指令时, 首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操 作数并完成相应操作。 注: 在MCS-51指令系统中,用于寄存器间接寻址的寄存器 有R0、R1和DPTR,称为间接寻址寄存器。 5 6 7 8
2019/12/23 5.变址寻址 1.用选定的工作寄存器区中的R0或R1作地址指针来寻址片内RAM的1288 (O0-7F刊)或片外RAM的低256空间(O0-0FFH ,变址号址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的 誉数人宝黄装导世方 只能访间程序存储器,范国:64KB MCS-51指令系统中总共有如下三亲显寄存器加变址寄存器同暖寻址指令 乙。用DPTR作地址缩针来进行态存器间接寻址 ·如:设(DPTR}=2000 A外BAM ·O.@DPTR外RAM的2OO0H单元的内容→A JMP 2A+DPTR ((A)+(DPTR)>PC 6.相对寻址 7.位寻址 相对寻址是指程计数器PC的当前内容与指令中的操作数相,其结果作 转指令的移地址(他称目的地地)。该类寻址方式只用于转指令】 为00 SFR中有11个寄存器可以位寻址 目的地址=源地址+相对转移指令字节敬+ 位寻址的两种方式: 直接使用位地址 2减诗节>· 特殊功能寄存器可由寄存器名字加位数表示 E75H(P0+2+75H>PC0霸S> 0H牛的位7面1
2019/12/23 3 1、用选定的工作寄存器区中的R0或R1作地址指针来寻址片内RAM的128B (00~7FH)或片外RAM的低256B空间(00~0FFH)。 • 如:设(R0)=65H,(65H)=47H MOV A,@R0 ;(65H)A,A中的值是47H MOV @R0,#3AH;3AH65H MOVX A,@R0 ;外RAM的(65H) A 带X为访问外部RAM的指令 2、用DPTR作地址指针来进行寄存器间接寻址 • 如:设(DPTR)=2000H • MOVX @DPTR,A ;A外部RAM的2000H单元 • MOVX A,@DPTR ;外RAM的2000H单元的内容 A 5. 变址寻址 • 变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的 地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式 主要用于查表操作。 • 只能访问程序存储器,范围:64KB • MCS-51指令系统中总共有如下三条基寄存器加变址寄存器间接寻址指令 MOVC A,@A+DPTR ;((A)+(DPTR))A MOVC A,@A+PC ;((A)+(PC))A JMP @A+DPTR ;((A)+(DPTR))PC 6. 相对寻址 相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作 为跳转指令的转移地址(也称目的地址)。该类寻址方式只用于跳转指令。 目的地址=源地址+相对转移指令字节数+rel 如 JC 75H;(PC)+2+75H->PC 2字节或3字节 8位带符号数 7. 位寻址 操作数按8位二进制数中的某一位为单元进行存取和操作,而上述介绍的指 令都是按字节进行的寻址操作。当我们把某一位作为操作数时,这个操作数 的地址称为位地址。 直接使用位地址 特殊功能寄存器可由寄存器名字加位数表示 位寻址的两种方式: MOV C,01H ;01H为位地址 SETB EA ;中断允许寄存器IE的位7置1 位寻址区包括专门安排在内部RAM中的两个区域: 一是内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元, 位地址为00H~7FH; 二是特殊功能寄存器SFR中有11个寄存器可以位寻址 9 10 11 12
2019/12/23 单片机中的数 第二节数据传送类指令 名称形式 说明 MC-51的数据传送操作可以在累加器A工作寄存器R0-R7,内部数据 1R0 R7 本上是访的内部RAM 存储器.外部数据存储器和程序存能器之间进行,其中对A和R0-R7的操 作层多。 珠功能寄存内都】 地出 数据传送操作是指把数据从添地址传送到日的地址,添地址内容不变 86P0R1 目的地址潭地址 RA+DPTR 存内或外用 1.片内8位最摆传送搬净(15条) 提理干军诺头机内都中青存之周给素清作 OV<目的提作>作新 已知相应单元的内容如下,请指出每条指令执行后相应单 量加器八 (1)M0VA#201 等得春Rw (②MOVA40H (3)MOV ARO e-A (4)MOVA@RO 注意:以上传送指令的情果均影响混序状态字膏存SW的P标去
2019/12/23 4 名称 形式 说明 单 片 机 中 的 数 立即 数 #0f0h 8位立即数 #1234h 16位立即数 寄存 器 R0.R7 本质上是访问的内部RAM A B DPTR. 特殊功能寄存器(内部) 存 储 器 10H(8位直接 地址) 可能是字节地址,也可能是位地址, 但只能访问内部RAM或SFR @R0或@R1 @DPTR 8位及16位寄存器间接寻址, @R1 或@R0内部RAM或外部RAM, @DPTR只能为外部RAM(内用 MOV,外用MOVX) @A+PC @A+DPTR 用于访问程序存储器(内或外都用 MOVC) 单片机中的数 MCS-51的数据传送操作可以在累加器A、工作寄存器R0~R7、内部数据 存储器、外部数据存储器和程序存储器之间进行,其中对A和R0~R7的操 作最多。 数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。 数 据 目的地址 源地址 第二节 数据传送类指令 1. 片内8位数据传送指令(15条) 主要用于MCS-51单片机内部RAM与寄存器之间的数据传 送。指令基本格式: MOV <目的操作数>,<源操作数> 1) 以累加器A为目的地址的传送指令(4条) 助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV A,Rn 11101rrr ARn n=0~7, rrr=000~111 1 MOV A,direct 11100101 direct A (direct) 1 MOV A,@Ri 1110011i A (Ri) i=0,1 1 MOV A,#data 01110100 data A #data 1 注意:以上传送指令的结果均影响程序状态字寄存器PSW的P标志。 例 已知相应单元的内容如下,请指出每条指令执行后相应单 元内容的变化。 累加器A 40H 寄存器R0 50H 内部RAM:40H 30H 内部RAM:50H 10H (1) MOV A,#20H (2) MOV A,40H (3) MOV A,R0 (4) MOV A,@R0 13 14 15 16
2019/12/23 2以R■为目的地址的传送指令(3条) 以直接地址为目的地 上的传送指令(5亲】) n. 注意:以上传送指令的结果不影响程序状老字青存最PSW标志, 生意:以上 )以寄存器间援地址为目的地址的传送指令(3条 器二股视应单无的内容如下。清指出下列指令线行后备维元内 OV RiA MOV RLet 主意:以上传送指的果 字存悬PSW标法
2019/12/23 5 2) 以Rn为目的地址的传送指令(3条) 助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV Rn,A 11111rrr Rn A n=0~7, rrr=000~111 1 MOV Rn,direct 10101rrr direct Rn (direct) n=0~7, rrr=000~111 1 MOV Rn,#data 01111rrr data Rn #data n=0~7, rrr=000~111 1 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。 3) 以直接地址为目的地址的传送指令(5条) 助记符格式 机器码(B) 相应操作 指令说明 机器周 期 MOV direct,A 11111010 direct (direct) A 1 MOV direct,Rn 10001rrr direct (direct )Rn n=0~7, rrr=000~111 1 MOV direct2,direct1 10000101 direct1 direct2 (direct2) direct1 2 MOV direct,@Ri 1000011i direct (direct )(Ri) i=0,1 2 MOV direct,#data 01110101 direct data (direct)#dat a 2 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。 4) 以寄存器间接地址为目的地址的传送指令(3条) 助记符格式 机器码(B) 相应操作 指令说 明 机器周 期 MOV @Ri,A 1111011i (Ri)A i=0,1 1 MOV @Ri,direct 1110011i direct (Ri)(direc t) 2 MOV @Ri,#data 0111010i data (Ri)#data 1 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。 例: 已知相应单元的内容如下,请指出下列指令执行后各单元内 容相应的变化。 寄存器R0 50H 寄存器R1 60H 寄存器R6 30H 内部RAM:50H 60H 内部RAM:60H 45H 内部RAM:70H 40H (1) MOV A,R6 (2) MOV 70H,50H (3) MOV R0,70H (4) MOV 40H,@R0 (5) MOV @R1,#88H 17 18 19 20