MCS-51单片机指令系统
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 ) )