第3章单片机指令系统 3.1MCS-51指令简介 3.2指令系统
第3章 单片机指令系统 3.1 MCS-51指令简介 3.2 指令系统
3.1MCS一51指令简介 一、MCS一51指令格式 LOOP: MOV A RO ;将R0的内容送A [标号] 操作码第一操作数 第二操作数 [注释] (目的操作数) (源操作数) 注:白色的内容不是必须的
LOOP: MOV A, R0 ;将R0的内容送A [标号] 操作码 第一操作数 第二操作数 [注释] (目的操作数) (源操作数) 注:白色的内容不是必须的 3.1 MCS-51指令简介 一、MCS-51指令格式
二、MCS一51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址 1、数据传送指令位操 2、直接寻址 2、算术运算指令 3、寄存器寻址 3、逻辑运算指令 4、寄存器间接寻址指令 4、控制转移类指令 5、相对寻址 5、位操作指令 6、变址寻址 7、位寻址
二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址 1、数据传送指令位操 2、直接寻址 2、算术运算指令 3、寄存器寻址 3、逻辑运算指令 4、寄存器间接寻址指令 4、控制转移类指令 5、相对寻址 5、位操作指令 6、变址寻址 7、位寻址
三、寻址方式 寻址方式:寻找(或确定)操作数所在单元地址的方式。 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。 说明:以下讨论的寻址方式都是针对源操作数的。但实际 上目的操作数也有寻址问题。 1、寄存器寻址MOVA,Rn 操作数在寄存器中,如R0R7,A、B、Cy(位)、DPTR 2、直接寻址 MOV A.40H 操作数直接以单元地址形式给出(也可以寄存器名称形式 给出,但AB DPTR除外) 如:MOVA,P0;MOVR0,TH0
三、寻址方式 寻址方式:寻找(或确定)操作数所在单元地址的方式。 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。 说明:以下讨论的寻址方式都是针对源操作数的。但实际 上目的操作数也有寻址问题。 1、寄存器寻址 MOV A, Rn 操作数在寄存器中,如R0~R7,A、B、Cy(位)、DPTR 2、直接寻址 MOV A, 40H 操作数直接以单元地址形式给出(也可以寄存器名称形式 给出,但A B DPTR 除外) 如: MOV A, P0 ; MOV R0, TH0
3、寄存器间接寻址MOVA,@R1 操作数是通过寄存器间接得到的。 4、立即寻址 MOV A.#40H 操作数在指令中直接给出。 5、基址寄存器加变址寄存器寻址 以DPTR或PC为基址寄存器,以A为变址寄存器, 以两者相加形成的16位地址为操作数的地址。 MOVC A,@A+DPTR MOVC A,@A+PC
3、寄存器间接寻址 MOV A, @R1 操作数是通过寄存器间接得到的。 4、立即寻址 MOV A, #40H 操作数在指令中直接给出。 5、基址寄存器加变址寄存器寻址 以DPTR或PC为基址寄存器,以A为变址寄存器, 以两者相加形成的16位地址为操作数的地址。 MOVC A, @A+DPTR MOVC A, @A+PC
四、指令中常用符号说明 Rn 当前寄存器区的8个工作寄存器RO~R7(n≠0~7): R 当前寄存器区可作地址寄存器的2个工作寄存器 R0和R1(i=O,1): direct-一8位内部数据存储器单元的地址及特殊功能 寄存器的地址: #data- 表示8位常数(位即数); #datal6 表示16位常数: add 16- 表示16位地址: addrll-—表示11位地址; rel- 8位带符号的地址偏移量; bit- 表示位地址: @一间接寻址寄存器或基址寄存器的前缀: 表示括号中单元的内容 表示间接寻址的内容;
四、指令中常用符号说明 Rn——当前寄存器区的8个工作寄存器R0~R7(n=0~7); Ri——当前寄存器区可作地址寄存器的2个工作寄存器 R0和R1(i=0,1); direct——8位内部数据存储器单元的地址及特殊功能 寄存器的地址; #data——表示8位常数(立即数); #datal6——表示16位常数; add 16——表示16位地址; addrll——表示11位地址; rel——8位带符号的地址偏移量; bit——表示位地址; @——间接寻址寄存器或基址寄存器的前缀; ( )——表示括号中单元的内容 (( ))——表示间接寻址的内容;
五、MCS- 51指令简介 1.以累加器A为目的操作数的指令 MOV A. data;A←- data MOV A R ;n=0~7, A-(R) MOV A, @R ;i=0,1, A-(R) MOV A, direct A-R)direct为内部RAM或SFR地址 注: 例: MOV A.@Rj ; 以R的内容为地址,把该地址中 MOVR0#30用 的内容送到A中去。A一(R) M0V30H,60日 MOV A,RO ; 将R0的内容送到A去。A-(R) MOVA.@RO MOV A. #20H;(A)=20HA的内容为20H (A)=? MOV A. 20H;(A)=(20H田A的内容为20H中的内容 注意以上两组指令的不同点
五、MCS-51指令简介 1. 以累加器A为目的操作数的指令 MOV A, #data ; A← #data MOV A, Rn ;n=0~7,A←(Rn ) MOV A, @Ri ; i=0,1 ,A← ((Ri )) MOV A, direct ; A←(Rn ) direct为内部RAM或SFR地址 注: MOV A, @Ri ; 以Ri的内容为地址,把该地址中 的内容送到A中去。A←((Ri )) MOV A, R0 ; 将R0的内容送到A去。A←(R0 )) MOV A, #20H ; (A) = 20H A的内容为20H MOV A, 20H ; (A) = (20H) A的内容为20H中的内容 注意以上两组指令的不同点 例: MOV R0, #30H MOV 30H, #60H MOV A, @R0 (A)=?
2.以R为目的操作数的指令 MOV Rn,A Rn←-(A)八n=0~7 MOV Rn,direct /;Rn←-(direct) MOV Rn,#data Rn#data
2. 以Rn为目的操作数的指令 MOV Rn, A ;Rn ← (A) , n=0~7 MOV Rn , direct ;Rn ← (direct) MOV Rn ,#data ;Rn ← #data
3.以直接地址为目的操作数的指令 MOV direct.A direct(A) MOV direct,Rn direct (R) n=0~7 MOV direct, @R direct((Ri)). =0,1 MOV direct. direct direct(direct) MOV direct,#data; direct#data
3. 以直接地址为目的操作数的指令 MOV direct, A ;direct← (A) MOV direct, Rn ; direct← (Rn ) , n=0~7 MOV direct, @Ri ; direct← (( Ri) ) , i=0,1 MOV direct, direct ;direct← (direct) MOV direct, #data ;direct← #data
4.以寄存器间接地址为目的操作数指令 MOV @Ri,A (R))k-A),=0,1 MOV @R;,direct ((Ri))(direct) MOV @R;,data ((Ri))#data
4. 以寄存器间接地址为目的操作数指令 MOV @Ri, A ; ((Ri ) )← (A) ,i=0,1 MOV @Ri , direct ; ((Ri ) )← (direct) MOV @Ri ,#data ; ((Ri ) )← #data