单片机指令系统
第三章MCS51系列单片机指令系统及汇编语言程序设计

SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
8051单片机3单片机指令系统

(1) 方括号[ ]表示该项是可选项, 可有可无。 (2) 标号是用户设定的符号, 它实际代表该指令所在的地址。 标号必须以字母开头, 其后跟1~8个字母或数字, 并以“:”结 尾。 (3) 操作码是用英文缩写的指令功能助记符。它确定了本条指 令完成什么样的操作功能。如: ADD表示加法操作。任何一 条指令都必须有该助记符项, 不得省略。 (4) 操作数指的是指令操作的数据. 可以是一个数,也可以是寄 存器和特殊功能寄存器,还可以是标号地址;个数可以为0, 3 也可以为1,2,3
23
3.4.1 数据传送类指令
3.4.1 数据传送类指令
数据传送类指令共29条, 它是指令系统中最活跃、 使 用最多的一类指令。一般的操作是把源操作数传送到目的操 作数, 即指令执行后目的操作数改为源操作数, 而源操作数保 持不变 数据传送类指令不影响进位标志CY、 半进位标志AC 和溢出标志OV, 但当传送或交换数据后影响累加器A的值时, 奇偶标志P的值则按A的值重新设定。 按数据传送类指令的操作方式,又可把传送类指令分 为3种类型: 数据传送、数据交换和堆栈操作, 并使用8种助记 符: MOV、MOVX、MOVC、XCH、XCHD、SWAP、 PUSH及POP 24
3.4.1 数据传送类指令
25
3.4.1 数据传送类指令
1. 内部数据存储器间数据传送指令
内部RAM区是数据传送最活跃的区域, 可用的指令数也最 多, 共有16条指令, 指令操作码助记符为MOV,通用格式为: MOV 目的操作数 , 源操作数 内部RAM之间源操作数传递关系如下图所示
26
3.4.1 数据传送类指令
4
3.1 指令格式
指令描述符号:
在分类介绍各类指令之前, 先对描述指令的一些 符号意义进行一些简单约定:
单片机指令系统及其执行过程的详解

单片机指令系统及其执行过程的详解单片机是现代电子设备中不可或缺的组成部分,其指令系统和执行过程对于单片机的工作和性能起着至关重要的作用。
本文将详细介绍单片机指令系统的组成和执行过程,并探讨其在实际应用中的意义。
一、单片机指令系统的组成单片机的指令系统由指令集、寄存器和地址计算单元组成。
1. 指令集指令集是单片机能够执行的所有指令的集合。
它包含了各种不同类型的指令,如算术指令、逻辑指令、数据传输指令等。
不同的单片机具有不同的指令集,但通常都包括基本的算术和逻辑运算指令,以及控制流指令(如条件分支和循环)。
2. 寄存器寄存器是单片机内部用于存储数据和执行运算的存储器组件。
常见的寄存器包括通用寄存器、标志寄存器、程序计数器等。
通用寄存器用于存储临时数据,标志寄存器用于存储运算结果的状态信息,程序计数器用于存储当前正在执行的指令地址。
3. 地址计算单元地址计算单元用于计算指令中的操作数的地址。
它根据指令中的寻址方式和地址模式,将指令中的操作数地址计算出来,并将其传递给存储器或寄存器。
二、单片机指令执行过程单片机的指令执行过程包括指令取指、指令译码和指令执行三个阶段。
1. 指令取指在指令取指阶段,程序计数器(PC)从存储器中读取下一条指令的地址,并将其存储在指令寄存器(IR)中。
同时,PC的值自动递增,准备读取下一条指令。
2. 指令译码在指令译码阶段,单片机将指令寄存器中的指令译码为对应的操作。
根据指令的类型和操作码,单片机确定需要执行的具体操作,如运算、数据传输或控制流操作。
3. 指令执行在指令执行阶段,单片机根据译码结果执行具体的操作。
这包括算术和逻辑运算、数据传输等。
执行结果可以存储在寄存器中,也可以写入存储器。
同时,单片机还会根据程序的控制流进行条件分支或循环。
三、单片机指令系统的应用意义单片机指令系统的优化对于提高单片机的执行效率和性能至关重要。
通过合理设计指令集,可以充分发挥单片机的计算和控制能力,提高其运算速度和响应能力。
第9章 单片机的指令系统说明

计算机总是把操作数当作有符号数(补码形式)看待 并影响PSW的相关标志位。影响情况如下: 进位/借位标志CY: 两数和的D7位有进位时,(CY)=1,否则,(CY)=0。 半进位/借位标志AC: 两数和的D3位有进位时,(AC)=1,否则,(AC)=0。 溢出标志OV: 两数和的D7,D6位只有一位有进位时,(OV)=1;否则, (OV)=0,即OV=C6⊕C7。 奇偶标志P: 当累加器A中“1”的个数为奇数时,(P)=1;为偶数 时(P)=0。
例2 把片外RAM的36H单元中的数据送到片外RAM的 1200H单元。 〈分析〉(36H)→(1200H) 程序如下: MOV R1,#36H MOVX A ,@R1 MOV DPTR,#1200H MOVX @DPTR, A <想一想>下面的程序可以实现吗? MOV DPTR, #1200H MOV R1,#36H MOV @DPTR,@R1 注意:片外RAM之间不能直接传送数据,必须经过累加器 A
例5 试分析8051单片机执行下述指令后,累加器A和PSW各标 志位的变化。 MOV A,#0A5H ADD A,#0CFH 解: (A)=10100101B + Data=11001111B CY 01110100B C7 C6 AC (CY)=C7=1;(AC)=1;溢出标志(OV)=C7⊕C6=1⊕0=1,有 溢出;(P)=0。执行结果:(A)=74H。 若为无符号数运算, (CY)=1,表示结果超出(0~255) 范围。若为带符号数运算,因(-49)+(-91)=-140,超出了 (-128~+127)的范围,所以OV=1溢出。
半字节交换 XCHD A,@Ri SWAP A
;(A3~0)((Ri)3~0) ;(A3~0)(A7~4)
第3章MCS1的指令系统

7.位寻址
3.4
MCS-51指令系统分类介绍
MCS-51 的指令系统,共有 111 条指令,按功能分类, 可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条)
(4)控制转移类(17条)
(5)位操作类(17条)
26
3.4
MCS-51指令系统分类介绍
程序存储器 DPTR
2000H A
2010H 64H 64H(10H) 10H
2000H
变址寻址示意图
18
5.基址寄存器加变址寄存器间址寻址方式(变址寻址) 说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围 可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR
8
3.3
1.寄存器寻址方式
指令系统的寻址方式
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 寄存器寻址就是从寄存器中读取操作数或存放操作数进寄存
器。
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器 DPTR等。
在相对寻址的转移指令中,给出了地址偏移量,以“rel” 表示,即把 PC 的当前值加上偏移量就构成了程序转移的目的
地址:
目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元
MCS-51单片机指令系统

6、堆栈操作指令
进栈 【PUSH direct;(SP)+1→SP,(dirsct)→(SP)】 出栈 【POP direct;(SP)→(dirsct),(SP)-1→SP】
MCS-51指令系统中有两条读程序存储器中表格数据的指令。 因为对程序存储器只能读不能写,所以查表指令数据传送都是单向的, 即从程序存储器到累加器中。
SETB C;1→C置一
3、位逻辑运算指令
ANL C,bit;C)∧(bit)→C
ORL C,/bit;(C)∨(~bit)→C
“ / “表示取反
JB bit,re1;若(bit)=1,则(PC)+rel→PC;否则,(PC)+3→PC
4、位条件转移指令
JNB bit,re1;若(bit)=0,则(PC)+rel→PC;否则,(PC)+3→PC
1、逻辑与指令【ANL A,#data;(A)∧data→A 】
2、逻辑或指令【ORL A,#data;(A)∨data→A】
3、逻辑异或指令【XRL A,#data;(A)⊕data→A】
4、累加器A清零指令【CLA A;0→A 】
5、累加器A取反指令【CPL A; ̅A→A】
RL A;左循环移位指令
2、以Rn为目的操作数的指令 【MOV Rn, #data;data→Rn】 (源操作数:累加器A、片内RAM单元、SFR内容,立即数) 传送到当前工作寄存器组R0~R7的某个寄存器
3、以直接地址为目的操作数的指令 【MOV direct, #data;data→direct】 (源操作数:累加器、片内RAM单元、工作寄存器,立即数) 传送到由direct所指的片内存储单元
返回指令
单片机原理与应用第3章8051单片机指令系统

80H SJMP 38H
38H 1832H+2
(1832H)
186CH
1834H 186CH
7.位寻址
对片内RAM中20H~2FH中的128个位地址及SFR中的 可位寻址的位地址寻址。
例如: MOV C,20H;20H位即24H.0的内容送CY标志 位,C称为位累加器。 MOV A,20H ;字节寻址,将内部 RAM中20H单 以上两条指令均为直接寻址,究竟是位寻址还是字节寻 址,根据两操作数类型一致的原则,由另一个操作数决定。 例如, MOV ACC.7, C
• • • • •
指令分类 数据传送指令(29条) 算术运算指令(24条) 逻辑运算和移位指令(24条) 位操作指令 (17条) 控制转移指令(17条) 共111条
3.2 寻址方式
指令中操作数提供的方式称为寻址方式。
指令符号约定
符号 Rn Ri #data addr16 addr11 direct rel 含 义
3.直接寻址: 操作数的地址直接出现在指令中。
寻址对象:①内部数据存贮器:使用它的地址 ②特殊功能 寄存器:既可使用它的地址,也可以 直接使用寄存器名。 例:MOV A,40H ; A=56H 机器码 E540H
41H 40H
78H 56H
MOV 40H,41H ; 机器码为854140H 内部RAM (41H)→(40H) 41H (40H)=(41H)=78H 40H MOV P0,#45H ;45H→P0, P0为直接寻址的 SFR,其地址为 80H, 机器码为758045H
操作数存放在寄存器中。 寻址对象:A,B,DPTR,R0~R7 。 B 仅在乘除法指令中为寄存器寻址,在其他指令中为直 接寻址。 A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC。
单片机第4章8051单片机指令系统

单片机第4章8051单片机指令系统在单片机的世界里,指令系统就如同指挥官手中的指令手册,指引着单片机完成各种复杂的任务。
8051 单片机的指令系统更是其中的重要组成部分,它为我们提供了丰富多样的指令,让我们能够灵活地控制单片机的运行。
8051 单片机的指令系统可以分为五大类,分别是数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。
数据传送指令是指令系统中的基础,就像是在战场上调配物资一样。
它能够实现寄存器之间、寄存器与存储器之间、立即数与寄存器或存储器之间的数据传递。
比如 MOV 指令,它可以将一个数据从源地址传送到目的地址。
假设我们要将立即数 50H 传送到累加器 A 中,就可以使用指令“MOV A, 50H”。
这样,累加器 A 就存储了 50H 这个数值。
算术运算指令则像是在进行战斗中的兵力计算。
它包括加法、减法、乘法和除法等运算。
ADD 指令用于加法运算,SUBB 指令用于带借位的减法运算。
例如,我们要将累加器 A 中的值与寄存器 B 中的值相加,并将结果存放在累加器 A 中,就可以使用指令“ADD A, B”。
如果要进行带借位的减法运算,比如从累加器 A 中减去寄存器 B 中的值以及借位标志位 CY 的值,可以使用指令“SUBB A, B”。
逻辑运算指令就像是在制定战略时的思考逻辑。
AND 指令用于逻辑与操作,ORL 指令用于逻辑或操作,XRL 指令用于逻辑异或操作。
以 AND 指令为例,如果我们要将累加器 A 中的值与立即数 80H 进行逻辑与操作,并将结果存放在累加器 A 中,就可以使用指令“AND A, 80H”。
控制转移指令则是指挥战斗中的战略部署调整。
它可以改变程序的执行顺序,使单片机能够根据不同的条件执行不同的程序段。
比如 JZ 指令,如果累加器 A 的值为 0,则程序跳转到指定的地址;JC 指令,如果进位标志位 CY 为 1,则程序跳转到指定的地址。
位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;(direct) ← (A)
SETB 88H.5 ;88H单元的位5
(3)特殊功能寄存器符号加位的表示方法。 SETB PSW.5 PSW寄存器的位5,则表示为PSW.5。
(4)位名称表示方法,特殊功能寄存器中的 一些寻址位是有名称的。 SETB F0 PSW寄存器位5为F0标志位。
操作数寻址方式和有关空间
寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址
目的地址=转移指令所在地址十转移指令字节数十rel
rel是一个带符号的8位二进制补码数,范围是: -128 ~ +127。偏移量为正时,往地址增大的方向, 为负时,向地址减小的方向。
例如: JC 03H ;假设当前PC值为1000H 转移地址为:1000H + 2H +(03H)=1005H
转移指令字节数 JC 03H的机器码为40H、03H
2、 以寄存器Rn为目的操作数的指令组,共有3条:
MOV Rn,A
;(Rn) ← (A)
MOV Rn,ditect ; (Rn) ← (direct)
MOV Rn,#data ; (Rn) ← #data
例: MOV R3, #30H
3、以直接地址direct为目的操作数的指令组,共有5条
指令:
MOV direct,A
它的功能是把源字节的内容送到目的字节,而源字 节的内容不变。
一、内部RAM数据传送指令
1、 以累加器A为目的操作数的指令组,共有4条:
MOV A,Rn
; (A) ← (Rn)
MOV A,direct ; (A) ← (direct)
MOV A,@Ri
; (A) ← ((Ri))
MOV A,#data ; (A) ← #data
Hale Waihona Puke addr16 表示16位地址。 addr11 表示11位地址。 rel 补码形式的表示8位地址偏移量。 $ 表示当前指令的地址。 A 累加器 B B寄存器 C 进位位 @ 间址寄存器的前缀标志
七种寻址方式 :
1、立即寻址 2、直接寻址 3、寄存器寻址 4、寄存器间接寻址 5、相对寻址 6、变址寻址 7、位寻址
指令的表示方法称为指令格式,其内容包括指令 的长度和指令内部信息的安排等。一条指令通常 由操作码和操作数两部分组成。
操作码 [操作数] ;[注释]
NOP INC R0 MOV R0,R7
指令的长度有单字节、双字节和三字节等。
普通RAM共80个字节 位寻址区(16*8=128位) 寄存器工作组(由RS1、RS0选择)
操作数地址为E0H十2000H=20E0H,若20E0H单 元的内容为47H,则该指令执行的结果是A的内容 为47H。
7、位寻址
位寻址 的范围: (1)片内RAM中的位寻址区 (2)可位寻址的特殊功能寄存器位
寻址位在指令中有四种表示方法: (1)直接使用位地址表示方法。
SETB 8DH (2)单元地址加位的表示方法。
4、寄存器间接寻址
寄存器间接寻址是指在指令中要到寄存器 的内容所指的地址去取操作数。即寄存器 中放的是操作数的地址。在寄存器的名称 前面加前缀“@”。
只能使用R0或R1。
例如: ANL A,@R1
寄存器间接寻址的范围:
(1)片内RAM低128单元:这里只能使用R0或R1 为 间址寄存器,其通用形式写为@Ri(i=0,1)。
偏移量
6、变址寻址(基址寄存器+变址寄存器间接寻址)
变址寻址是指以DPTR或PC作基址寄存器,累加器 A作变址寄存器,以两者内容相加形成的16位程序 存储器地址作为操作数地址。又称基址寄存器+变 址寄存器间接寻址。
MOVC A , @A+DPTR
MOVC A , @A+PC
假设 :(A)=E0H,(DPTR)=2000H
§3.2 寻址方式
Rn 工作寄存器,可以是R0-R7中的任意一个。 #data 8位立即数,在00H~FFH范围内。如 #12H。 direct 片内RAM单元的直接地址。
Ri R0或R1。 #data16 表示16位立即数。如:1234H。 @DPTR 表示以DPTR为数据指针进行间接寻址。用
于对片外地址寻址。 bit 位地址。如 SETB bit。
片内RAM的20H ~ 2FH字节地址和部分特殊功能 寄存器SFR
§3.3 数据传送指令
数据传送指令共有28条。按照功能又可分为: 一般传送指令、目的地址传送指令、累加器 传送指令和栈操作传送指令。
一般传送指令格式 MOV <目的字节>,<源字节> MOVX <目的字节>,<源字节> MOVC <目的字节>,<源字节>
变址寻址 相对寻址 位寻址
寻址空间
程序存储器ROM 片内RAM低128B和特殊功能寄存器SFR 工作寄存器R0 ~ R7,A,B,CY,DPTR
片内RAM低128B [ @R0,@R1],片外RAM( @R0, @R1, @DPTR)
程序存储器(@A+PC, @A+DPTR)
程序存储器+127B ~ -128B范围(PC+偏移量)
MOV A,@R0
(2)片外RAM 64KB:使用DPTR作为间址寄存 器,其形式为@DPTR,例如:
MOVX A,@DPTR
(3)片外RAM低256单元:也可使用R0或R1作 间址寄存器。例如:
MOVX A,@R0
5、相对寻址
相对寻址是指在指令中给出的操作数为程序转移的 偏移量。相对寻址是为实现程序的相对转移而设立 的,为相对转移指令所采用。
第三部分 80C51的指令系统
§3.1 指令系统简介
MCS-51 的 指 令 系 统 共 有 111 条 指 令 , 按 其 功能可分为五大类:
数据传送类指令(28条) 算术运算类指令(24条) 逻辑运算类指令(25条) 控制转移类指令(17条) 布尔操作(位)类指令(17条)
指令格式
1、立即寻址
例如: MOV A, #3AH
立即数前 面加“#”
MOV DPTR ,#data16
2、直接寻址
直接寻址是指在指令中直接给出操作数单元的
地址。 MOV A ,3AH
片内RAM 地址
直接寻址是访问特殊功能寄存器的唯一方法。
3、寄存器寻址
例如:INC R0 寄存器寻址的寻址范围包括: (1) 四个寄存器组共32 个通用寄存器 (2) 部分特殊功能寄存器