第3章 指令系统(8学时)
时间:2026-01-20
时间:2026-01-20
C51单片机学习
FFFFH
FFFFH
FFH E0H
A SFR
80H 30H 20H 0000H ROM 00H 内RAM 数据缓冲 区 位寻址区 寄存器区 0000H 外RAM
C51单片机学习
第3章 MCS-51指令系统指令的格式: 指令的格式: LOOP: MOV [标号] 操作码 A, R0 ;将R0的内容送 的内容送A 将 的内容送 [注释] 第一操作数 第二操作数 目的操作数) 源操作数) (目的操作数) (源操作数)
注:白色的内容不是必须的
C51单片机学习
3.2 数据传输类指令以累加器A 1. 以累加器A为目的操作数的指令 MOV MOV MOV MOV A, A, A, A, #data Rn @Ri direct ; n=0~7 ; i=0,1 ;内部RAM或SFR地址
注意: 注意: MOV A, @Ri MOV MOV
以Ri的内容为地址 ,把该地址中 的内容送到A中去。A← ((Ri)) A, #20H ; (A) = 20H A, 20H ; (A) = (20H)
C51单片机学习
2. 以Rn为目的操作数的指令MOV MOV MOV R n, A Rn , direct Rn ,#data ; n=0~7
C51单片机学习
3.以直接地址为目的操作数的指令 3.以直接地址为目的操作数的指令MOV MOV MOV MOV MOV direct, direct, direct, direct, direct, A Rn ; n=0~7 @Ri ; i=0,1 direct #data
C51单片机学习
4. 以寄存器间接地址为目的操作数指令MOV @Ri, A MOV @Ri , direct MOV @Ri ,#data ; i=0,1
C51单片机学习
应用举例1MOV P1, #0FEH ; 11111110B 可以使P1.0上的发光二极管点亮 上的发光二极管点亮 可以使 MOV P1, #0F0H ; 11110000B 可以使P1口上的上面 个发光二 可以使 口上的上面4个发光二 口上的上面 极管点亮 5v P1.0 a P1.1 b P1.2 c P1.3 d P1.4 e P1.5 f P1.6 g P1.7 dp
C51单片机学习
8段数码管显示P1.0 a P1.1 b P1.2 c 5v P1.3 d P1.4 e P1.5 f MOV P1, #00H ; 显示 8. MOV P1, #0F8H ; 显示 7 MOV P1, #77H ; 显示 A P1.6 g P1.7 dp
C51单片机学习
应用举例2一个引脚的高低电平,可以通过“光电耦合器” 一个引脚的高低电平,可以通过“光电耦合器”控制 继电器,从而以“弱电”控制“强电” 继电器,从而以“弱电”控制“强电”。
C51单片机学习
3.1 寻址方式指令的格式: 指令的格式: LOOP: [标号] MOV 操作码 A, 第一操作数(目的操作数) 目的操作数)
R0 第二操作数(源操作数) 源操作数)
;将R0的内容送 将 的内容送 的内容送A [注释]
注:白色的内容不是必须的
寻址方式:寻找(或确定)操作数所在单元地址的方式。 寻址方式:寻找(或确定)操作数所在单元地址的方式。 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。 寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。 说明:以下讨论的寻址方式都是针对源操作数的。 说明:以下讨论的寻址方式都是针对源操作数的。但实际上目 的操作数也有寻址问题。 的操作数也有寻址问题。
C51单片机学习
3.1.1 寄存器寻址
MOV A, Rn
操作数在寄存器中, 操作数在寄存器中,如R0~R7,A、B、Cy(位)、 , 、 、 ( )、DPTR 3.1.2 直接寻址 MOV A, 40H
操作数直接以单元地址形式给出(也可以寄存器名称形式给
出, 除外) 操作数直接以单元地址形式给出(也可以寄存器名称形式给出,但A B DPTR 除外) 如: MOV A, P0 ; MOV R0, TH0
3.1.3 寄存器间接寻址
MOV A, @R1
操作数是通过寄存器间接得到的。 操作数是通过寄存器间接得到的。 3.1.4 立即寻址 MOV A, #40H
操作数在指令中直接给出。 操作数在指令中直接给出。 3.1.5 基址寄存器加变址寄存器寻址 为基址寄存器, 为变址寄存器, 以DPTR或PC为基址寄存器,以A为变址寄存器, 或 为基址寄存器 为变址寄存器 以两者相加形成的16位地址为操作数的地址 位地址为操作数的地址。 以两者相加形成的 位地址为操作数的地址。 MOVC A, @A+DPTR MOVC A, @A+PC
C51单片机学习
5. 16位数据传输指令MOV DPTR, #data16
DPTR----数据指针,为SFR中(DPH)、(DPL)
C51单片机学习
6. 堆栈操作指令进栈指令 PUSH direct
如: (SP)=60H, (A)=30H ,(B)=70H 时,执行 PUSH Acc ;(SP)+1=61H→SP, (A) → 61H PUSH Acc ;(SP)+1=61H→SP, (A) → 61H 结果: 结果 (61H)=30H, (62H)=70H, (SP)=62H
退栈指令
POP
direct
如: (SP)=62H, (62H)=70H ,(61H)=30H 时,执行 POP DPH ;((SP)) →DPH, (SP)-1=61H→SP - POP DPHL ;((SP)) →DPL, (SP)-1=60H→SP - 结果: 结果 (DPTR)=7030H, (SP)=60H 堆栈的存储原则: 堆栈的存储原则:先进后出
C51单片机学习
7. 累加器A与外部数据传输指令MOVX MOVX MOVX MOVX A, @DPTR ;范围64K A, @Ri ;范围0~255 @DPTR, A @Ri , A
C51单片机学习
8. 查表指令(1)MOVC A, @A+DPTR 例: (DPTR)=0300H, (A)=02H ROM中 (0302H)=55H 执行: MOVC A, @A+DPTR 结果:(A)=55H
C51单片机学习
(2)MOVC A, @A+PCPC--程序指针,指向下一条指令的地址 例:根据A中的内容(0~9)查平方表
…… 此处隐藏:677字,全部文档内容请下载后查看。喜欢就下载吧 ……