80C51指令 系统

上传人:f****u 文档编号:128437122 上传时间:2020-04-21 格式:PPT 页数:90 大小:336.50KB
返回 下载 相关 举报
80C51指令 系统_第1页
第1页 / 共90页
80C51指令 系统_第2页
第2页 / 共90页
80C51指令 系统_第3页
第3页 / 共90页
80C51指令 系统_第4页
第4页 / 共90页
80C51指令 系统_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《80C51指令 系统》由会员分享,可在线阅读,更多相关《80C51指令 系统(90页珍藏版)》请在金锄头文库上搜索。

1、本章学习目标 了解指令及指令系统常识熟悉指令中常用符号在理解的基础上牢记7种寻址方式熟悉各类指令的功能及应用范围能使用指令完成各种常规任务 第2章单片机的指令系统 第二章80C51系列单片机指令系统 2 1指令系统概述 1 指令分类一台计算机的CPU所能执行的全部指令的集合称为这个CPU的指令系统 指令系统是开发和生产厂商定义的 如要使用其单片机 用户就必须了解和遵循这些指令标准 要掌握某种 类 单片机 指令系统的学习是必须的 80C51共有111条指令 按照字节分 单字节指令49条 双字节指令45条 三字节指令17条 按照指令执行时间分类 单机器周期指令64条 双机器周期指令45条 4机器周

2、期指令2条 80C51指令系统还有极为丰富的位操作指令 充分体现了单片机面向控制的特点 2 指令格式 标号 操作码 操作数1 操作数2 操作数3 注释 NEXT MOVA R0 A R0 标号是一个名字 用来标明指令的地址 由1 6个字符组成MOV是操作码 它表示指令的性质和功能 此处其功能是将R0中的内容送到累加器A中A是数据传送的目的地 称为目的操作数R0是数据的来源 称为源操作数 2 1指令系统概述 3 指令系统中常用符号说明 2 1指令系统概述 执行指令需要操作数 寻址方式即指找到操作数的方法 寻址空间即指操作数所在的存储空间 80C51系列单片机合计七种寻址方式 分别为 立即寻址寄存

3、器寻址直接寻址寄存器间接寻址变址寻址相对寻址位寻址对于双字节指令 两个操作数均有寻址方式 下面要介绍的均是源操作数寻址方式 2 寻址方式和寻址空间 1 立即数寻址在指令中直接给出参与操作的数据 这种寻址方式称为立即数寻址 这一直接给出的数据称为立即数 立即数前要加上 符号 例如 MOVA 0EH A 0EHMOVDPTR 2100H DPTR 2100H 2 寻址方式和寻址空间 2 寄存器寻址参与操作的数据由寄存器给出 这种寻址方式称为寄存器寻址 由于寄存器在CPU的内部 所以采用该寻址方式可以获得较高的运算速度 可用于该寻址方式的寄存器有R0 R7 DPTR A B 如 MOVA R1 A

4、R1 该指令将R1内的数据传送到累加器A中 源操作数R1和目的操作数均采用了寄存器寻址 再比如 INCDPTR DPTR DPTR 1 2 寻址方式和寻址空间 3 直接寻址在指令中直接给出操作数的地址的寻址方式称为直接寻址 在该寻址方式中 操作数存放在片内数据存储器中 地址长度为8位 这种寻址方式可以访问 内部数据RAM低128B 该空间还可以采用寄存器间接寻址 和特殊功能寄存器SFR 该空间只能采用直接寻址 例如 在片内RAM60H单元存放一个8位二进制数3CH 执行指令MOVA 60H后 结果为 A 3CH 如图2 1所示 2 寻址方式和寻址空间 4 寄存器间接寻址在指令中以指定寄存器的内

5、容作为操作数地址的寻址方式称为寄存器间接寻址 这种方式可用于访问内部RAM和外部数据存储器 能够用于寄存器间接寻址方式的寄存器有 R0 R1 DPTR和SP 在间接寻址寄存器前加 表示间接寻址 例如 MOVA R0 A R0 假定R0中的内容为50H 50H单元内容为45H 图2 2给出了寄存器间接寻址方式的执行过程 2 寻址方式和寻址空间 寄存器间接寻址的寻址范围 1 片内128B的RAM 用R0 R1作间址寄存器 如MOVA R0 2 片外64KB的数据存储器 用DPTR作间址寄存器 如MOVXA DPTR 3 堆栈区域 用SP作间址寄存器 如PUSHACC 4 片外256B数据存储器 用

6、R0 R1作间址寄存器 如MOVXA R0 2 寻址方式和寻址空间 5 变址寻址基址寄存器 DPTR或PC 的内容与变址寄存器 累加器A 的内容相加 其和形成16位地址作为操作数的地址的寻址方式称为变址寻址 该类寻址方式用于程序存储器的访问 多用于查表程序 例如 MOVCA A DPTR A A DPTR 设 A 12H DPTR 02E3H 02F5H 1EH 则结果为 A 1EH 执行情况见图2 3所示 变址寻址指令只有3条 另外两条是 MOVCA A PCJMP A DPTR 2 寻址方式和寻址空间 6 相对寻址相对寻址是以程序计数器PC的当前值 是指当前跳转指令的下一条指令的地址 为基

7、准 加上指令中给出的相对偏移量rel以得到程序执行地址的寻址方式 这种寻址方式的目的是修改PC的值 从而实现程序的转移 转移的目的地址可参见如下表达式 目的地址 转移指令地址 转移指令字节数 rel值得注意的是 偏移量rel有正负之分 其取值范围是 128 127 2 寻址方式和寻址空间 其中 操作码80H存放在3000H单元中 54H是设定的相对偏移量rel 存放在3001H单元 指令的执行过程如图2 4所示 例如 有双字节相对转移指令 指令地址操作码操作数指令注释3000H8054HSJMPrel PC PC 2 rel 2 寻址方式和寻址空间 7 位寻址位寻址是将8位二进制数中的某一位作

8、为操作数 在指令中给出的是位地址 一般用bit表示 例如 CLRP 0 将P 口的第 位清零位寻址的范围为 片内RAM区的 H F 的 个单元中的 位 如MOVC 30H字节地址能被 整除的SFR 如SETBP1 0 2 寻址方式和寻址空间 表 寻址方式及寻址空间 2 寻址方式和寻址空间 2 3指令系统 2 3 1数据传送指令 通用传送类 通用传送指令的助记符为MOV Move 格式如下 MOV 此类指令的功能是把源操作数指定的数据传送到目的操作数 目的地址 所指定的存储单元中 MOV指令的传送关系如图2 5所示 图2 5 Movdirect directMovdirect RiMovdire

9、ct RnMovdirect AMovdirect data 2 3指令系统 2 3 1数据传送指令 通用传送类 例1设内部RAM中 50H 40H 40H 10H P1口作输入口 P1 0ABH 问程序执行后各存储器中的数据是什么 MOVR0 50H 立即数50H送R0中 R0 50HMOVA R0 R0间接寻址 将50H单元内容送A A 40HMOVR1 A A送R1 R1 40HMOVB R1 R1间接寻址 将40H单元内容送B B 10HMOV R1 P1 将P1内容送40H单元 40H 0ABHMOVP2 P1 将P1内容送P2 P2 0ABH执行结果 R0 50H A 40H R1

10、 40H B 10H P1 0ABH 40H 0ABH P2 0ABH任何不符合格式要求的 指令 都是不合法的 2 3指令系统 2 3 1数据传送指令 特殊传送类 这类指令用于访问片外RAM或扩展的I O口 1 读写片外RAM指令MOVX 1 用 DPTR进行间接寻址的指令读 MOVXA DPTR A DPTR 写 MOVX DPTR A DPTR A 2 用 Ri进行间接寻址的指令读 MOVXA Ri A Ri 写 MOVX Ri A Ri A 2 3指令系统 2 3 1数据传送指令 特殊传送类 例2把片外RAM的36H单元中的数据送到片外RAM的1200H单元 分析 36H 1200H 程

11、序如下 MOVR1 36HMOVXA R1MOVDPTR 1200HMOVX DPTR A下面的程序可以实现吗 MOVDPTR 1200HMOVR1 36HMOV DPTR R1注意 片外RAM之间不能直接传送数据 必须经过累加器A 2 3指令系统 2 3 1数据传送指令 特殊传送类 2 查表指令MOVCMOVCA A DPTR A A DPTR MOVCA A PC A A PC 这两条指令主要用于查表 可以完成从程序存储器中取得数据并送入累加器A的功能 1 第一条指令以DPTR为基址寄存器 查表时DPTR用于存放表格的起始地址 表格起始地址可以设置在64KB程序存储器中的任何位置 2 第二

12、条指令以PC为基址寄存器 因A为8位无符号数 故该指令的查找范围是从PC当前值开始的255个地址单元内 若 DPTR 3000H A 60H 执行指令 MOVCA A DPTR 后 将程序存储器3060H单元的内容送A 2 3指令系统 2 3 1数据传送指令 特殊传送类 例3已知累加器A中有一个0 9范围内的数 请用查表法编程求出该数的平方值 设平方表表头地址为1000H 方法1 以DPTR为基址寄存器MOVDPTR 1000H 表头地址MOVCA A DPTR 查表求出平方值送A若原 A 3 查表后 A 9 方法2 以PC为基址寄存器ORG0FFBH0FFBHADDA data 加修正量 此

13、例data 02H0FFDHMOVCA A PC 查表0FFEHSJMP 暂停1000HDB01001HDB11002HDB4 1009HDB81END修正量 表头地址 PC当前值 1000H 0FFEH 02H所以data 02H SJMP指令2字节 查表指令和被查表格通常在同一页内 页内地址00H 0FFH即0 255 2 3指令系统 2 3 1数据传送指令 特殊传送类 3 数据交换指令交换类指令完成的传送是双向的 是两个字节间或两个半字节间的双向交换 特点是只能与累加器A进行交换 字节交换XCHA Rn A Rn XCHA direct A direct XCHA Ri A Ri 功能

14、字节数据交换 实现3种寻址操作数内容与A中内容的互换 例如 若 R1 16H A 28H 执行 XCHA R1 后 A 16H R1 28H 2 3指令系统 2 3 1数据传送指令 特殊传送类 半字节交换XCHDA Ri A3 0 Ri 3 0 SWAPA A3 0 A7 4 例如 若 R1 50H 50H 74H A 26H 执行指令 XCHDA R1 后 A 24H 50 76H 再如 若 A 38H 执行指令 SWAPA 后 A 83H 2 3指令系统 2 3 1数据传送指令 特殊传送类 4 堆栈操作指令 PUSH POP 堆栈操作指令只有两条 入栈指令用于保护片内某个单元的内容 出栈指

15、令用于恢复片内某个单元的内容 通常入栈指令和出栈指令是成对出现的 入栈 PUSHdirect SP SP 1 SP direct 出栈 POPdirect direct SP SP SP 1入栈操作 首先SP 1 然后写入数据 出栈操作 首先读出数据 然后SP 1 单片机复位操作后 SP的值被初始化为07H 2 3指令系统 2 3 1数据传送指令 特殊传送类 如图2 6所示 在堆栈的原始状态下执行一条 PUSHACC 后 堆栈的变化过程如图2 6 b 在堆栈的原始状态下执行一条 POPACC 后 堆栈的变化过程如图2 6 c 图2 6堆栈存入 取出数据的操作 2 3指令系统 2 3 1数据传送

16、指令 特殊传送类 例4设 60H X 70H Y 试用堆栈指令实现60H和70H单元内容的互换 MOVSP 50H 设栈底PUSH60H 51H 60H X压入51H单元PUSH70H 52H 70H Y压入52H单元POP60H 60H 52H Y弹出进入60H单元POP70H 70H 51H X弹出进入70H单元 想一想 用数据交换指令如何实现60H和70H单元内容的互换 2 3指令系统 2 3 2算术运算指令 算术运算指令可以完成加 减 乘 除四则运算以及加1 减1和二 十进制调整操作 这类指令多与累加器A有关 A常作为目的操作数 即指令运算结果存放在A中 同时它也能充当源操作数 这类指令大多影响标志位 因而分析指令运算结果和对标志位的影响是本小节的重点 具体影响见表2 3 2 3指令系统 2 3 2算术运算指令 表2 3算术运算指令对标志位的影响 说明 1 表示对应的指令操作影响该标志位 0 表示相应的指令操作对该标志位清0 表示相应的指令操作不影响该标志 2 累加器加1 INCA 和减1 DECA 指令仅影响P标志 2 3指令系统 2 3 2算术运算指令 1 不带CY位的加法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号