MCS-51单片机指令系统

合集下载

MCS-51单片机指令系统教程(3)

MCS-51单片机指令系统教程(3)
MOV IE,#00H ;初始化中断允许寄存器 MOV TH1,#0FEH ;为定时器1赋初值 尽管使用SFR的寄存器名称来取代直接地址,可以带 来程序的可读性,但是在汇编时,仍要将寄存器名字转换 为直接地址。
2,当直接地址时在工作寄存器区中时,可以使用两种寻址 方式来访问。 如:
MOV A,00H ;将RAM中00H单元数据送累加器A
04
03
02
01
00
返回前一次
2.2.3立即寻址
指令本身直接含有所需要的8位或16位的操作数。
将此数称为“立即数”(使用#标明)。如:
MOV A,#30H
;将(8位)立即数送累加器A
MOV DPTR,#2000H ;16位立即数送DPTR积存器
【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。
三字节指令在存储器中存放的方式示意图
指令的字节数与指令的运行时间
指令的字节多是否意味着指令周期就长?
指令
字节数 周期数
MOV A,R0
1
1
MOV A,#0FFH 2
1
MOV 20H,#30H 3
2
MUL AB
1
4
INC DPTR
1
1
指令说明 R0内容送累加器A
立即数FFH送A 立即数30H送内存20h单元
累加器A 02H
ALU
DPTR 0300H
0300H + 02H
0302H
ROM
0302H X
返回
MOVC A,@A+DPTR
2.2.6 相对寻址
转移指令中使用的一种寻址方式。MCS-51单片机的指令 系统中,有两类转移指令:相对转移( 2个或3个字节)

MCS-51单片机的指令系统

MCS-51单片机的指令系统

整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。

MCS51单片机指令系统

MCS51单片机指令系统

第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。

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

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
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条)

大学课件MCS51单片机指令系统与汇编语言程序设计

大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

MCS-51指令系统入门

MCS-51指令系统入门
/ # @ $ ← ∧ ∨ ⊕ @DPTR
含义 X的内容 以X的内容为地址的内容 加在位地址之前,表示对该位取反 立即数前缀 间址寄存器前缀 程序计数器PC的当前值 箭头右面的数据传送到箭头左面 逻辑与运算 逻辑或运算 逻辑异或运算 16位片外数据指针,范围为0000H~FFFFH
—6—
four
指令分类
指令格式 two
—4—
MCS-51系列单片机指令中常用助记符及含义
符号 A
累加器ACC
含义
B
寄存器B
Ri
寄存器间接寻址的寄存器(i=0或1)
Rn
当前工作寄存器R0~R7的一个
bit
具有位寻址功能的位地址
rel
用补码形式表示的偏移量,范围为 -128~ƐH~FFH
—3—
在MCS-51系统中采用变长指令,对于不同类型的指令,或
者相同指令的操作数类型不同,其长度是可变的,因此,MCS-51 指令为变长指令。大部分指令的长度为1~3个字节。
提示
对于双操作数指令来说,一般操作数1是目的操作数,操作数2是源操作数。 采用RISC的单片机,每条指令的长度相同,如ARM芯片全部指令都是32位的。
—9—
1)立即寻址
立即寻址是指在指令中直接给出参加运算的操作数的寻址方式。这种形式的操作数称为立即数。为了与 直接寻址指令中的直接地址相区别,立即数前面要加“#”标志。
【例3-1】 立即寻址方式如表所示:
编号
汇编语言指令
a
MOV A,#40H
b
MOV DPTR,#4000H
机器语言 7440H 904000H
机器语言 E560H E588H E588H
机器语言

MCS-51单片机指令系统

MCS-51单片机指令系统

MOV DPTR,#2000H
6、栈操作指令
PUSH direct; (SP)<-SP+1, ((SP))<(direct)
进栈指令的功能是先将SP的指针加1,然 后把直接地址指出的内容传送到栈指针SP寻 址的内部RAM单元中。
POP direct; (direct)<-((SP)), (SP)<-SP-1
@DPTR, A; ((DPTR))<-(A)
A, @R1
@DPTR,A
8、查表指令
MOVC A,@A+DPTR; (A)<-((A))+((DPTR)) MOVC A,@A+PC ; (A)<-((A))+((PC))
9、字节交换指令
XCH A, Rn; XCH A,direct; XCH A,@Ri;
XRL A, direct ; A与direct中的值 ;按位'异或',结果送入A中
XRL A, @Ri; A与间址寻址单元@Ri中 ;的值按位'异或',结果送入A中
4、逻辑异或指令
XRL A, #data ;A与立即数data按位 ;‘异或’,结果送入A中
XRL direct, A ; direct中值与A中的值 ;按位‘异或’, ;结果送入direct中
(A)<->(Rn) (A)<->(direct) (A)<->((Ri))
10、半字节交换指令
XCHD A,@Ri; (A)0-3<->((Ri))0-3
2、算术指令
1、不带进位位的加法
ADD
A, #data;
(A)<-(A)+#data

MCS-51单片机指令系统

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所指的片内存储单元
返回指令
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ROM SFR 30H 20H
05H 48H
48H
2035H

DPL DPH ACC
19
6. 相对寻址
主要用于转移指令,它是把指令中给出的相对地址 偏移量 rel 与 PC 当前值相加,得到程序转移的目标 地址。
((x))
以X中的内容为地址的存储单元中的内容
7
4、指令分类
MCS-51汇编语言有111种指令,42种操作码助记 符用来描述33种操作功能。

按功能分为
数据传送类:29条 算术运算类:24条 逻辑运算类:24条 控制转移类:17条 位操作类: 17条
8

按字节数分为
单字节指令:49条 双字节指令:45条 三字节指令:17条
6
3、指令系统中有关符号说明
符号 Rn @Ri direct 含义 当前R0-R7 R0 R1(i=0,1) 8位直接地址(内部RAM的低128个单元的地址) 或指SFR
#data8/16
Addr11/16 rel bit / @ (x)
8位常数(立即数)16位常数(立即数)
11位目的地址,16位目的地址 转移指令8位偏移量(补码) -128~ +127 位地址 对该位内容取反 间接寻址符号(前缀) X存储单元中的内容
;A←#20H ;A←#10000111B ;A←#50 ;DPTR←#1808H
11
MOV A, #20H;A←#20H 即把20H这个数据送入累加器A中。 执行结果:(A)=20H
分析
PC PC PC 74H 20H …… 操作码 立即数 执行
ACC
20H
MOV A, #20H执行示意图
12
2. 直接寻址
ROM
PC PC E5H
操作码 直接地址 ACC
20H
……
RAM
PC
……
62H
20H
…… 62H ……
14
3. 寄存器寻址
在指定的寄存器中存放操作数的寻址方式。 这 类 寄 存 器 包 括 工 作 寄 存 器 R0~R7 、 A 、 B 、 DPTR。
[例3-3]: MOV A,R0 ; 把工作寄存器R0中的内容传送到 累加器A中。
4
① 标号:给该条语句起个名字,以便在其它语句中
寻找该条语句,它代表该条语句所在的地址。
注:
标号由1~6个字符数字串组成,第一个必须是字母;
不一定每句都有标号,标号不产生目标代码; 汇编语言中已经有确切定义的符号不能作为标号; 同一标号在一个程序中只能定义一次; 标号后面必须跟冒号。
单周期指令:64条 双周期指令:45条 四周期指令:2条

按运算速度分为
9
二、MCS-51的寻址方式


寻址方式:寻找指令中操作数的地址,并把操作数取 出来的方法。 51单片机一共七种寻址方式: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址
• 上述指令的功能是, DPTR 的值与累加器 A的内容 相加,形成操作数的地址。
18
[例3-7]: 将程序存储器ROM中2035H单元的内容读入 累加器A中: MOV DPTR,#2030H ;DPTR ←#2030H MOV A, #05H ; A ←#05H MOVC A,@ A+DPTR ;A←(2035H)
5
② 操作码助记符:规定指令进行何种操作,是指令
中不能空缺的部分,一般采用具有相关含义的英语 单词或缩写表示。
③ 操作数:说明被操作的数的源及目的。
注: 操作数可以是数的本身或其所在地址; 十六进制数以A~F打头的数前面要加0,以区别于标号。
④ 注释:为便于阅读理解程序,对语句所作的解释
说明,不产生目标代码,用分号开始表示注释。
寻址方式
3
一、指令概述
1、概念
指令:是指示单片机完成特定操作的命令。 指令系统:是单片机能够执行的全部命令的集合。 汇编语言指令:用助记符、符号地址、标号等表示的 书写程序的语言。
2、指令的格式
[标号:] 操作码助记符 [目的操作数,] [源操作数] [;注释] 如:START: MOV A, #01H ; A ←#01H 标号 操作码助记符 操作数 注释
《微型计算机原理及接口技术》
授课专业:自动化 授课学时: 60学时
1
第三章 MCS-51单片机指令系统
1
3.1 指令系统概述
3.2 数据传送类指令 3.3 算术运算类指令 3.4 逻辑运算类指令 3.5 控制转移类指令
2
3 4 5 6
3.6 位操作类指令
2
§3.1 指令系统概述
学习内容
1
2
指令概述
指令中直接给出操作数所在地址的寻址方式。 可用符号“direct”表示指令中的直接地址,寻址范 围是内部RAM的低128字节和SFR.
[例3-2]: MOV A,20H ;将片内RAM20H单元中的内容送 入累加器A,70H为直接地址。
13
MOV A, 20H; A←(20H) 执行结果:(A)=62H 分析 执行
16
5. 变址寻址
以16位寄存器(PC或 DPTR)的内容作为基址,以 累加器 A 的内容作为偏移量,将两者进行相加得到 的和作为操作数地址。
变址寻址只能对程序存储器进行寻址,分为两种:

以PC的当前值为基址
以DPTR的内容为基址
17
[例3-5]: MOVC A,@ A+PC ;A←((A)+(PC)) • 上述指令的功能是, PC 的当前值与累加器 A 的内 容相加,形成操作数的地址。 [例3-6]: MOVC A,@ A+DPTR ;A←((A)+(DPTR))
10
1、立即寻址
它是操作数直接在指令中给出的寻址方式。 这种操作数称为立即数,立即数有8位和16位两种, 立即数可以是十进制,也可以是十六进制,还可 以二进制。立即数前面带“#”。
注:立即数只能作为源操作数。
[例3-1]: MOV A, #20H MOV A, #10000111B MOV A,#50 MOV DPTR,#1808H

15
4. 寄存器间接寻址
把操作数所在的地址存放在指定的寄存器中,而 操作数本身则存放在该地址所对应的存储单元中 的寻址方式。 间接寻址寄存器前用“@”表示前缀。 能够用于寄存器间接寻址的寄存器有 R0 、 R1 、 DPTR和SP(SP不用间接寻址符“@”)。 [例3-4]: MOV A,@R0 ; A←( ( R0 ) )
相关文档
最新文档