单片机指令系统
第三章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,则程序跳转到指定的地址。
位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。
03.9 第三章 - 单片机指令系统(位操作指令MOV、SETB、CLR、CPL、ANL、ORL)
;A = 59H = 0101 1001B ;P1 = A = 0101 1001B ;C = 1 ;ACC.1 = 1 ;P1.3 = 0 ;P1.6 = 0 ;P1.2 = 1 ;(20H)= P1 = 0001 0101B ;(30H)= A = 0101 1011B
09:43
单片机技术
8
3.9.2 位控制指令(SETB、CLR、CPL)
;P1.0 = 1 ;ACC.3 = 0 ;C = 1 ;C = 1 ;C = 1 ;P3.4 = 1
09:43
单片机技术
14
3.9.3 位条件转移指令(JC、JB、JBC)
❖ 1.判C转移指令ຫໍສະໝຸດ JC、JNC)JC rel
;先PC←PC+2;若(Cy)= 1时转移,且PC'
=PC+rel,否则顺序执行
CPL bit ;(bit)= (/bit)
▪ 功能:将Cy或bit取反。
09:43
单片机技术
9
3.9.2 位控制指令(SETB、CLR、CPL)
❖ 课堂练习
▪ 执行以下指令?
SETB P1.0 CLR 20H CLR PSW.2 CPL PSW.2 CLR RS0 SETB RS1
;P1.0 = 1 ;20H = 0 ;PSW.2 = 0 ;PSW.2 = 1 ;RS0 = 0 ;RS1 = 1
❖ 1.位置1指令(SETB)
▪ 格式:SETB C ;(Cy) = 1
SETB bit ;(bit)= 1
▪ 功能:将Cy或bit置1。
❖ 2.位置0指令(CLR)
▪ 格式:CLR C ;(Cy) = 0
CLR bit ;(bit)= 0
▪ 功能:将Cy或bit置0。
单片机第3章 AT89S51单片机的指令系统
单片机第3章 AT89S51单片机的指令系统在单片机的世界里,指令系统就像是指挥单片机工作的“语言”,它决定了单片机能够完成哪些任务以及如何高效地完成这些任务。
AT89S51 单片机的指令系统丰富多样,为我们实现各种功能提供了强大的支持。
首先,让我们来了解一下指令的基本格式。
AT89S51 单片机的指令通常由操作码和操作数两部分组成。
操作码指明了要执行的操作,比如加法、减法、数据传送等;操作数则提供了操作所需的具体数据或者数据的地址。
AT89S51 单片机的指令可以分为数据传送类指令、算术运算类指令、逻辑运算类指令、控制转移类指令等几大类。
数据传送类指令是最为基础和常用的指令之一。
比如 MOV 指令,它可以实现将一个数据从一个位置传送到另一个位置。
例如 MOV A,50H ,就是将十六进制数 50H 传送到累加器 A 中。
算术运算类指令用于进行加、减、乘、除等运算。
例如 ADD A, R0 ,就是将累加器 A 的内容和寄存器 R0 的内容相加,结果存放在累加器A 中。
逻辑运算类指令则用于对数据进行与、或、异或等逻辑操作。
比如ANL A, 0FH ,就是将累加器 A 的内容和十六进制数 0FH 进行与运算。
控制转移类指令在程序的流程控制中起着关键作用。
比如JZ label ,如果累加器 A 的内容为 0 ,则程序跳转到指定的 label 处执行。
在实际编程中,我们需要根据具体的需求灵活运用这些指令。
比如,当我们要实现一个简单的加法运算时,可以使用算术运算类指令;当需要在不同的程序段之间跳转时,就需要用到控制转移类指令。
为了更好地理解和运用 AT89S51 单片机的指令系统,我们还需要了解一些指令的执行周期和寻址方式。
指令的执行周期决定了指令执行的速度。
不同的指令执行周期可能不同,这会影响程序的运行效率。
而寻址方式则决定了如何获取操作数。
AT89S51 单片机支持直接寻址、寄存器寻址、寄存器间接寻址、立即寻址等多种寻址方式。
MCS-51单片机指令系统教程(2)
片外数据 存储器 64KB
1,访问片内RAM20H存储单元; MOV A,20H
2,访问片外RAM存储单元; MOV R0,#20H MOVX A,@R0
0000H
3,尽管片内与片外的RAM单元 的00H-FFH地址相重叠但由 于指令的不同不会发生地址
混乱。
片外数据存储器 64KB个字节
返回
2.2.5 变址寻址
由操作码和操作数(或操作数地址)构成指令的结构。
举例:MOV A,#0FFH
ADD A,R0
返回
2.1.2 指令的三种表示形式:
指令的表示形式是识别指令的标志。
1,二进制的表示形式:(以“累加器的内容+08H”为例) 00100100B 操作码 OP (加法) 00001000B 操作数DATA(08H)
乘法指令 16位寄存器DPTR加一
从表中可见,指令的字节数与指令周期不是对等的关系 返回
2.1.4 指令的分类
MCS-51单片机的指令如果按功能划分可以分为五类: 1,数据传送类指令:完成数据在单片机内部之间的传送。
分为8位数和16位两种。除了奇偶位外,指令的执行对 PSW无影响。
2,算术运算指令:用于操作数之间的加、减、乘除运算。 【特点】:多数情况下:操作数之一在累加器A中,结果 也保留在A中,运算结果要影响PSW(进位标志、奇偶和 溢出标志等)。
“机器码”后才能为CPU所识别和执行。 3,三种不同的表示方法适用于不同的场合。
返回
本章内容都以汇编的形式介绍指令系统。
2.1.3 指令的字节数
在MCS-51单片机的指令系统中,因指令操作码和操作数 的不同,指令(在存储器中)长度也各不相同。
分为单字节、双字节和三字节。
第3章单片机指令系统
寄存器寻址 寻址方式 寄存器间接寻址
基址加变址寄存器间接寻址 相对寻址 位寻址
1.立即寻址
操作数直接由指令给出,通常紧跟指令操作码之 后的字节是操作数,该操作数被称为立即数。
立即寻址所对应的寻址空间为:ROM 立即数:8/16位二进制数
如:MOV MOV A,#7AH DPTR, #1234H
注意:
① 适当选择SFR。寻址SFR时,可以用直接地址,也可以 用寄存器名,但后者更容易理解和阅读 如: MOV A,0D0H ; (A)←(D0H) MOV A,PSW ; (A)←(PSW)
② 适当选择累加器的表达式
累加器A表达方式 A → 寄存器寻址 ACC 直接寻址 E0H ;04H 单字节
如:
INC A INC ACC INC 0E0H
;05E0H 双字节
③ 注意地址的区别(位地址与字节地址)
如: MOV A,30H MOV C,30H ; (A)←(30H) ;(C)←(30H) 字节操作 位操作
3. 寄存器寻址
操作数在寄存器中
可用寄存器有: (1)四组工作寄存器R0~R7共32个工作寄存器 (2)SFR中有A、AB、DPTR及CY 如: MOV R3,#12H MOV A,R3
注意:① 立即数前加“#”号 ② 立即寻址方式的指令是双字节的(第1个字节为 操作码,第2个字节是操作数) ③ 操作数是放在ROM内的常数
2. 直接寻址
指令中直接给出操作数所在的单元地址或位地址
直接寻址可访问的存储空间: (1)内部RAM低128个单元 在指令中直接以单元地址形式给出,地址范围00H~7FH (2)特殊功能寄存器SFR 直接寻址是SFR惟一的寻址方式,SFR可以用单元地址给出, 也可用寄存器符号形式给出(但A、AB、DPTR除外) (3)211个位地址空间 内部RAM中可位寻址的20H~2FH单元对应的128个位地址空间 11个SFR中83个可用的位地址空间
第4章MCS51单片机的指令系统
1、立即寻址
若指令的操作数是一个8位二进制数或16位二进制数,就 称为立即寻址。指令中出现的操作数就称为立即数。
例如:MOV A,#3AH;A ← 3AH
MOV DPTR,#8000H 在MCS51系统中采用“#”来表示后面的是立即数。
16
2、寄存器寻址
寄存器寻址就是以通用寄存器的内容作为操作数,在指令 的助记符中直接以寄存器的名字来表示操作数位置。这种 寻址方式如果使用了另一个操作数,那么另一操作数必须 是累加器A,这些指令都是单字节指令
在汇编语言编程时,数据的存放、传送、运算都要通过 指令来完成,编程者必须自始至终都要十分清楚操作数 的位置以及如何将它们传送至适当的寄存器中去运算。 因此,如何从各个存放操作数的区域去寻找和提取操作 数就变得十分重要。
所谓寻址方式就是如何通过确定操作数所在的位置(地 址)从而把操作数提取出来的方法。
(补码数)。相对转移指令所在的地址称为源地址,转移
后的地址称为目的地址 。程序的转移范围以PC当前值为中
心,介于-128~+127之间
目的地址=源地址十转移指令字节数十rel
例如SJMP rel指令的机器码 是“80H,rel”,两个字节。 设指令所在地址为2000H, rel为54H,则转移地址(目的 地址)为:
4.1 指令和指令程序
所有软件,都要翻译成计算机能直接识别和执行 的命令,才能由计算机去执行。这种计算机能直 接识别和执行的命令称为指令。一台计算机所能 执行的全部指令的集合称为这台计算机的指令系 统。指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
20
寄存器间接寻址的寻址范围: 1)片内RAM低128单元:这里只能用R0和R1作为间接 寻址寄存器。 2)片外RAM 64KB:使用DPTR作为间接寻址寄存器。 3)片外RAM低256单元:也可以使用R0和R1。MOVX 4)在执行PUSH(压栈)和POP(出栈)指令时,采 用堆栈指针SP作寄存器间接寻址。
第3章MCS-51单片机指令系统
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
单片机技术基础 指令、指令系统和程序
单片机技术基础指令、指令系统和程序单片机是一种集成了微处理器、存储器和各种外围接口的集成电路芯片,广泛应用于工业控制、家电产品、通信设备等领域。
而单片机的核心部分就是指令,指令系统和程序的设计与编写。
本文将从单片机指令的定义、指令系统的组成以及程序设计的步骤和技巧等方面进行论述。
一、指令的定义和分类指令是单片机中最小的可执行操作单位,它告诉单片机要进行的具体操作。
指令可分为数据传输指令、算术运算指令、逻辑运算指令、控制转移指令等几类。
其中,数据传输指令用于将数据从一个位置传输到另一个位置,算术运算指令用于进行加减乘除等运算,逻辑运算指令则用于进行逻辑与或非等计算,控制转移指令则用于改变程序的执行顺序。
二、指令系统的组成指令系统是单片机中指令的集合,它由指令的操作码和操作数组成。
操作码决定了指令的功能,操作数则提供了参与运算的数据。
单片机的指令系统根据操作码长度的不同,可分为固定长度指令系统和可变长度指令系统。
在固定长度指令系统中,每个指令的操作码都占用相同的长度,且操作码和操作数的位置是固定的,从而简化了指令的解码和执行;而在可变长度指令系统中,指令的长度不固定,操作码和操作数的位置可以灵活地安排,从而提高了指令系统的灵活性和扩展性。
三、程序设计的步骤和技巧在单片机中,程序是由多条指令组成的。
程序设计的步骤主要包括需求分析、程序设计、编码实现和调试测试等阶段。
首先,在需求分析阶段,我们需要明确程序所要实现的功能和任务,确定输入输出的接口和条件,并考虑到单片机的性能和资源限制。
然后,在程序设计阶段,我们需要将任务分解为多个子功能,为每个子功能编写相应的算法和流程图。
在编写流程图时,我们要注重算法的简洁和可行性,并合理地利用单片机的硬件资源。
接着,在编码实现阶段,我们根据流程图和算法,选择合适的指令,将其转化为相应的程序代码。
在编写代码时,我们要注意代码的可读性和可维护性,合理地利用注释和函数模块化,提高程序的可扩展性。
第3章 MCS-51单片机指令系统1
2.操作码:指明指令功能,是指令功能的英文缩写。 汇编语句格式中唯一不能空缺的部分。
MOV__move传送 XCH__exchange交换 ANL__and logic与逻辑运算 XRL__exclusive or异或运算
MUL__Multiply乘法
RR__rotate right右循环 SJMP__short jump短跳转 RET__return 子程序返回 操作码助记符
MCS-51系列单片机指令系统分类
按寻址方式分为以下七种 1、立即寻址 2、直接寻址 3、寄存器寻址 按功能分为以下五种: 1、数据传送指令 2、算术运算指令 3、逻辑运算指令
4、寄存器间接寻址指令
5、相对寻址
4、控制转移指令
5、位操作指令
6、变址寻址
7、位寻址
3.3 指令系统的寻址方式
我的信在她 那!找信去!
快件
目的地
MOV A,#30H
30H
A
这类指令大都是双字节指令,仅有指令:MOV DPTR,#DATA16是三字节指令,它提供两字节立即 数。 第一位数字
是A~F时在 其前加0
对立即数的书写要求:对于单字节立即数,若 数值大于等于A0H,则要在其前面加一个0,如指令 “MOV A,#0A0H”,该指令含义是把立即数A0H送 累加器;对于双字节立即数,若数值大于等于 A000H,则要在其前面加一个0。对于直接地址和偏 移量也按相同方法书写。
1.标号:指令的符号地址 一般由字母和数字组成,第一位必须为字母,冒 号 “ :” 结 束 。 字 符 个 数 不 能 超 过 8 个 。 AD5 、 Q555、BB5D、pat、loop等为合法标号;5P、PA、10AD、+A等为非法标号。 不能用汇编语言已定义的符号作标号。如助记符、 伪指令、寄存器名称等。 同一标号在一个程序中只能定义一次。 标号在语句中的有无取决于本语句是否被访问。
03.10 第三章 - 单片机指令系统(条件转移类指令LJMP、AJMP、SJMP、JMP、JZ、DJNZ、CJNE、RET、RETI)
09:42
单片机技术
12
第三章:MSC-51 单片机指令系统
3.10.2 - 条件转移类指令
❖ 理解条件的概念 ❖ 掌握JZ、JNZ的特点和用法 ❖ 掌握DJNZ的特点和用法 ❖ 掌握CJNE的特点和用法
09:42
单片机技术
13
3.10.2 条件转移指令(JZ、DJNZ、CJNE)
❖ 1.判A转移指令(JZ、JNZ)
09:42
单片机技术
4
3.10 控制转移类指令 ❖ 控制转移类指令分类
▪ 无条件转移指令: 指执行此类指令,程序将无条件转移到目的地址
包括:LJMP 、AJMP 、SJMP 、JMP
Long(长-64KB)Absolutely(绝对-2KB)Short(短-256B)Jump(跳)
▪ 条件转移指令:
指程序需满足某种条件时,才转移到目的地址,否则顺 序执行下一条指令。
包括:JC、JB、JBC、JZ、DJNZ、CJNE
09:42
单片机技术
5
3.10.1 无条件转移指令(LJMP、AJMP、SJMP、JMP)
❖ 1.长转移指令(LJMP)
▪ 格式:LJMP addr16 ;PC =(PC)+ 3
;PC ← addr15~0 ▪ 范围:216B = 64KB,(0000H~FFFFH)
▪ 格式:JZ rel ;当A = 00H时转向rel,PC' =(PC)+ 2+rel ;否则顺序执行,PC' =(PC)+ 2
▪ 格式:JNZ rel ;当A ≠ 00H时转向rel,PC' =(PC)+2+rel ;否则顺序执行,PC' =(PC)+ 2
第三章8051单片机指令系统
返回本节
3.1.2 指令格式
• 在MCS-51指令中,一般指令主要由操作码、操作数 组成。 指令格式为:操作码 [目的操作数][,源操作数]
• 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,
数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地
返回本节
3.2.2 直接寻址
• 指令中直接给出操作数地址的寻址方式,能 进行直接寻址的存储空间有SFR寄存器和片 内RAM的128个单元。
例如:MOV A,P1; A←(P1) 把SFR中P1口的内容送A。
MOV A,30H ;A←(30H) 注意解释字段中加括号和不加括号的区别! • 30H为直接给出的内部RAM的地址。
返回本节
3.2.3 寄存器寻址
• 以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 例如:MOV A,R0;A ←(R0) CLR A ;A←0 INC DPTR;DPTR←DPTR+1 ADD A,R5;A←(A)+(R5)
返回本节
3.2.4 寄存器间接寻址
direct所指出的片内存储单元中 。
4.以间接地址为目的操作数
MOV @Ri,A ;(Ri) ← A MOV @Ri,direct ;(Ri) ←(direct) MOV @Ri,#data ;(Ri) ← #data 例如:设(30H)=6FH,R1=40H,
MOV @R1,30H, 结果30H单元中数据取出送入R1间接寻址的 40H单元,(40H)=6FH。
A←(A+PC) 这种寻址方式多用于查表操作。
程序存储器
第三章 MCS-51单片机指令系统
位操作类指令(17条)
位操作指令实际就是布尔处理机的指令系统,这 为开关量控制提供了非常有效的手段。
位传送
位置位复位
位运算 位控制转移
位数据传送指令(2条)
MOV MOV
C , bit bit,C
例:片内RAM中(20H)=7FH,执行指令
MOV C,07H 则C=0
位置位复位指令(4条)
调用与返回指令组(4条)
长调用指令 绝对调用指令 子程序返回指令
LCALL addr16 ACALL addr11 RET
中断服务程序返回指令 RETI
空操作指令(1条)
NOP
例:把2000H开始的外部RAM单元中的数据送到3000H
开始的外部RAM单元中,数据个数存放在内部RAM 35H单元。
ANL(ORL,XRL) A , { #data ; direct ; @Ri ; Rn }
2. 直接地址单元与累加器A、立即数之间的逻辑操作(6条)
ANL(ORL,XRL) direct , { A ; #data }
清零与取反指令(2条)
清零: 取反:
CLR A CPL A
循环移位指令(4条)
2. 带进位加法指令(4条) ADDC A , { #data ; direct ; @Ri ; Rn }
3. 带借位减法指令(4条) SUBB A , { #data ; direct; @Ri ; Rn }
影响所有标志位状态
例: 执行指令 MOV A , #0C2H ADD A , #0A9H 对PSW相应状态位的影响如下 1 1 1
3.2 MCS-51指令分类介绍
共分5大类,111条指令。
1.数据传送类指令(29条) 2.算术运算类指令(24条) 3.逻辑运算及移位类指令(24条) 4.控制转移类指令(17条) 5.位操作类指令(17条)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 3.1 MCS-51指令系统的分 类、格式及一般说明
• 3.2 寻址方式
单片机指令系统
学习目的及要求
• 熟悉指令、指令系统、机器语言、及汇 编语言的概念;
• 熟悉8051汇编语言指令的格式; • 掌握8051的七种寻址方式,并能实际
应用;
单片机指令系统
MCS-51单片机指令系统有如 (1)指令执行下时特间快点。:
返回本章首页
3.1.1 指令分类
• 按指令功能,MCS-51指令系统分为数 据传递与交换、算术运算、逻辑运算、 程序转移、布尔处理操作、CPU控制等 6类。
• 布尔处理操作类指令又称位操作指令。
单片机指令系统
返回本节
3.1.2 指令格式
• 在MCS-51指令中,一般指令主要由操作码、操作数 组成。
• 相对寻址用于修改PC值,主要用于实 现程序的分支转移。
例 如 , SJMP 08H
;
PC←PC+2+08H
指令操作示意图如图3-5所H SJMP 08H 08H
200AH
2000H+2
PC
(2000H) 200AH
图3-5 相对寻址示意图
单片机指令系统
返回本节
(2)指令短,约有一半的指令为单字节 指令。
(3)用一条指令即可实现2个一字节的 相乘或相除。
(4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入
输出操作。
单片机指令系统
3.1 MCS-51指令系统的分类、格式及一般说明
• 3.1.1 指令分类 • 3.1.2 指令格式
单片机指令系统
例如:MOV A,# 60H;A←60H
MOV DPTR,# 3400H;DPTR←3400H
MOV
30H,# 40H ;30H单元←40H
• 上述三条指令执行完后,累加器A中数据为立即数据 60H,DPTR寄存器中数据为3400H,30H单元中数 据为立即数40H。
单片机指令系统
返回本节
3.2.2 直接寻址
指令格式为:操作码 [目的操作数][,源操作数] • 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,
数的传送、加法、减法等。
(2)操作数指明操作的数本身或者是操作数所在的地 址。
(3)指定操作结果存放的地址。
单片机指令系统
返回本节
8051指令系统中,有单字节、双字节或三字节指令 1.单字节指令:单字节指令中的8位二进制代码既包含操
• 3.2.1 立即寻址 • 3.2.2 直接寻址 • 3.2.3 寄存器寻址 • 3.2.4 寄存器间接寻址 • 3.2.5 变址寻址 • 3.2.6 相对寻址 • 3.2.7 位寻址 • 3.2.8 寻址空间及符号注释
单片机指令系统
返回本章首页
3.2.1 立即数寻址
• 指令中直接给出操作数的寻址方式。立即操作数用前 面加有#号的8位或16位数来表示。
返回本节
3.2.3 寄存器寻址
• 以通用寄存器的内容为操作数的寻址方 式。通用寄存器指A、B 、DPTR以及 R0~R7 。 例如:MOV A,R0;A ←(R0) CLR A ;A←0 INC DPTR;DPTR←DPTR+1 ADD A,R5;A←(A)+(R5)
单片机指令系统
返回本节
3.2.4 寄存器间接寻址
作码的信息,又包含操作数的信息。共49条。
2 .双字节指令:用一个字节表示操作码,另一个字节表 示操作数或操作数所在的地址。共有45条。
3.三字节指令:一个字节操作码,两个字节操作数。共 有17条。
8051单片机共有111条指令。
单片机指令系统
3.2 寻址方式
• 寻址方式:就是寻找指令中操作数或操作数所在地址的方法。 8051共有七中寻址方式。
又如:MOVX @DPTR,A; 外部RAM (DPTR)←A
其 指 令 操 作 过 程 示 意 图 如 图 3- 2 所示。
单片机指令系统
R0
30H
A
34H
片内RAM
30H
34H
图3-1 MOV @R0,A间接寻址示意
图
单片机指令系统
片外RAM
DPTR 2000H
A 30H
2000H
30H
图3-2 MOVX @DPTR,A 间接寻址示意图
• 以寄存器中内容为地址,以该地址中内 容为操作数的寻址方式。间接寻址的存 储 器 空 间 包 括 内 部 数 据 RAM 和 外 部 数 据RAM。
• 能用于寄存器间接寻址的寄存器有R0, R1,DPTR,SP。其中R0、R1必须是 工作寄存器组中的寄存器。SP仅用于堆 栈操作。
单片机指令系统
例 如 : MOV @R0 , A ; 内 部 RAM(R0)←A 其指令操作过程示意图如图3-1所 示。
• 指令中直接给出操作数地址的寻址方式, 能进行直接寻址的存储空间有SFR寄存 器和片内RAM的128个单元。
例如:MOV
A,P1; A←(P1)
把SFR中P1口的内容送A。
MOV A,30H ;A←(30H)
注意解释字段中加括号和不加括号的区 别!
• 30H为直接给出的内部RAM的地址。
单片机指令系统
A←(A+DPTR) 又 如:MOVC A,@ A+PC ;
A←(A+PC) 这种寻址方式多用于查表操作。
单片机指令系统
程序存储器 2010H 64H
A 10H
64H(10H)
DPTR 2000H 2000H
图3-4 变址寻址示意图
单片机指令系统
返回本节
3.2.6 相对寻址
• 以当前程序计数器PC的内容为基础, 加上指令给出的一字节补码数(偏移量) 形成新的PC值的寻址方式。
单片机指令系统
返回本节
3.2.5 变址寻址
是基址寄存器(A)+变址寄存器(PC或DPTR) 的间接寻址。变址寻址只能对程序存储器中数据进行 操作。由于程序存储器是只读的,因此变址寻址只有 读操作而无写操作,在指令符号上采用MOVC的形 式(如图3-4所示)。 例如:MOVC A,@ A+DPTR;
3.2.7 位寻址
• 位寻址只能对有位地址的单元作位寻址
操作。
• 位寻址其实是一种直接寻址方式,不过 其地址是位地址。
例如:SETB 10H 1。
;将10H位置
若22H单元中存放着数据40H,22H
单元的 D0位的位地址为10H,执行上 述指令后
(22H)=4单1片H机指。令系统
返回本节
3.2.8 寻址空间及符 号注释 1.寻址空间:每种寻址方式可涉及的存储器空间