51单片机汇编语言教程(精华版本)ppt课件_第1页
51单片机汇编语言教程(精华版本)ppt课件_第2页
51单片机汇编语言教程(精华版本)ppt课件_第3页
51单片机汇编语言教程(精华版本)ppt课件_第4页
51单片机汇编语言教程(精华版本)ppt课件_第5页
已阅读5页,还剩516页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章单片机基础知识概述 1 1单片机概述1 2单片机学习的预备知识 第1章单片机基础知识概述 1 1单片机概述1 什么是单片机 2 为什么要学单片机 3 怎样学习单片机 1 2单片机学习的预备知识1 3Proteus软件简介 1 什么是单片机 从微型计算机技术的两大发展分支谈起 第1章单片机基础知识概述 单片计算机 SingleChipMicrocomputer SCM 将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统 第1章单片机基础知识概述 单片机应用范例 第1章单片机基础知识概述 单片机的发展 从1976年起 Intel公司先后推出MCS 48 4位 MCS 51 8位 和MCS 96 16位 三大系列单片机 迄今为止 世界各地厂商已相继研制出大约50个系列300多个品种的单片机产品 单片机的发展趋势是高集成度 高性能 高性价比 低功耗 微控制器 MicroCompuerUnit 增强功能的单片机 8位的51内核单片机仍然是目前主流机型 第1章单片机基础知识概述 第1章单片机基础知识概述 单片机应用实例 抽油机自动间抽控制技术 第1章单片机基础知识概述 游梁式抽油机 石油开采设备 3 怎样学习单片机 各组成部分既相对独立 又相互交叉 80C51型单片机 教学目标 掌握单片机原理与应用系统设计技能需要具备 单片机硬件 软件 接口三方面知识 第1章单片机基础知识概述 硬件结构 RAM IO T C INT UART 存储器 输入 输出单元 定时 计数器 中断系统 串行通信 第1章单片机基础知识概述 第1章单片机基础知识概述 1 1单片机概述1 2单片机学习的预备知识1 数制定义2 数制转换3 有符号数4 位 字节 字 1 数制定义 单片机常用的数制有十进制 二进制 十六进制 例如 第1章单片机基础知识概述 二进制 0 1 规则 逢二进一 后缀为B 一般表达式为 其中 基数为2 各位加权数为0 1 例如 第1章单片机基础知识概述 十六进制 0 9 A F 规则 逢十六进一 后缀为H 一般表达式为 其中 基数为16 各位加权数为0 9 A F 例如 第1章单片机基础知识概述 2 数制转换 1 二进制转换成十进制转换规则 按进制的表达式展开 然后按照十进制运算求和 例如 第1章单片机基础知识概述 2 十六进制转换成十进制转换规则 按进制的表达式展开 然后按照十进制运算求和 例如 第1章单片机基础知识概述 3 二进制与十六进制数之间的转换 从低位起由右到左 每四位二进制数对应一位十六进制数 例如 最后一组不足时左边添0凑齐4位 转换规则 第1章单片机基础知识概述 4 十进制整数转换成二 十六进制整数转换规则 除基取余 十进制整数不断除以转换进制基数 直至商为0 每除一次取一个余数 从低位排向高位 例如 第1章单片机基础知识概述 4 位 字节 字 位 bit 二进制数中的一位 其值不是 1 就是 0 字节 byte 一个8位的二进制数为一个字节 字节是计算机数据的基本单位 字 word 两个字节就是一个字 又叫双字节 另外 有时还会用到 半字节 即4位二进制 例如 1000111011001011B 8ECDH 第1章单片机基础知识概述 80C51单片机的内部资源主要包括 8位中央处理器 CPU 片内振荡器和时钟电路 4KB片内程序存储器 ROM 128字节的片内RAM 4个8位并行的双向I O口 2个16位定时器 计数器 1个全双工串行口 时钟电路 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 1 1MCS 51单片机的内部结构2 1 2MCS 51引脚及功能2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口 P3口线的第二功能为多功能引脚 其8个引脚均具有专门的第二功能 VCC VSS XTAL2XTAL1 RST P0 0P0 1P0 2P0 3P0 4P0 5P0 6P0 7 P1 0P1 1P1 2P1 3P1 4P1 5P1 6P1 7 P2 7P2 6P2 5P2 4P2 3P2 2P2 1P2 0 ALE P3 0P3 1P3 2P3 3P3 4P3 5P3 6P3 7 2 时钟电路 XTAL1 XTAL2 3 复位引脚 RST 4 并行口 P0 P1 P2 P3 7 ALE 地址锁存控制信号 1 电源引脚 VCC 5V VSS 地 1 管脚图 MCS51单片机信号引脚简介 1 电源及晶振引脚 VCC 40脚 5V电源引脚VSS 20脚 接地引脚 XTAL1 19脚 外接晶振引脚 内置放大器输入端 XTAL2 18脚 外接晶振引脚 内置放大器输出端 第2章单片机结构及原理 2 控制引脚 ALE PROG 30 为地址锁存使能输出 编程脉冲输入 RST VPD 9 为复位 备用电源引脚 PSEN 29 输出访问片外程序存储器读选通信号 EA VPP 31 外部ROM允许访问 编程电源输入 第2章单片机结构及原理 3 并行I O口引脚 共计4 8 32个引脚 其中 P0 0 P0 7 39 32脚 P0口 P1 0 P1 7 1 8脚 P1口 P2 0 P2 7 21 28脚 P2口 P3 0 P3 7 10 17脚 P3口 P0 P3是单片机对外联络的重要通道 第2章单片机结构及原理 P3口的特殊功能 第2章MCS 51单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口 2 1MCS 51单片机结构2 1 1MCS 51单片机的内部结构2 1 2MCS 51引脚及功能2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构1 存储器划分方法2 程序存储器3 数据存储器2 3单片机的复位 时钟与时序2 4并行I O口 第2章单片机结构及原理 MCS 51系列单片机存储器配置如图 共有四个物理存储空间 或三个逻辑存储空间 第2章单片机结构及原理 POM作用 存放程序 表格或常数 非易失性 掉电保存 RAM作用 存放程序运行结果字长 8位数量 256B 30H 低128B 00H 7FH 为普通RAM区高128B 80H FFH 为特殊功能寄存器区 第2章单片机结构及原理 1 低128字节的区域 工作寄存器区 00H 1FH 可位寻址区 20H 2FH 用户RAM区 30H 7FH 第2章单片机结构及原理 区共有32个字节单元 00H 1FH 分为4组 每组8个单元 命名为工作寄存器R0 R7 任一时刻CPU只能选用一组工作寄存器为当前工作寄存器组 当前工作寄存器组通过PSW中的RS1和RS0标志位 工作寄存器组指针 进行设置 第2章单片机结构及原理 注意 CPU复位后RS1和RS0默认值为0 即默认第0组为当前工作寄存器组 第2章单片机结构及原理 区共有16个字节单元 20H 2FH 又可划分为128个位地址单元 00H 7FH 可按两种方式存取数据 第2章单片机结构及原理 区共有80个字节单元 30H 7FH 是用户RAM区 但只能按字节进行数据存取操作 在此区内用户可以作为为堆栈区和中间数据存储区 第2章单片机结构及原理 2 高128字节RAM区 在80H FFH的高128字节RAM区中 离散地分布有21个特殊功能寄存器 SpetialFunctionRegister 又称为特殊功能寄存器区 30H 第2章单片机结构及原理 具有标准的SFR名称和符号 字节地址和位地址 前述的Acc PSW DPL DPH等几个寄存器都属于SFR 其余寄存器将在以后章节中结合应用进行介绍 第2章单片机结构及原理 字节地址末位是0或8的SFR 都具有位地址 SFR之外的其它存储单元用户均不可用 系统留用 第2章单片机结构及原理 41 8051的内部结构 8051芯片按功能结构 CPU 控制器 程序计数器PC数据指针寄存器DPTR 运算器 累加器A寄存器B程序状态寄存器PSW 存储器 数据存储器RAM程序存储器ROM 定时 计数器 2个16位定时器T0 T1 I O接口 P0 P1 P2 P3四个8位口 一个全双工串行口 5个中断源 单片机CPU 控制器 运算器 第2章单片机结构及原理 作用 统一指挥和控制计算机协调工作 1 控制器 1 程序计数器 ProgramCounter PC 指令地址寄存器 永远存放着下一条指令的地址 PC的变化规律决定着程序的流程 第2章单片机结构及原理 2 数据指针寄存器 DataPointer DPTR 16位字长 可寻址范围216 64KB 用于表示存储器数据地址的指针可拆为2个8位的独立寄存器DPL和DPH 35H 77H F4H 94H 9EH DPTR指针 xxH xxH xxH xxH xxH ROM RAM DPL DPH 第2章单片机结构及原理 2 运算器 作用 对数据进行算术运算和逻辑操作功能 1 对暂存器中的数据进行运算 2 结果保存在ACC中 3 运行状态反映在PSW中 第2章单片机结构及原理 1 累加器 Accumulater A 累加器A是一个8位寄存器 用来存放操作数或中间运算结果 它是CPU中使用最频繁的寄存器 第2章单片机结构及原理 2 程序状态字寄存器 ProgramStateWord PSW PSW是一个8位的专用寄存器 用于存放程序运行过程中的各种状态信息 PSW中的各位信息通常是在指令执行过程中自动形成的 但也可以由传送指令加以改变 PSW各位的定义 按位置定义的名称 按功能定义的名称 第2章单片机结构及原理 2 程序状态字寄存器 ProgramStateWord PSW PSW是一个8位的专用寄存器 用于存放程序运行过程中的各种状态信息 PSW中的各位信息通常是在指令执行过程中自动形成的 但也可以由传送指令加以改变 PSW各位的定义 按位置定义的名称 按功能定义的名称 第2章单片机结构及原理 CY PSW 7 进位标志在进行加或减运算时 如果操作结果最高位有进位或借位时 CY由硬件置 1 否则清 0 用途 1 根据CY判断加减运算时有无进位或借位 2 在位操作中CY可作为位累加器用 举例 第2章单片机结构及原理 AC PSW 6 辅助进位标志在进行加或减运算时 如果操作结果的低四位数向高四位产生进位或借位时 将由硬件置 1 否则清 0 举例 用途 1 根据AC判断加减运算时有无半进位或半借位 2 在BCD码调整运算中要用到AC标志 第2章单片机结构及原理 F0 PSW 5 和F1 PSW 1 用户标志位可作为用户自行定义的一个状态标记 第2章单片机结构及原理 RS1和RS0 PSW 4和PSW 3 工作寄存器组指针用于选择CPU当前工作寄存器组 第2章单片机结构及原理 OV PSW 2 溢出标志在有符号数运算或乘除运算中若有异常结果 OV置1 否则清0 根据运算过程中的D6和D7位的变化由硬件自动形成OV值 用途 判断有符号数运算或乘除运算的结果是否正常 第2章单片机结构及原理 P PSW 0 奇偶标志位该位始终跟踪累加器A中含 1 个数的奇偶性如果A中有奇数个 1 则P置 1 否则置 0 举例若A 10011111 则P 0若A 11000001 则P 1 用途 用于串行通讯中的数据校验 判断是否存在传输错误 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序1 复位与复位电路2 时钟电路3 CPU时序2 4并行I O口 第2章单片机结构及原理 复位 使单片机恢复原始默认状态的操作 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序1 复位与复位电路2 时钟电路3 CPU时序2 4并行I O口 时序是计算机指令执行时各种微操作在时间上的顺序关系 其作用是保证CPU中各种微操作有序运行 1 时序的概念 第2章单片机结构及原理 时序定时单位共有4个参数 拍 振荡周期 时钟周期 P 状态周期S 机器周期 指令周期 一个状态 S 包含2个拍 P 一个机器周期由6个S或12个P组成 一个指令周期约为1 4个机器周期 第2章单片机结构及原理 例 外接晶振为12MHz时 MCS 51单片机的四种时序周期的具体值为 更正 P 30 振荡周期 1 12us状态周期 1 6us机器周期 1us指令周期 1 4us 振荡周期 1 24us状态周期 1 12us机器周期 1us指令周期 1 4us 振荡周期是机器周期的1 12 正 误 正 机器周期是振荡周期的1 12 误 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序1 复位与复位电路2 时钟电路3 CPU时序2 4并行I O口 CPU微操作必须在统一的时钟控制下才能正确进行 内部时钟方式 微调电容 C1 C2 30pF晶振 石英晶体封裝 MCS 51时振荡频率为6 12MHZ 外部时钟方式 第2章单片机结构及原理 P1口的结构组成 P1 n 1个锁存器 1个场效应管驱动器V 2个三态门缓冲器 第2章单片机结构及原理 P1口具有输出 读引脚 读锁存器三种工作方式 输出时 D端 1 Q 0 V截止 P1 n 1D端 0 Q 1 V导通 P1 n 0读引脚时 P1 n 读引脚三态门1 内部总线读锁存器 Q端 读锁存器三态门2 内部总线 V 2 1 第2章单片机结构及原理 V的状态会影响P1 n的状态 如V导通 P1 n电平 0 钳位 读引脚可能出错为正确读出P1 n引脚电平 需要读引脚前应先使T截止令D 1 Q 0 V截止 读P1 n 不会出错 可见 P1口作为输入口时是有条件的 应先写1 而输出时无条件 因此 称P1口为准双向口 V 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口1 P1口2 P3口3 P0口4 P2口 P3口的结构组成 P3 n 1个锁存器 2个三态缓冲器 1个第二功能控制单元 1个输出驱动单元 第2章单片机结构及原理 P3口具有P1的三种工作方式 第二功能方式 输出时 D端 1 Q 1 V截止 P1 n 1D端 0 Q 0 V导通 P1 n 0读引脚时 P1 n 读引脚三态门1 内部总线 需先写1 读锁存器 Q端 读锁存器三态门2 内部总线 3 4 1 2 第二输入功能 V 第二输出功能 1 与非门开锁 第2章单片机结构及原理 P3口的第二功能方式 输出时 第二输出功能 1 与非门输出0 V截止 P3 n 1第二输出功能 0 与非门输出1 V导通 P3 n 0输入时 P3 n 三态门4 第二输入功能 D端写 1 与非门开锁 第二输出功能先写 1 3 4 1 2 第二输入功能 V 第2章单片机结构及原理 P3口第二功能定义 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口1 P1口2 P3口3 P0口4 P2口 P0口的结构组成 P0 n 1个锁存器 2个三态缓冲器 1个输出控制电路 非门X 与门A 电子开关MUX 1个输出驱动电路 场效应管V2 V1 P0口既可以作为通用I O口实现输入 输出功能 也可作为单片机地址 数据线实现外设扩展功能 第2章单片机结构及原理 漏极开路与上拉电阻的概念 封锁与门A 0 地址 数据端与A输出无关 控制端 0 MUX下通 Q与V1栅极直通 V2截止 V1漏极开路 第2章单片机结构及原理 为使漏极开路的V1有效 必须通过上拉电阻与电源接通 上拉电阻的阻值一般为4 7 10k 注意 P1 P2 P3口无需外接上拉电阻 已有内部上拉电阻 第2章单片机结构及原理 P0口的通用IO工作方式 控制端 0 输出时 D端 1 Q反端 0 V1截止 P0 n 1D端 0 Q反端 1 V1导通 P0 n 0读引脚时 P0 n 读引脚三态门1 内部总线 需要先写 1 读锁存器 Q端 读锁存器三态门2 内部总线 第2章单片机结构及原理 P0口的地址 数据分时复用方式 控制端 1 地址 数据 端无条件输入 输出 是严格意义上的双向口 地址 数据 方式下没有漏极开路问题 无需外接上拉电阻 第2章单片机结构及原理 第2章单片机结构及原理 2 1MCS 51单片机结构2 2MCS 51的存储器结构2 3单片机的复位 时钟与时序2 4并行I O口1 P1口2 P3口3 P0口4 P2口 P2口的结构组成 P2 n 1个锁存器 2个三态缓冲器 1个输出控制单元 1个输出驱动单元 V 第2章单片机结构及原理 P2口可以实现通用I O口和地址输出口两种功能 输出时 D端 1 Q端 1 V截止 P2 n 1D端 0 Q端 0 V导通 P2 n 0读引脚时 P2 n 读引脚三态门 内部总线 需要先写 1 读锁存器 Q端 读锁存器三态门 内部总线 P2作为通用I O口时 控制端 0 V 第2章单片机结构及原理 输出时 地址端 1 V截止 P2 n 1地址端 0 V导通 P2 n 0 P2作为地址输出口时 控制端 1 V 第2章单片机结构及原理 P0 P3小结 1 结构 第2章单片机结构及原理 本章小结 1 单片机的CPU由控制器和运算器组成 在时钟电路和复位电路的支持下 按一定的时序工作 单片机的时序信号包括振荡周期 时钟周期 机器周期和指令周期 2 51单片机采用哈佛结构存储器 共有3个逻辑存储空间和4个物理存储空间 片内低128字节RAM中包含4个工作寄存器组 128个位地址单元和80个字节地址单元 片内高128字节RAM中离散分布有21个特殊功能寄存器 3 P0 P3口都可作为准双向通用I O口 其中只有P0口需要外接上拉电阻 在需要扩展片外设备时 P2口可作为其地址线接口 P0口可作为其地址线 数据线复用接口 此时它是真正的双向口 第2章单片机结构及原理 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 3 1汇编语言概述1 汇编语言指令格式2 描述操作数的简记符号3 寻址方式3 2指令系统简介3 3汇编语言的编程方法 计算机中全部指令的集合称为指令系统 MCS 51单片机指令系统共有111条指令 按功能可划分为四大类 数据传送与交换类算术运算类逻辑运算类转移控制类 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 寻址方式 寻找操作数所在地址单元的方式 寻址方式越多 计算机的功能就越强 51单片机共有七种寻址方式 直接寻址 寄存器寻址 寄存器间接寻址 立即寻址 变址寻址 位寻址 相对寻址 可以先跳过这一节 待学完指令系统后再返回学习可能会易于理解 第3章单片机的汇编语言与程序设计 1 直接寻址 MOVA 68H A 68H 机器码为E568H 对于片内低128字节单元可在指令中直接给出单元地址 如MOVA 68H 但对于特殊功能寄存器 位于高128字节区 除了可用其单元地址给出外 还可用它们的符号形式给出 如 MOVA 0D0H A 0D0H 机器码为E5D0HMOVA PSW A PSW 机器码为E5D0H 它们的形式虽然不同 但汇编后的机器码是完全一样的 均为E5D0H 为增强所编程序的可读性 一般提倡尽量采用后者方式 2 寄存器寻址 指令中以通用寄存器的形式表示操作数的寻址方式称为寄存器寻址 这里的通用寄存器特指 A B DPTR R0 R7和CY MOVA R1 A R1MULAB BA A B 乘积高位存B 低位存AINCDPTR DPTR DPTR 1 第3章单片机的汇编语言与程序设计 注意 B寄存器仅在乘法和除法指令中属于寄存器寻址 在其它指令中则属于直接寻址 此外 除上面所指出的几个寄存器外 其它特殊功能寄存器也一律为直接寻址 寄存器间接寻址是二次寻找操作数地址的寻址方式 3 寄存器间接寻址 由指令指出某一个寄存器的内容作为操作数地址的寻址方式 称为寄存器间接寻址方式 计算机执行这类指令时 它首先根据指令中的寄存器名称找到所需要的操作数地址 再由操作数地址找到操作数 并完成相应操作 第3章单片机的汇编语言与程序设计 寄存器间接寻址使用的寄存器叫做间址寄存器 用 R0 R1和 DPTR表示 MOVA R0 寻址范围为256B MOVXA DPTR 寻址范围为64KB 第3章单片机的汇编语言与程序设计 MOVA 0E2H A 0E2HMOVDPTR 2000H DPTR 2000H 4 立即寻址 如果操作数在指令中直接给出 并与操作码的机器码一起存放在程序存储器内 则程序执行时便可立即得到 而不需要另外寻找 故称为立即寻址 该操作数称为立即数 并在其前冠以 号 以表示非地址 立即数可以是8位或16位二进制数 一般用十六进制数表示 汇编语言规定 凡以字母开始的十六进制数 立即数或地址 在最高位前要加0以便与变量名区分 因而上述数据E2H要写为0E2H 第3章单片机的汇编语言与程序设计 MOVCA A DPTR A A DPTR MOVCA A PC A A PC JMP A DPTR PC A DPTR 5 变址寻址 变址寻址是以DPTR或PC作为基址寄存器 以累加器A作为变址寄存器 将基址寄存器与变址寄存器的内容相加形成操作数的实际地址 51指令集中采用变址寻址的指令共有三条 A为偏移量寄存器 DPTR或PC为变址寄存器 程序执行时 A中的无符号数先与DPTR或PC中的内容相加 形成访问地址 再通过寄存器间接寻址方式取得实际操作数 其中前两条是程序存储器读指令 后一条是无条件转移指令 第3章单片机的汇编语言与程序设计 MOVC 7FH Cy 7FH 其中 7FH是位地址MOVC 2FH 7 Cy 7FH 其中 2FH 7是位地址MOVC ACC 7 Cy ACC 7 其中 ACC 7是位地址 6 位寻址 51单片机片内RAM里的部分存储单元和某些特殊功能寄存器除了具有字节地址外 还具有位地址 这些单元既可以采用字节方式访问 也可采用位地址方式访问 指令中直接给出操作数所在单元位地址的寻址方式称为位寻址 例如 第3章单片机的汇编语言与程序设计 SJMPSTART PC PC 2 rel 7 相对寻址 相对寻址方式是为了程序的相对转移而设计的 它以PC的内容为基址 与指令中给出的偏移量rel进行合成 得到转移目的地址 进而改变PC值实现程序的跳转功能 该指令的功能是将PC值修改为START语句行所在的首地址 从而使程序从START语句继续执行 该指令的的原形是SJMPrel 注意 由于rel只能形成 128 127字节的跳转 故编程时必须考虑当前行与被跳转行之间的地址范围不能超限 第3章单片机的汇编语言与程序设计 3 1汇编语言概述1 汇编语言指令格式2 描述操作数的简记符号3 寻址方式3 2指令系统简介3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 汇编语言是用助记符形式表示指令的一种计算机语言 其中助记符由约定的英文字母组成 而指令则是完成特定动作所需的指示和命令 汇编语言程序需要经过编译程序翻译成机器码 让计算机执行 汇编语言编程的优点是代码精炼 执行速度快 但不便于编写较复杂的程序 本章学习目的是了解汇编语言的规则 要求借助指令手册能读懂一般汇编程序 一条汇编语言指令中最多包含四个区段 其一般格式为 标号 操作码 操作数 注释 汇编语言指令格式 第3章单片机的汇编语言与程序设计 标号区段由用户定义的1 6个字符组成 以英文字母开始 不区分大小写 冒号结尾 标号代表当前指令的首字节在存储器单元中的存放地址 可以省略 标号 操作码 操作数 注释 第3章单片机的汇编语言与程序设计 操作数区段是指令要操作的对象 根据指令的不同功能 操作数可以是3个 2个 1个或没有操作数 操作数大于1时 操作数之间用英文逗号隔开 不区分大小写 START MOVA 12H 立即数12H ASETBP1 0 P1 0 1CJNEA R0 START 若A R0 转START 举例 第3章单片机的汇编语言与程序设计 3 1汇编语言概述1 汇编语言指令格式2 描述操作数的简记符号3 寻址方式3 2指令系统简介3 3汇编语言的编程方法 单片机指令手册中 每条指令的操作数都以简记符号表示 第3章单片机的汇编语言与程序设计 操作数的简记符号 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介1 数据传送与交换类指令2 算术运算类指令3 逻辑运算及移位类指令4 控制转移类指令5 伪指令3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介1 数据传送与交换类指令2 算术运算类指令3 逻辑运算及移位类指令4 控制转移类指令5 伪指令3 3汇编语言的编程方法 数据传送与交换类指令可实现RAM SFR和ROM之间的数据互传或交换 共31条 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 数据传送类指令的基本通式为 它表示将源单元 src 的内容传送给目的单元 dest 传送后源单元中内容不变 transfer是传送指令的操作码 MOV 在片内RAM范围内传送MOVX 在片外RAM范围内传送MOVC 在全部ROM范围内传送 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 举例 将立即数A6H送入累加器A 第3章单片机的汇编语言与程序设计 举例 将立即数A6H送入累加器AMOVA 0A6H 第3章单片机的汇编语言与程序设计 举例 将立即数68H送入片内20H 第3章单片机的汇编语言与程序设计 举例 将立即数68H送入片内20HMOV20H 68H 用指令实现下述功能 1 内部RAM30H单元内容送R0 2 将立即数10H送入内部RAM30H单元 第3章单片机的汇编语言与程序设计 举例1 分析如下程序段并指出运行后20H和21H单元的结果MOVR0 20HMOV R0 38HMOV21H 48H 结果 20H 38H 21H 48H 将data送入Ri的内容所指向的单元中 寄存器间接寻址 R0 20H MOV R0 38H等价于MOV20H 38H 第3章单片机的汇编语言与程序设计 举例2 已知片内RAM38H单元中的数为12H 试分析如下程序段并指出其功能 注意 片内RAM38H单元中数不能直接传送到外部RAM的1818H单元 必须经过累加器A的转传 MOVR0 38HMOVDPTR 1818HMOVA R0MOVX DPTR A Rn data DPTR data16 A Ri DPTR A R0 38HDPTR 1818HA 38H 12H 1818H 12H 例 设内部RAM 30H 40H 40H 10H 10H 00H 端口 P1 CAH 分析下面程序执行后各单元及存储器 P2口的内容 MOVR0 30H MOVA R0 MOVR1 A MOVB R1 MOV R1 P1 MOVP2 P1 MOV10H 20H 结果 R0 30H R0 A 40H B 10H 40H P1 P2 CAH 10H 20H 第3章单片机的汇编语言与程序设计 举例3 试分析如下程序段并指出其功能 MOVDPTR 120HMOVA 5MOV30H A DPTR data16 A data 30H A DPTR 120H A 5 30H A 第3章单片机的汇编语言与程序设计 传送类指令中的两类特殊指令交换类 使操作数的内容互换 XCH XCHD SWAP 堆栈类 使操作数的内容进出堆栈 PUSH POP 0 3 4 若 R0 30H 30H 4AH A 28H 1XCHA R0 2XCHDA R0 3SWAPA A 82H 堆栈操作类指令 PUSHdirect SP SP 1 SP direct PUSH指令把数据压入堆栈 首先 SP 1 SP 指向栈顶上的一个空单元 然后把直接寻址单元的内容压入所指单元 POPdirect direct SP SP SP 1 POP指令把堆栈顶的数据弹出到直接寻址指定的单元中 恢复片内RAM128 或SFR的内容 首先 SP direct 然后把 SP 1 SP 形成新的栈顶指针 1MOVR0 30H2MOV30H 10H3MOVA R0MOVR1 A4MOVDPTR 3000HMOVXA DPTRMOV30H A 已知内部RAM中 30H 40H 40H 50H 50H 5AH 5AH 60H ROM中 125AH 88H 试分析下面程序的运行结果 并指出每条指令的源操作数寻址方式 MOVA 50H MOVR0 A MOVP1 0F0H MOV R0 30H MOVDPTR 1200H MOVX DPTR A MOVCA A DPTR MOV40H 50H MOVP2 P1 程序执行后 P2 F0H 40H 5AH A 88H 1200H 5AH 5AH 40H 已知 30H 38H 请分析以下各是什么指令 说明源操作数的寻址方式以及执行结果 MOVA 40H MOVR0 A MOVP1 0F0H MOV R0 30H MOVDPTR 3848H MOV40H 38H MOVR0 30H MOVP0 R0 MOV18H 30H MOVA R0 MOVP2 P1 MOVA 40H 直接寻址 40H AMOVR0 A 寄存器寻址 A R0MOVP1 0F0H 立即数寻址0F0 P1MOV R0 30H 直接寻址 30H R0 MOVDPTR 3848H 立即数寻址3848H DPTRMOV40H 38H 直接寻址 38H 40HMOVR0 30H 直接寻址 30H R0MOVP0 R0 寄存器寻址 R0 P0MOV18H 30H 立即数寻址30H 18HMOVA R0 寄存器间接寻址 R0 AMOVP2 P1 直接寻址 P1 P2 最后结果 R0 38H A 40H P0 38H P1 P2 0F0H DPTR 3848H 18H 30H 30H 38H 38H 40H 40H 40H 48H 38H注意 左边是内容 右边是单元 设 R1 31H 内部RAM31H的内容为68H 32H单元的内容为60H A 10H MOVA R1 MOV R1 32H MOV32H A MOVR1 45H 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介1 数据传送与交换类指令2 算术运算类指令3 逻辑运算及移位类指令4 控制转移类指令5 伪指令3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 算术运算类指令共有24条 包括加 减 乘 除和增减1运算等 第3章单片机的汇编语言与程序设计 执行下面程序 分析PSW有关标志位内容 MOVA 7AH MOVR0 65H ADDA R0 设 R0 7EH 7EH FFH 7FH 40H 执行下列程序 分析结果INC R0 INCR0 INC R0 第3章单片机的汇编语言与程序设计 举例5 试解读如下程序并说明其功能 MOVA 34HADDA 0E7HMOV40H AMOVA 12HADDCA 0FHMOV41H A A 34H A A data 40H A A 12H A A data CY 41H A A 34HA 1BH C 1H 40H 1BHA 12HA 21H 41H 22H 功能 1234H与0FE7H两个16位数相加 结果为221BH 第一步先对低8位相加 结果存入40H单元 第二步再对高8位相加 结果存入41H单元 其中第二步为带进位相加 注意 对于用十六进制数表示的数字或地址 若其最高位是A F 则需在最高位前加零 与 标号 或 标示符 区分 设 R0 7EH 7EH FFH 7FH 38H DPTR 10FEHP 58 INC R0 INCR0 INC R0 INCDPTR INCDPTR INCDPTR 设 A 13H R0 0FFH 00H 34H DPTR 1235H执行以下程序后 结果为多少 INCA INCR0 INC R0 INCDPTR 第3章单片机的汇编语言与程序设计 若CY 1 执行下面程序 说明PSW有关标志位内容 MOVA 85H MOV54H 0AEH SUBBA 54H 第3章单片机的汇编语言与程序设计 举例6 试解读如下程序并说明其功能 CLRCMOVA 34HSUBBA 0E7HMOV40H AMOVA 12HSUBBA 0FHMOV41H A 注意 运算时需要首先清理CY位 第3章单片机的汇编语言与程序设计 举例6 试解读如下程序并说明其功能 CLRCMOVA 34HSUBBA 0E7HMOV40H AMOVA 12HSUBBA 0FHMOV41H A CY位清零 A 34H A A 0E7H CY 40H A A 12H A A 0FH CY 41H A C 0A 34HA 4D C 1 40H 4C A 12H A 03H 41H 03H 注意 运算时需要首先清理CY位 编程 进行两个16位数的减法 6F5DH 13B4H 结果存入内部RAM的30和31H单元 30H存低八位 CLRCMOVA 5DH 被减数的低8位 AMOVR2 B4H 减数低8位 R2SUBBA R2 被减数减去减数 差 AMOV30H A 低8位结果 30HMOVA 6FH 被减数的高8位 AMOVR2 13H 减数高8位 R2SUBBA R2 被减数减去减数 差 AMOV31H A 高8位结果 30H 第3章单片机的汇编语言与程序设计 设 A 00H R3 19H 40H 5FH R0 34H 34H 0FFH 分析 DECA DECR3 DEC40H DEC R0 第3章单片机的汇编语言与程序设计 设 A 00H R3 19H MULAB 第3章单片机的汇编语言与程序设计 举例7 试解读如下程序并说明其功能 MOVA 17HMOVB 68HMULABMOV30H AMOV31H B A 17H B 68H A B BA 30H A 31H B A 17H B 68H B 9 A 58H 30H 58H 31H 09H 第3章单片机的汇编语言与程序设计 设 A 80H B 60H 分析 DIVAB 第3章单片机的汇编语言与程序设计 算术运算指令快捷记忆法 规律 除形成闭环连线的运算外 只有1个操作数 其余运算都要以A为目的操作数 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介1 数据传送与交换类指令2 算术运算类指令3 逻辑运算及移位类指令4 控制转移类指令5 伪指令3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 逻辑运算及移位类指令共有34条 可以实现二进制数的与 或 异或 求反 置1 清零 移位等逻辑操作 第3章单片机的汇编语言与程序设计 第3章单片机的汇编语言与程序设计 已知 A 53H 40H 6AH ANLA 40H 第3章单片机的汇编语言与程序设计 编程1使内部RAM30H单元低四位置1 高四位不变 2使内部RAM30H单元低四位不变 高四位置1 第3章单片机的汇编语言与程序设计 举例9 试解读如下程序并说明其功能 ANLA 0FHANLP1 0F0HORLP1 A 功能 把累加器A中低4位送入P1口低4位 P1口的高4位不变 实现了一次数据组合 A A 0FH P1 P1 F0H P1 P1 A 逻辑或的特性 x 0 x 屏蔽 x 1 1 置位 A 0000 xxxxB P1 XXXX0000B P1 XXXXxxxxB 第3章单片机的汇编语言与程序设计 举例分析 30H 65HMOVA 30H ANLA 00001111B MOV31H A MOVA 30H ANLA 11110000B SWAPA MOV32 A 第3章单片机的汇编语言与程序设计 A 46H R1 53H 53H 75H 64H 72HORLA R1 ORLA 64H ORLA 3AH ORLA R1 ORL64H A ORL64H 96H 第3章单片机的汇编语言与程序设计 编程已知 A 8AH R1 73H试编程将A的高四位与R1低四位合并成一个字节放入R0MOVR0 A MOVA R1 ANLA 0FH ANLR0 0F0H ORLA R0 MOVR0 A 第3章单片机的汇编语言与程序设计 举例9 试解读如下程序并说明其功能 ANLA 0FHANLP1 0F0HORLP1 A 功能 把累加器A中低4位送入P1口低4位 P1口的高4位不变 实现了一次数据组合 A A 0FH P1 P1 F0H P1 P1 A 逻辑或的特性 x 0 x 屏蔽 x 1 1 置位 A 0000 xxxxB P1 XXXX0000B P1 XXXXxxxxB 第3章单片机的汇编语言与程序设计 功能 将A 5与80H位相与的结果 通过P1 4输出 举例11 已知A 5 1 位地址 80H 0 试解读如下程序并说明其功能 MOVC A 5ANLC 80HMOVP1 4 C C A 5 C C 80H P1 4 C C 1 C 1 0 0 P1 4 0 第3章单片机的汇编语言与程序设计 设 A 0ABH R1 0FH 执行下面程序后A中的内容是多少XRLA R1 第3章单片机的汇编语言与程序设计 已知 45H 57H 执行下面程序XRL45 0B4H 第3章单片机的汇编语言与程序设计 已知 A 90H R3 73H执行下面程序XRLA R3 第3章单片机的汇编语言与程序设计 已知 A 96HCPLA 第3章单片机的汇编语言与程序设计 举例10 试解读如下程序并说明其功能 MOVA 40HCPLAINCAMOV40H A 功能 对40H单元中的数求补 运算后结果仍送回40H单元 A 40H A A A A 1 40H A 第3章单片机的汇编语言与程序设计 举例11 A 38H分析结果1RLA2RLCA3RRA 第3章单片机的汇编语言与程序设计 编程将A的内容乘以10 第3章单片机的汇编语言与程序设计 编程用80C51单片机实现Y 逻辑运算的功能 第3章单片机的汇编语言与程序设计 逻辑运算指令快捷记忆法 规律 除 data与direct外 几乎所有运算都是以A为目的操作数 试编写程序 完成两个16位数的减法 7F4DH 2B4EH 结果存入内部RAM的30H和31H单元 30H单元存差的高8位 31H单元存差的低8位 注意 此题与书上的题要求不一样 书中要求31H单元存差的高8位 30H单元存差的低8位 答 CLRCYMOV30H 7FHMOV31H 4DHMOVR0 31HMOVA R0SUBBA 4EMOV R0 A 保存低字节相减结果DECR0MOVA R0SUBBA 2BHMOV R0 A 保存高字节相减结果 试编写程序 将R1中的低4位数与R2中的高4位数合并成一个8位数 并将其存放在R1中 答 MOVA R2ANLA 0F0HORLR1 A 试编写程序 将内部RAM的20H 21H单元的两个无符号数相乘 结果存放在R2 R3中 R2中存放高8位 R3中存放低8位 答 MOVA 20HMOVB 21HMULABMOVR3 AMOVR2 B 第3章单片机的汇编语言与程序设计 3 1汇编语言概述3 2指令系统简介1 数据传送与交换类指令2 算术运算类指令3 逻辑运算及移位类指令4 控制转移类指令5 伪指令3 3汇编语言的编程方法 第3章单片机的汇编语言与程序设计 控制转移类指令共有22条 主要功能是通过改变程序计数器PC的内容 进而改变程序流向 第3章单片机的汇编语言与程序设计 更正P 51 若CY 0 则 若CY 0 则 分析下面程序的含义DELAY MOVR6 00H LOOP2 MOVR7 00H LOOP1 NOPDJNZR7 LOOP1 DJNZR6 LOOP1 RET 例编程控制累加器A中数从0逐次加1 当A中为100时停止加l 把结果存入片内RAM50H单元中 程序CLRA 清AMOVR0 100 循环常数送R0LP INCA A 1 ADJNZR0 LP R0 1 R0 R0 0转LPMOV50H A R0 0 够100次 A 50H 50H 100 64H 分析下面程序的含义MOVR7 14H MOVR0 30H MOVR1 50H LOOP MOVA R0 MOV R1 A INCR0 INCR7 DJNZR7 LOOP RET 分析下面程序的含义MOVR7 09H MOVR0 31H MOVA R0 LOOP INCR0 ADDA R0 DJNZR7 LOOP MOV30H ARET 二 条件转移类指令 8条 功能 根据条件判断是否转移 条件满足则转移 条件不满足则顺序执行 1 判A转JZrel A 0 PC 2 rel PC A 0顺序执行JNZrel A 0 PC 2 rel PC A 0顺序执行 2 比较指令 功能 源操作数与目的操作数比较 相等顺序执行CJNEA direct rel A direct 转向PC 3 rel PC 且A direct 0 CY A direct l CY A direct PC 3 PC即顺序执行CJNEA data rel A data转向PC 3 rel PC 且A data 0 CY A data 1 CY A data PC 3 PC即顺序执行 CJNERn data rel Rn data转向PC 3 rel PC CJNE Ri data rel Ri data转向PC 3 rel PC 注意 CJNE类指令中借用进位标志位CY作为比较结果的标志位 目的操作数内容小于源操作数内容CY置 1 反之CY清 0 该类指令多用于分支程序 3 减 1 转移指令DJNZRn rel Rn 1 Rn Rn 0 PC 2 rel PC Rn 0 PC 2 PC顺序执行DJNZdirect rel direct 1 direct direct 0转向PC 2 rel PC direct 0 PC 2 PC顺序执行注意 DJNZ指令执行时Rn或direct先减l 然后再判断Rn或direct内是否等于0 不为0则转 为0顺序执行 DJNZ指令在循环程序中 控制循环次数很方便 例编程控制累加器A中数从0逐次加1 当A中为100时停止加l 把结果存入片内RAM50H单元中 程序CLRA 清AMOVR0 100 循环常数送R0LP INCA A 1 ADJNZR0 LP R0 1 R0 R0 0转LPMOV50H A R0 0 够100次 A 50H 50H 100 64H 例1请看如下程序PC 2000HLJMP4000H 4000H PC 4000HMOVA 11H 程序执行完第一条无条件转移指令后 马上跳转到4000H地址 执行该地址程序 例2程序2000H MOVR0 1BH 1BH R02002H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论