第草单片机指令系统 31MCS-51指令简介 32指令系统
第3章 单片机指令系统 3.1 MCS-51指令简介 3.2 指令系统
31MCS-51指令简介 MCS-51指令格式 LOOP. MOV A R0;将R0的内容送A [标号]操作码第一操作数第二操作数[注释] (目的操作数)(源操作数) 注:白色的内 必须的
LOOP: MOV A, R0 ;将R0的内容送A [标号] 操作码 第一操作数 第二操作数 [注释] (目的操作数) (源操作数) 注:白色的内容不是必须的 3.1 MCS-51指令简介 一、MCS-51指令格式
二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址 1、数据传送指令位操 2、直接寻址 算术运算指令 寄存器寻址 逻辑运算指令 4、寄存器间接寻址指令4、控制转移类指令 5、相对寻址 5、位操作指令 6、变址寻址 位寻址
二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址 1、数据传送指令位操 2、直接寻址 2、算术运算指令 3、寄存器寻址 3、逻辑运算指令 4、寄存器间接寻址指令 4、控制转移类指令 5、相对寻址 5、位操作指令 6、变址寻址 7、位寻址
寻址方式 寻址方式:寻找(或确定)操作数所在单元地址的方式 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂. 说明:以下讨论的寻址方式都是针对源操作数的。但实际 上目的操作数也有寻址问题 1、寄存器寻址MOVA,Rn 操作数在寄存器中,如RO~R7,A、B、Cy(位)、DPTR 2、直接寻址MOVA,40H 操作数直接以单元地址形式给出(也可以寄存器名称形式 给出,但 AB DPTR除外) 如:MOVA,PO MOV RO. THO
三、寻址方式 寻址方式:寻找(或确定)操作数所在单元地址的方式。 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。 说明:以下讨论的寻址方式都是针对源操作数的。但实际 上目的操作数也有寻址问题。 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、立即寻址 MO∨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) Ri—一当前寄存器区可作地址寄存器的2个工作寄存器 RO和R1(i=0,1); direct-8位内部数据存储器单元的地址及特殊功能 寄存器的地址; #data表示8位常数立即数) #data16表示16位常数; add16表示16位地址; adr11-表示1位地址; 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为目的操作数的指令 MOVA#data;A←#data MOV n=07,A←(Rn) MOV A(aR i=0,1A←(R MOV/A, direct;A←( Rn) direct为内部RAM或SFR地址 汪 例 MOV A,@R 以R的内容为地址,把该地址中 MOV RO.#30H 的内容送到A中去。A←-(R) MOV30H. #60H MoA,Ro;将R0的内容送到去。A-(R) MOVA, OR0 MOVA,#20H;(A)=20HA的内容为20H (A)= MOVA,20H;(A)=(20HA的内容为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 R, A Rn←(A),n=0~7 MOV Rn,direct/ Rn+(direct MOV R, t data : Rtt 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. r direct←(Rn MOV direct,@R;; directe((Ri)), i=0, 1 MoV direct, direct directe-(direct) Mov direct, #data: directt-# 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 @R ,A ;(Ri)(A),i=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