单片机的指令系统
专题四 MCS-51指令系统-第三章 单片机的指令系统
8、指令字节数和机器周期数
第三章 单片机的指令系统
是必须掌握的内容。 Ø 一台计算机所有指令的集合, 称为该计算机的指令系统。 Ø 各种计算机都有专用的指令系统。
Ø 本章主要介绍单片机的寻址方式及指令系统,
学时分配:2学时 1—53+97+98+99 2学时 54—96 100
第三章 单片机的指令系统 • 3.1 MCS-51 指令系统概述
类
按指令字长分类
按指令执行时间分类
3.2 寻址方式
• 寻址方式:7种
– – – – – – – – – 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址间接寻址 相对寻址 位寻址 寻址方式与寻址空间 MCS-51单片机的两个突出特点
寄存器寻址——操作数存放在寄存器中
寄存器为 MOV A,R0 MOV R0,#01001111B R0~R7,A,DPTR,C SETB RS0 MOV R3,#56H
目的寻址为直接寻址
2) 20H ~2FH 可位寻址区的寻址方式
字节寻址方式: 直接寻址 direct
寄存器间接寻址@R0,@R1
位寻址: bit 直接寻址
例: MOV 26H,C ; 位寻址 (26H)1位
MOV 26H,A ;字节寻址(26H)8位
3) 30H ~7FH 数据缓冲区的寻址方式
字节寻址方式: 直接寻址 direct
MOV A,#23H
PUSH ACC
;
A寄存器寻址
POP
0E0H
;直接寻址
4、可做片内RAM的指针有:
R0,R1, 四个组共有8个 预先设置RS1、RS0,以选定组。 SETB RS0 CLR RS1; 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+转移指令字节)个单元
单片机的指令系统
3、简述80C51指令的分类和格式。
答:80C51单片机的指令系统共有111条指令,按其功能可分为5大类:数据传送类指令(28 条)、算术运算类指令(24条)、逻辑运算类指令(25条)、控制转移类指令(17条)和布尔 操作(位)类指令(17条)。
BCD码采用4位二进制数编码,并且只采用了其中10个编码,即 0000~1001,分别代表BCD码0~9,而1010~1111为无效码。当两个BCD码 相加结果大于9时,说明已进入无效编码区;当两个BCD码相加结果有进 位时,说明已跳过无效编码区。若结果进入或跳过无效编码区,则结果 是错误的,相加结果均比正确结果小6(差6个无效编码)。
指令的表示方法称之为“指令格式”,其内容包括指令的长度和指令内部信息的安排等。 在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。
单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。 双字节指令:包括两个字节,其中一个字节为操作码,另一个字节是操作数。 三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能 是地址。
例如:
INC R7
;R7的内容为操作数,加1后再送回R7
(4)寄存器间接寻址。在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才
是操作数。可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址
方式中,寄存器中存放的则是操作数的地址。
寄存器间接寻址须以寄存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻
寄存器间接寻址须以寄存器符号名称的形式表示为了区别寄存器寻址和寄存器间接寻址在寄存器间接寻址中应在寄存器的名称前面加前缀
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。
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个可用的位地址空间
第3章 MCS-51指令系统
16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17
数据传送和交换类指令主要有以下几种:
1. 2. 3.
30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A
30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX
55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。
第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等为非法标号。 不能用汇编语言已定义的符号作标号。如助记符、 伪指令、寄存器名称等。 同一标号在一个程序中只能定义一次。 标号在语句中的有无取决于本语句是否被访问。
微机原理_单片机的指令系统(2001)(1)
(Rn) #data
数据传送类指令(2)
mov direct,A ;
(direct) (A)
mov direct,Rn ;
mov direct,direct ;
(direct) (Rn) n=0~7
(direct) (direct)
mov direct, @Ri ;
数据传送类指令(5)
direct 直接寻址 A @Ri 间接寻址
累加器 Rn 寄存器 data 立即数
算术运算类指令
程序状态字 PSW 加法指令 减法指令 乘/除指令
减法指令
subb subb subb subb A,Rn ;(A)<--(A)-(Rn)-(C) A,direct ;(A)<--(A)-(direct) -(C) A,@Ri ;(A)<--(A)-((Ri)) -(C) A,#data ;(A)<--(A)-#data -(C)
movx @Ri,A;
movx @DPTR,A ; ((DPTR)) (A)
movc A,@A+DPTR ; (A) ((A)+(DPTR))
movc A,@A+PC;
(PC) (PC)+1 ,
(A) ((A)+(PC))
mov DPTR,#data16; (DPTR) #data16
减 1 指令
减 1 指令
dec A dec Rn dec direct dec @Ri ;(A)(A)-1 ;(Rn)(Rn)-1 ;(direct)(direct)-1 ;((Ri) )((Ri) )-1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答: 80C51单片机的指令系统容易理解和阅读。只要熟记代表33种功能的42种助记符即可。 有的功能如数据传送,可以有几种助记符,如MOV、MOVC、MOVX。而指令功能助记符与操作数各 种寻址方式的结合,共构造出111种指令,而同一种指令所对应的操作码可以多至8种(如指令 中Rn对应寄存器R0~R7)。
例如:
INC R7
;R7的内容为操作数,加1后再送回R7
(4)寄存器间接寻址。在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才
是操作数。可以看出,在寄存器寻址方式中,寄存器中存放的是操作数;而在寄存器间接寻址
方式中,寄存器中存放的则是操作数的地址。
寄存器间接寻址须以寄存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻
MOV R0,#30H
;(R0)=30H
MOV A,@R0
;(A)=40H
MOV R1,A
;(R1)=40H
MOV B,@R1
;(B)=10H
MOV @R1,P1
;(40H)=CAH
MOV A,@R0
;(A)=40H
MOV 10H,#20H
;(10H)=20H
MOV 30H,10H
;(30H)=20H
的相对转移而设立的,为相对转移指令所采用。
在相对转移指令中,给出地址偏移量(在80C51系列单片机的指令系统中,以“rel”表
示,为8位带符号数),把PC的当前值加上偏移量就构成了程序转移的目的地址。而PC得当前值
是指执行完转移指令后的PC值,即转移指令的PC值加上转移指令的字节数。
转移的目的地址可用如下公式表示:
方式只能对程序存储器进行寻址。
例如:
MOVC A,@A+DPTR
;功能是把DPTR和A的内容相加,所得到的程序存储器地址单
;元的内容送A
(7)位寻址。80C51系列单片机有位处理功能,可以对数据位进行操作,因此,就有相应
的位寻址方式。位寻址的寻址范围:
片内RAM中的位寻址区。
可位寻址的特殊功能寄存器位。
执行以上程序段后,有关单元的内容分别为:(30H)=20H,(40H)=CAH,(10H)
=20H,(P1)=CAH。
15、已知(R1)=20H,(20H)=AAH,写出执行完下列程序段后A 的内容。
MOV A,#55H ANL A,#0FFH ORL 20H,A XRL A,@R1 CPL A
答:各条指令的执行结果如下:
9、MOV、MOVC、MOVX指令有什么区别?分别用于哪些场合?为什 么?
答:MOV指令用于对内部RAM和寄存器的访问。 MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如 表格、常数等)。执行MOVC指令时,在/PSEN引脚上输出有效信号,可 用做外扩程序存储器的读选通信号。 MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种 间接寻址方式。执行MOVX指令时,在P3.7引脚上输出/RD有效信号,或
程序段执行的结果:累加器A和寄存器B的内容通过堆栈进行了交换。
13、已知(A)=7AH,(R0)=30H,(30H)=A5H,(PSW)=80H。请 填写各条指令单独执行后的结果。
(1)XCH A,R0 (2)XCH A,30H (3)XCH A,@R0 (4)XCHD A,@R0 (5)SWAP A (6)ADD A,R0 (7)ADD A,30H (8)ADD A,#30H (9)ADDC A,30H (10)SUBB A,30H (11)SUBB A,#30H
在P3.6引脚上输出/WR有效信号,可以用做外部数据存储器或I/O的读/ 写选通信号,与单片机扩展电路有关。
10、说明“DA A”指令功能,并说明二-十进制调整的原理和方 法。
答:“DA A”指令的功能是对两个BCD码的加法结果进行调整。两 个压缩BCD码按二进制数相加之后,必须经过该指令的调整才能得到压 缩型BCD码的和数。“DA A”指令对两个BCD码的减法结果不能进行调 整。
十进制调整的修正方法为:当累加器低4位大于9或半进位标志AC=1 时,进行低4位加6修正;当累加器高4位大于9或进位标志CY=1时,进行 高4位加6修正。
11、说明80C51单片机的布尔处理机的构造及功能。
答:80C51单片机内部有一个布尔(位)处理机,具有较强的布尔变 量处理能力。
布尔处理机实际上是一位微处理机,它包括硬件和软件。布尔处理 机以进位标志CY作为位累加器,以80C51单片机内部RAM的20H~2FH单元 及部分特殊功能寄存器为位存储器,以80C51单片机的P0、P1、P2和P3 为位I/O口。
;(A)=30H,(R0)=7AH ;(A)=A5H,(30H)=7AH,(PSW)=81H ;(A)=A5H,(30H)=7AH,(PSW)=81H ;(A)=75H,(30H)=AAH,(PSW)=81H ;(A)=A7H ;(A)=AAH,(PSW)=04H ;(A)=1FH,(PSW)=81H ;(A)=AAH,(PSW)=04H ;(A)=20H,(PSW)=C1H ;(A)=D4H,(PSW)=84H ;(A)=49H,(PSW)=01H
答:结果如下:
MOV SP,#60H
;(SP)=60H
MOV A,#88H
;(A)=88H
MOV B,#0FFH
;(B)=FFH
PUSH Acc
;(SP)=61H,;(61H)=88H
PUSH B
;(SP)=62H,;(62H)=FFH
POP Acc
;(A)=FFH,;(SP)=61H
POP B
;(B)=88H,;(SP)=60H
4、简述80C51的指令寻址方式,并举例说明。
答:执行任何一条指令都需要使用操作数,寻址方式就是在指令中给出的寻找操作数或操
作数所在地址的方法。
(1)立即寻址。在指令中直接给出操作数。出现在指令中的操作数称为“立即数”,为了
与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀“#”。
例如:
MOV DPTR,#1234H
址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“@”。
例如:
ORL A,@R0
;当R0寄存器的内容是60H时,该指令功能是以R0寄存器的内容60H
;为地址,将60H地址单元的内容与累加器A中的数相“或”,其结果
;仍存放在A中。
(5)相对寻址。在指令中给出的操作数为程序转移的偏移量。相对寻址方式是为实现程序
另外,对于52系列单片机,片内RAM有256个单元,低128个单元寻址 方式与51系列相同,而高128个单元(即地址为80H~FFH)只能采用R0或 R1的寄存器间接寻址方式。
8、若访问程序存储器,可使用哪些寻址方式?
答:访问程序存储器可使用的寻址方式有立即寻址方式、变址寻址 方式和相对寻址方式三种。立即寻址是指在指令中直接给出操作数。变 址寻址方式只能对程序存储器进行寻址,或者说这是专门针对程序存储 器的寻址方式。相对寻址方式是为实现程序的相对转移而设立的。这三 种寻址方式所得到的操作数或操作数地址都在程序存储器中。
指令的表示方法称之为“指令格式”,其内容包括指令的长度和指令内部信息的安排等。 在80C51系列的指令系统中,有单字节、双字节和三字节等不同长度的指令。
单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。 双字节指令:包括两个字节,其中一个字节为操作码,另一个字节是操作数。 三字节指令:操作码占一个字节,操作数占两个字节。其中操作数既可能是数据,也可能 是地址。
7、若访问内部RAM单元,可使用哪些寻址方式?
答:片内RAM的低128个单元可以使用直接寻址方式,在指令中直接
以单元地址形式给出。也可以使用寄存器间接寻址方式,但只能采用R0 或R1为间址寄存器,其形式为@Ri(i=0,1)。
片内RAM的低128个单元中的20H~2FH有128个可寻址位,还可使用位 寻址方式,对这128个位的寻找使用直接位地址表示。
答:结果如下: (1)XCH A,R0 (2)XCH A,30H (3)XCH A,@R0 (4)XCHD A,@R0 (5)SWAP A (6)ADD A,R0 (7)ADD A,30H (8)ADD A,#30H (9)ADDC A,30H (10)SUBB A,30H (11)SUBB A,#30H
思考与练习题解析
1、什么是指令及指令系统?
答:控制单片机进行某种操作的命令称为“指令”。单片机就是根据指令来指挥和控制单 片机各部分协调工作。指令由二进制代码表示,指令通常包括操作码和操作数两部分:操作码 规定操作的类型,操作数给出参加操作的数或存放数的地址。
所有指令的集合称为“指令系统”。80C51单片机的指令系统专用于80C51系列单片机,是 一个具有255种操作码(00H~FFH,除A5H外)的集合。
6、若访问外部RAM单元,可使用哪些寻址方式?
答:访问外部RAM单元的惟一寻址方式是寄存器间接寻址方式。片外RAM的64KB单元,使用 DPTR作为间址寄存器,其形式为@DPTR,例如“MOVX A,@DPTR”的功能是把DPTR指定的片外RAM 单元的内容送累加器A。
片外RAM低256个单元,除了可使用DPTR作为间址寄存器外,也可使用R0或R1作为间址寄存 器。例如“MOVX A,@R0”即把R0指定的片外RAM单元的内容送累加器A。
80C51单片机的指令系统具有较强的控制操作类指令,容易实现“面向控制”的功能;具有 位操作类指令,有较强的布尔变量处理能力。
3、简述80C51指令的分类和格式。
答:80C51单片机的指令系统共有111条指令,按其功能可分为5大类:数据传送类指令(28 条)、算术运算类指令(24条)、逻辑运算类指令(25条)、控制转移类指令(17条)和布尔 操作(位)类指令(17条)。