单片机原理与应用第3章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如: SJMP rel ; PC←(PC) + 2 + rel 特点:相对寻址方式是为实现程序的相对转移而设计的,
为相对转移指令所使用,其指令码中含有相对地址 偏移量,能生成浮动代码。
目的地址=指令地址(PC)+指令字节数+偏移量(rel)
第 3 章 单片机汇编程序设计
相对寻址方式
寻址范围:只能对程序存储器ROM进行寻址。相对地址 偏移量(rel )是一个带符号的8位二进制补 码,其取值范围为128~+127(以PC为中 间的256个字节范围)。
MOV R0, #30H MOV A, @R0
MOV A,direct ;A←(direct)
MOV A,@Ri
;A←((Ri))
MOV A,#data ;A← #data
(2)以Rn为目的操作数
MOV Rn,A
;Rn ← (A)
MOV Rn,direct
;Rn ←(direct)
MOV Rn,#data
;Rn ← #data
第 3 章 单片机汇编程序设计
addr11:表示11位目的地址,主要用于ACALL和 AJMP指令中。
rel: 相对转移指令中的偏移量,为8位带符号补码。 DPTR: 数据指针。 bit: 内部RAM(包括专用寄存器)中的直接寻址位。 A: 累加器。 ACC: 直接寻址方式的累加器。
第 3 章 单片机汇编程序设计
B:寄存器B。 C :进位标志位,也称为累加位。 / :加在位地址的前面,表示对该位状态取反。 @:间接寻址寄存器的前缀标志。 (X):某寄存器或某单元中的内容。 ((X)):由“X”间接寻址单元中的内容。 ←:箭头左边的内容被箭头右边的内容所取代。
第 3 章 单片机汇编程序设计
1. 单字节指令格式由8位二进制编码表示,
例如: CLR A→E4H 2. 双字节指令格式由两个字节组成, 操作码和操作数,
例如: MOV A, #10H→74H 10H 3. 三字节指令格式中, 第一个字节为操作码, 后两个字节为 操作数,
例如: MOV 40H, #30H→75H 40H 30H
例如:MOVC A, @A+DPTR ;A←((A)+(DPTR)) MOVC A, @A+PC ; A←((A)+(PC)) JMP @A+DPTR ; PC←(A)+(DPTR)
第 3 章 单片机汇编程序设计
5. 变址寻址方式
特点:指令操作码中隐含作为基址寄存器用的DPTR(或 PC )和作为变址用的累加器A。在执行变址寻址指 令时,80C51单片机先把基地址( DPTR或PC 的内 容)和地址偏移量(A的内容)相加,以形成操作数 地址,再由操作数地址找到操作数,并完成相应的 操作。变址寻址方式是单字节指令。
7. 指令寻址 一.绝对寻址 绝对寻址是在指令的操作数中直接提供目的位置的地 址或地址的一部分。 长转移和长调用提供目的位置的16位地址 绝对转移和绝对调用提供目的位置的16位地址的 低 11位
第 3 章 单片机汇编程序设计
二 相对寻址方式
定义:将程序计数器PC的当前值(取出本条指令后的PC 值)与指令第二个字节给出的偏移量(rel)相加, 形成新的转移目标地址。称为相对寻址方式。
第 3 章 单片机汇编程序设计
6. 位寻址方式
寻址形式:
(1) 用直接位地址:
MOV C,8CH (2) 用单元地址加位序
MOV C,88H.4 ;88H+4H=8CH
(3) 用位名称:
SET TR0
;启动定时器0
(4) 用寄存器名加位序:
MOV C,TCON.4 ;
第 3 章 单片机汇编程序设计
Ri: 可用作间接寻址的寄存器,只能是R0, R1 两个 寄存器,i=0,1。
direct: 8位直接地址,在指令中表示直接寻址方 式,寻址范围256个单元。
#data: 8位立即数。 #data16:16位立即数。
第 3 章 单片机汇编程序设计
addr16:表示16位目的地址,主要用于LCALL和 LJMP指令中。
注意,源操作数和目的操作数中的Rn和@Ri不能相互配对。 如不允许有“MOV Rn,Rn”,“MOV @Ri,Rn”这样的 指令,在MOV指令中,不允许在一条指令中同时出现工作 寄存器,无论它是寄存器寻址还是寄存器间接寻址。
第 3 章 单片机汇编程序设计
例3-1 设内部RAM中30H的内容为40H,40H单元的内容 为10H,P1口作为输入口,其输入数据为0CAH, 分析下面程序段的执行结果。
;R1←30H
;A←(R1) ;A←30H ;最后A中的数据为 30H
4 . MOV R1, #30H MOV A, @R1
;R1←30H
;A←((R1)) ;A←(30H) ;最后A中的数据为 0FFH
第 3 章 单片机汇编程序设计
5. 变址寻址方式
定义:操作数存放在变址寄存器(累加器A)和基址寄存 器(DPTR或PC)相加形成的16位地址单元中。这 种寻址方式称为基址加变址寄存器间接寻址,简称 为变址寻址。
4 个区段之间要用分隔符分开,标号与操作码之间用
“:”隔开, 操作码与操作数之间用空格隔开, 操作数与 注释之间用“;”隔开, 如果操作数有两个以上, 则在操 作数之间要用逗号“,”隔开 (乘法指令和除法指令除
外 )。
第 3 章 单片机汇编程序设计
掌握熟悉指令的一些方法
1. 先通读指令,了解有哪些类型、基本操作情况、使用 场
第 3 章 单片机汇编程序设计
3.2 80C51 单片机指令寻址方式
所谓寻址方式, 就是寻找操作数地址的方式, 在用汇 编语言编程时, 数据的存放、传送、 运算都要通过指令 来完成。 编程者必须自始至终都要十分清楚操作数的 位置, 以及如何将它们传送到适当的寄存器去参与运算。 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
第 3 章 单片机汇编程序设计
4. 寄存器间接寻址方式
寻址范围: 1、对于内部RAM低128单元访问(只能使用R0或R1作间
址寄存器) 2、对于外部RAM访问(使用DPTR作间址寄存器)。 3、对于外部低256单元RAM的访问,除可以使用DPTR外,
还可以使用R0或R1作间址寄存器(先确定高8位地址给 P2)。
第 3 章 单片机汇编程序设计
1.片内数据存储器传送指令MOV 指令格式:MOV 目的操作数,源操作数 其中: 源操作数可以为A、Rn、@Ri、direct、#data 目的操作数可以为A、Rn、@Ri、direct
第 3 章 单片机汇编程序设计
(1)以A为目的操作数
MOV A,Rn
;A← (Rn)
(4)以间接地址@Ri为目的操作数
MOV @Ri,A
;(Ri) ← ( A)
MOV @Ri,direct ;(Ri) ←(direct)
MOV @Ri,#data ;(Ri) ← #data
第 3 章 单片机汇编程序设计
(5)以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR ← #data16
合。个人可做些归纳和总结。
2. 阅读书中或别人的有关程序,其中的应用技巧,必要 时
再回来查有关内容。
3. 自己编写程序,上机实验,体会指令的作用和编程技 巧。
4. 参与实际项目,在实战过程中使用和提高。
3
第 3 章 单片机汇编程序设计
80C51指令中使用的符号的意义作简要说明:
Rn: 表示当前工作寄存器R0~R7中的任一寄存器 n=0~7。
MCS -51
第 3 章 单片机汇编程序设计
3.3.1 数据传送类指令(29条)
传 送 指 令 示 意 图
第 3 章 单片机汇编程序设计
第 3 章 单片机汇编程序设计
第 3 章 单片机汇编程序设计
一.数据传送指令 以助记符MOV为基础,分成:
片内数据存储器传送指令 片外数据存储器传送指令 程序存储器传送指令
寻址范围:只能对程序存储器ROM进行寻址,主要用于查 表性质的访问。
第 3 章 单片机汇编程序设计
6. 位寻址方式
定义:指令中给出的操作数是一个可单独寻址的位地址,这 种寻址方式称为位寻址方式。
例如: MOV C,3AH 特点:位寻址是直接寻址方式的一种,其特点是对8位二进制
数中的某一位的地址进行操作。 寻址范围:
第 3 章 单片机汇编程序设计
3.1 单片机指令系统概述
指令: 规定计算机基本操作的语句或命令。指 令通常有两个组成部分:操作码和操作 数。
指令系统:一个单片机所能执行的指令集合即 为它的指令系统。
第 3 章 单片机汇编程序设计
一条汇编语言指令中最多包含 4 个区段, 如下所示: [标号:] 操作码 [操作数] [;注释]
位寻址区 20H~2FH共16个单元里128位地址(00H~7FH) 21个特殊功能寄存器中的11个可位寻址的寄存器里共82位
80H(P0) 、 88H(TCON)、90H(P1) 、 98H(SCON) 、 0A0H(P2) 、0A8H(IE少2位) 、0B0H(P3) 、 0B8H(IP少3 位) 、0D0H (PSW少1位) 、0E0H (ACC)、0F0H(B)。
给出。 例如:MOV A , 3AH 特点:指令中含有操作数的地址。该地址指出了
参与操作的数据所在的字节单元地址或位 地址。计算机执行它们时便可根据直接地 址找到所需要的操作数。 寻址范围:片内RAM(低128字节)、专用寄存器。
第 3 章 单片机汇编程序设计
2. 立即寻址方式
定义:将立即参与操作的数据直接写在指令中,这种寻 址方式称为立即寻址。
第 3 章 单片机汇编程序设计
在 MCS -51单片机指令系统中, 有以下7种寻址方式:
(1) 立即寻址;
(2) 直接寻址;
(3) 寄存器寻址;
(4) 寄存器间接寻址;
(5) 基址寄存器加变址寄存器间接寻址;
(6)位寻址 (7)指令寻址
绝对寻址 相对寻址
第 3 章 单片机汇程序设计
1. 直接寻址方式 定义:指令中操作数直接以存储单元地址的形式
第 3 章 单片机汇编程序设计
4. 寄存器间接寻址方式
定义:指令给出的寄存器中存放的是操作数据的单元地址, 这种寻址方式称为寄存器间接寻址。
例如: MOV A,@ R0 特点:指令给出的寄存器中存放的是操作数地址。寄存器间
接寻址是一种二次寻找操作数地址的寻址方式,寄存 器前边必须加前缀符号“@”。不能用于寻址特殊功能 寄存器SFR。
第 3 章 单片机汇编程序设计
总结: 7 种寻址方式及使用空间
7F
82
第 3 章 单片机汇编程序设计
3.3 80C51 单片机指令分类(共有111条)
按指令的功能, 80C 51 指令系统可分为下列 5 类: ——数据传送类(29条) ——算术运算类(24条) ——逻辑运算及移位类(24条) ——位操作类(17条) ——控制转移类(17条)
例如 MOV A , #3AH MOV DPTR, #data16
特点:指令中直接含有所需的操作数。该操作数可以是 8位的,也可以是16位的,常常处在指令的第二 字节和第三字节的位置上。立即数通常使用 #data或#data16表示,在立即数前面加“#”标志, 用以和直接寻址中的直接地址(direct或bit)相区别。
第 3 章 单片机汇编程序设计
为区分以上四种寻址方式,现在列出四种语句
1 . MOV A, #30H
;A←30H ;最后A中的数据为 30H
如果30H单元存入的数据为 0FFH
2 . MOV A, 30H
;A←(30H) ;最后A中的数据为 0FFH
3 . MOV R1, #30H MOV A, R1
(3)以直接地址direct为目的操作数
MOV direct,A ;direct ← ( A)
MOV direct,Rn ;direct ←(Rn)
MOV direct,direct ;direct ←(direct)
MOV direct,@Ri ;direct ←((Ri))
MOV direct,#data ;direct ← #data
第 3 章 单片机汇编程序设计
3. 寄存器寻址方式
定义:操作数在寄存器中,只要指定了寄存器就能得到 操作数。
例如: MOV A,R0 特点:由指令指出某一个寄存器的内容作为操作数。存
放操作数的寄存器在指令代码中不占据单独的一 个字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄 存器( A, B, DPTR, CY)。
为相对转移指令所使用,其指令码中含有相对地址 偏移量,能生成浮动代码。
目的地址=指令地址(PC)+指令字节数+偏移量(rel)
第 3 章 单片机汇编程序设计
相对寻址方式
寻址范围:只能对程序存储器ROM进行寻址。相对地址 偏移量(rel )是一个带符号的8位二进制补 码,其取值范围为128~+127(以PC为中 间的256个字节范围)。
MOV R0, #30H MOV A, @R0
MOV A,direct ;A←(direct)
MOV A,@Ri
;A←((Ri))
MOV A,#data ;A← #data
(2)以Rn为目的操作数
MOV Rn,A
;Rn ← (A)
MOV Rn,direct
;Rn ←(direct)
MOV Rn,#data
;Rn ← #data
第 3 章 单片机汇编程序设计
addr11:表示11位目的地址,主要用于ACALL和 AJMP指令中。
rel: 相对转移指令中的偏移量,为8位带符号补码。 DPTR: 数据指针。 bit: 内部RAM(包括专用寄存器)中的直接寻址位。 A: 累加器。 ACC: 直接寻址方式的累加器。
第 3 章 单片机汇编程序设计
B:寄存器B。 C :进位标志位,也称为累加位。 / :加在位地址的前面,表示对该位状态取反。 @:间接寻址寄存器的前缀标志。 (X):某寄存器或某单元中的内容。 ((X)):由“X”间接寻址单元中的内容。 ←:箭头左边的内容被箭头右边的内容所取代。
第 3 章 单片机汇编程序设计
1. 单字节指令格式由8位二进制编码表示,
例如: CLR A→E4H 2. 双字节指令格式由两个字节组成, 操作码和操作数,
例如: MOV A, #10H→74H 10H 3. 三字节指令格式中, 第一个字节为操作码, 后两个字节为 操作数,
例如: MOV 40H, #30H→75H 40H 30H
例如:MOVC A, @A+DPTR ;A←((A)+(DPTR)) MOVC A, @A+PC ; A←((A)+(PC)) JMP @A+DPTR ; PC←(A)+(DPTR)
第 3 章 单片机汇编程序设计
5. 变址寻址方式
特点:指令操作码中隐含作为基址寄存器用的DPTR(或 PC )和作为变址用的累加器A。在执行变址寻址指 令时,80C51单片机先把基地址( DPTR或PC 的内 容)和地址偏移量(A的内容)相加,以形成操作数 地址,再由操作数地址找到操作数,并完成相应的 操作。变址寻址方式是单字节指令。
7. 指令寻址 一.绝对寻址 绝对寻址是在指令的操作数中直接提供目的位置的地 址或地址的一部分。 长转移和长调用提供目的位置的16位地址 绝对转移和绝对调用提供目的位置的16位地址的 低 11位
第 3 章 单片机汇编程序设计
二 相对寻址方式
定义:将程序计数器PC的当前值(取出本条指令后的PC 值)与指令第二个字节给出的偏移量(rel)相加, 形成新的转移目标地址。称为相对寻址方式。
第 3 章 单片机汇编程序设计
6. 位寻址方式
寻址形式:
(1) 用直接位地址:
MOV C,8CH (2) 用单元地址加位序
MOV C,88H.4 ;88H+4H=8CH
(3) 用位名称:
SET TR0
;启动定时器0
(4) 用寄存器名加位序:
MOV C,TCON.4 ;
第 3 章 单片机汇编程序设计
Ri: 可用作间接寻址的寄存器,只能是R0, R1 两个 寄存器,i=0,1。
direct: 8位直接地址,在指令中表示直接寻址方 式,寻址范围256个单元。
#data: 8位立即数。 #data16:16位立即数。
第 3 章 单片机汇编程序设计
addr16:表示16位目的地址,主要用于LCALL和 LJMP指令中。
注意,源操作数和目的操作数中的Rn和@Ri不能相互配对。 如不允许有“MOV Rn,Rn”,“MOV @Ri,Rn”这样的 指令,在MOV指令中,不允许在一条指令中同时出现工作 寄存器,无论它是寄存器寻址还是寄存器间接寻址。
第 3 章 单片机汇编程序设计
例3-1 设内部RAM中30H的内容为40H,40H单元的内容 为10H,P1口作为输入口,其输入数据为0CAH, 分析下面程序段的执行结果。
;R1←30H
;A←(R1) ;A←30H ;最后A中的数据为 30H
4 . MOV R1, #30H MOV A, @R1
;R1←30H
;A←((R1)) ;A←(30H) ;最后A中的数据为 0FFH
第 3 章 单片机汇编程序设计
5. 变址寻址方式
定义:操作数存放在变址寄存器(累加器A)和基址寄存 器(DPTR或PC)相加形成的16位地址单元中。这 种寻址方式称为基址加变址寄存器间接寻址,简称 为变址寻址。
4 个区段之间要用分隔符分开,标号与操作码之间用
“:”隔开, 操作码与操作数之间用空格隔开, 操作数与 注释之间用“;”隔开, 如果操作数有两个以上, 则在操 作数之间要用逗号“,”隔开 (乘法指令和除法指令除
外 )。
第 3 章 单片机汇编程序设计
掌握熟悉指令的一些方法
1. 先通读指令,了解有哪些类型、基本操作情况、使用 场
第 3 章 单片机汇编程序设计
3.2 80C51 单片机指令寻址方式
所谓寻址方式, 就是寻找操作数地址的方式, 在用汇 编语言编程时, 数据的存放、传送、 运算都要通过指令 来完成。 编程者必须自始至终都要十分清楚操作数的 位置, 以及如何将它们传送到适当的寄存器去参与运算。 每一种计算机都具有多种寻址方式。寻址方式的多少是 反映指令系统优劣的主要指标之一。
第 3 章 单片机汇编程序设计
4. 寄存器间接寻址方式
寻址范围: 1、对于内部RAM低128单元访问(只能使用R0或R1作间
址寄存器) 2、对于外部RAM访问(使用DPTR作间址寄存器)。 3、对于外部低256单元RAM的访问,除可以使用DPTR外,
还可以使用R0或R1作间址寄存器(先确定高8位地址给 P2)。
第 3 章 单片机汇编程序设计
1.片内数据存储器传送指令MOV 指令格式:MOV 目的操作数,源操作数 其中: 源操作数可以为A、Rn、@Ri、direct、#data 目的操作数可以为A、Rn、@Ri、direct
第 3 章 单片机汇编程序设计
(1)以A为目的操作数
MOV A,Rn
;A← (Rn)
(4)以间接地址@Ri为目的操作数
MOV @Ri,A
;(Ri) ← ( A)
MOV @Ri,direct ;(Ri) ←(direct)
MOV @Ri,#data ;(Ri) ← #data
第 3 章 单片机汇编程序设计
(5)以DPTR为目的操作数 MOV DPTR,#data16 ;DPTR ← #data16
合。个人可做些归纳和总结。
2. 阅读书中或别人的有关程序,其中的应用技巧,必要 时
再回来查有关内容。
3. 自己编写程序,上机实验,体会指令的作用和编程技 巧。
4. 参与实际项目,在实战过程中使用和提高。
3
第 3 章 单片机汇编程序设计
80C51指令中使用的符号的意义作简要说明:
Rn: 表示当前工作寄存器R0~R7中的任一寄存器 n=0~7。
MCS -51
第 3 章 单片机汇编程序设计
3.3.1 数据传送类指令(29条)
传 送 指 令 示 意 图
第 3 章 单片机汇编程序设计
第 3 章 单片机汇编程序设计
第 3 章 单片机汇编程序设计
一.数据传送指令 以助记符MOV为基础,分成:
片内数据存储器传送指令 片外数据存储器传送指令 程序存储器传送指令
寻址范围:只能对程序存储器ROM进行寻址,主要用于查 表性质的访问。
第 3 章 单片机汇编程序设计
6. 位寻址方式
定义:指令中给出的操作数是一个可单独寻址的位地址,这 种寻址方式称为位寻址方式。
例如: MOV C,3AH 特点:位寻址是直接寻址方式的一种,其特点是对8位二进制
数中的某一位的地址进行操作。 寻址范围:
第 3 章 单片机汇编程序设计
3.1 单片机指令系统概述
指令: 规定计算机基本操作的语句或命令。指 令通常有两个组成部分:操作码和操作 数。
指令系统:一个单片机所能执行的指令集合即 为它的指令系统。
第 3 章 单片机汇编程序设计
一条汇编语言指令中最多包含 4 个区段, 如下所示: [标号:] 操作码 [操作数] [;注释]
位寻址区 20H~2FH共16个单元里128位地址(00H~7FH) 21个特殊功能寄存器中的11个可位寻址的寄存器里共82位
80H(P0) 、 88H(TCON)、90H(P1) 、 98H(SCON) 、 0A0H(P2) 、0A8H(IE少2位) 、0B0H(P3) 、 0B8H(IP少3 位) 、0D0H (PSW少1位) 、0E0H (ACC)、0F0H(B)。
给出。 例如:MOV A , 3AH 特点:指令中含有操作数的地址。该地址指出了
参与操作的数据所在的字节单元地址或位 地址。计算机执行它们时便可根据直接地 址找到所需要的操作数。 寻址范围:片内RAM(低128字节)、专用寄存器。
第 3 章 单片机汇编程序设计
2. 立即寻址方式
定义:将立即参与操作的数据直接写在指令中,这种寻 址方式称为立即寻址。
第 3 章 单片机汇编程序设计
在 MCS -51单片机指令系统中, 有以下7种寻址方式:
(1) 立即寻址;
(2) 直接寻址;
(3) 寄存器寻址;
(4) 寄存器间接寻址;
(5) 基址寄存器加变址寄存器间接寻址;
(6)位寻址 (7)指令寻址
绝对寻址 相对寻址
第 3 章 单片机汇程序设计
1. 直接寻址方式 定义:指令中操作数直接以存储单元地址的形式
第 3 章 单片机汇编程序设计
4. 寄存器间接寻址方式
定义:指令给出的寄存器中存放的是操作数据的单元地址, 这种寻址方式称为寄存器间接寻址。
例如: MOV A,@ R0 特点:指令给出的寄存器中存放的是操作数地址。寄存器间
接寻址是一种二次寻找操作数地址的寻址方式,寄存 器前边必须加前缀符号“@”。不能用于寻址特殊功能 寄存器SFR。
第 3 章 单片机汇编程序设计
总结: 7 种寻址方式及使用空间
7F
82
第 3 章 单片机汇编程序设计
3.3 80C51 单片机指令分类(共有111条)
按指令的功能, 80C 51 指令系统可分为下列 5 类: ——数据传送类(29条) ——算术运算类(24条) ——逻辑运算及移位类(24条) ——位操作类(17条) ——控制转移类(17条)
例如 MOV A , #3AH MOV DPTR, #data16
特点:指令中直接含有所需的操作数。该操作数可以是 8位的,也可以是16位的,常常处在指令的第二 字节和第三字节的位置上。立即数通常使用 #data或#data16表示,在立即数前面加“#”标志, 用以和直接寻址中的直接地址(direct或bit)相区别。
第 3 章 单片机汇编程序设计
为区分以上四种寻址方式,现在列出四种语句
1 . MOV A, #30H
;A←30H ;最后A中的数据为 30H
如果30H单元存入的数据为 0FFH
2 . MOV A, 30H
;A←(30H) ;最后A中的数据为 0FFH
3 . MOV R1, #30H MOV A, R1
(3)以直接地址direct为目的操作数
MOV direct,A ;direct ← ( A)
MOV direct,Rn ;direct ←(Rn)
MOV direct,direct ;direct ←(direct)
MOV direct,@Ri ;direct ←((Ri))
MOV direct,#data ;direct ← #data
第 3 章 单片机汇编程序设计
3. 寄存器寻址方式
定义:操作数在寄存器中,只要指定了寄存器就能得到 操作数。
例如: MOV A,R0 特点:由指令指出某一个寄存器的内容作为操作数。存
放操作数的寄存器在指令代码中不占据单独的一 个字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用寄 存器( A, B, DPTR, CY)。