MCS-51单片机汇编语言程序设计

上传人:我*** 文档编号:134427989 上传时间:2020-06-05 格式:PPT 页数:111 大小:1.63MB
返回 下载 相关 举报
MCS-51单片机汇编语言程序设计_第1页
第1页 / 共111页
MCS-51单片机汇编语言程序设计_第2页
第2页 / 共111页
MCS-51单片机汇编语言程序设计_第3页
第3页 / 共111页
MCS-51单片机汇编语言程序设计_第4页
第4页 / 共111页
MCS-51单片机汇编语言程序设计_第5页
第5页 / 共111页
点击查看更多>>
资源描述

《MCS-51单片机汇编语言程序设计》由会员分享,可在线阅读,更多相关《MCS-51单片机汇编语言程序设计(111页珍藏版)》请在金锄头文库上搜索。

1、第4章汇编语言程序设计 教学目标4 1单片机汇编语言与指令格式4 2源程序的设计步骤和汇编4 3汇编语言程序设计本章小结思考题与习题 教学目标 通过本章教学 要求达到以下目标 1 熟悉汇编语言的语句结构 2 了解手工汇编 计算偏移量及转移地址的方法 3 了解程序设计的步骤 会画程序流程图 4 掌握顺序程序 分支程序 循环程序 子程序等基本程序的编制方法 4 1MCS51单片机汇编语言与指令格式 4 1 1程序设计语言 程序设计语言 机器语言汇编语言高级语言 机器语言 由于构成计算机的电子器件特性所决定 计算机只能识别二进制代码 这种以二进制代码来描述指令功能的语言 称之为机器语言 用机器语言组

2、成的程序 称为目标程序 计算机就是按照机器语言的指令来完成各种功能操作的 它具有程序简捷 占用存储空间小 执行速度快 控制功能强等特点 汇编语言 用来替代机器语言的进行程序设计的一种语言 由助记符 保留字和伪指令等组成 很容易让人们所识别 记忆和读写 汇编语言编写出的程序是汇编语言源程序 可由 汇编程序 翻译成机器语言程序 即目标代码 汇编程序 容易让人们所识别 记忆和读写 但不能为机器直接识别执行 001010010101010101010101机器语言程序 即目标代码 机器可以识别执行010101010101 010101010101 高级语言 是面向过程和问题并能独立于机器的通用程序设计

3、语言 是一种接近人们自然语言和常用数学表达式的计算机语言 高级语言编写的程序是不能被机器直接执行的 但可以被常驻在内存或磁盘上的解释程序或编译程序等编译成目标代码后才能被机器所执行 独立于机器 可移植性强结构化设计 程序清晰 但是占用存储空间大 编译程序 001010010101010101010101机器语言程序 即目标代码 机器可以识别执行010101010101 010101010101 4 1 2格汇编语言格式 MCS 51单片机汇编语言指令的标准格式如下 标号 操作码 目的操作数 源操作数 注释 例如 LOOP ADDA 10H A A 10H 1 方括号 表示该项是可选项 可有可无

4、 2 标号是用户设定的符号 它实际代表该指令所在的地址 标号必须以字母开头 其后跟1 8个字母或数字 并以 结尾 3 操作码是用英文缩写的指令功能助记符 它确定了本条指令完成什么样的操作功能 如 ADD表示加法操作 任何一条指令都必须有该助记符项 不得省略 4 目的操作数提供操作的对象 并表示操作结果存放单元的地址 它与操作码之间必须以一个或几个空格分隔 如上例中A表示操作对象是累加器A的内容 并指出操作结果又回送A存放 标号 操作码 目的操作数 源操作数 注释 例如 LOOP ADDA 10H A A 10H 5 源操作数指出的是一个源地址 或立即数 表示操作的对象或操作数来自何处 它与目的

5、操作数之间要用 号隔开 6 注释部分是在编写程序时 为了增加程序的可读性 由用户拟写对该条指令或该段程序功能的说明 它以分号 开头 可以用中文 英文或某些符号来表示 显然它不存入计算机 只出现在源程序中 标号 操作码 目的操作数 源操作数 注释 例如 LOOP ADDA 10H A A 10H 操作数的5种合法形式 1 数字形式 二进制 十进制 十六进制 01001100B 20D 0A0H2 工作寄存器和特殊功能寄存器R0 R7 ACC SFR3 标号地址MOVA M 设M已定义过4 带加减算符的表达式MOVA M 15 采用 符JNBTF0 标号 操作码 目的操作数 源操作数 注释 例如

6、LOOP ADDA 10H A A 10H 指令性语句使CPU执行一个具体的操作 伪指令不要求计算机做任何操作 也没有对应的机器码 不产生目标程序 不影响程序的执行 仅仅是能够帮助进行汇编的一些指令 4 1 3汇编语言构成 指令性语句 111条指令的助记符语句 指示性语句 伪指令语句 15 常用伪指令单片机汇编语言程序设计中 除了使用指令系统规定的指令外 还要用到一些伪指令 伪指令又称指示性指令 具有和指令类似的形式 但汇编时伪指令并不产生可执行的目标代码 只是对汇编过程进行某种控制或提供某些汇编信息 下面对常用的伪指令作一简单介绍 用来指定程序或数据的起始位置 给出一些连续存放数据的地址 为

7、中间运算结果保留一部分存储空间 为源程序中的符号和标号赋值 表示源程序结束等等 不同版本的汇编语言 伪指令的符号和含义可能有所不同 但基本用法是相似的 伪指令可以 伪指令列表 1 ORG 设置目标程序起始地址伪指令2 END 结束汇编伪指令3 DB 定义字节伪指令4 DW 定义字伪指令5 DS 预留存储空间伪指令6 EQU 等值伪指令7 DATA 数据地址赋值8 BIT 位地址定义伪指令 18 一 汇编起始指令ORG指令格式为 ORGnn该伪指令的功能是规定其后面的目标程序或数据块的起始地址 它放在一段源程序 主程序 子程序 或数据块的前面 说明紧跟在其后的程序段或数据块的起始地址就是ORG后

8、面给出的地址 例如 ORG2000HSTART MOVA 7FH 例如 ORG2000HSTART MOVA 7FH 格式 标号 ORG地址 十六进制表示 2000H 1FFFH 2001H 机器码 747FH 20 例 ORG2000HMOVSP 60HMOVR0 2FHMOVR2 0FFHORG伪指令说明其后面程序的目标代码在存储器中存放的起始地址是2000H 即存储器地址程序代码2000H7581602003H782F2005H7AFF 21 二 汇编结束指令END指令格式 标号 END地址或标号格式中标号以及END后面的地址或标号可有可无 功能 提供汇编结束标志 汇编程序遇到END后就

9、停止汇编 对END以后的语句不予处理 故END应放在程序的结束处 22 三 等值指令EQU Equal 指令格式 字符名称EQU数字或汇编符号功能 使指令中的字符名称等价于给定的数字或汇编符号 特别注意 必须先赋值后使用 同一个标号只能赋值一次 例 PAEQU8001H即给字符PA赋值为8001H 书 131页 编程好习惯之一 上下对齐 ORG0500HAAEQUR1BBEQU10HDELAYEQU07E6HMOVR0 BB R0 10H MOVA AA A R1 LCALLDELAY 调07E6H子程序 该伪指令的功能与EQU类似 可以将DATA右边表达式的值赋给左边的字符名称 表达式可以是

10、常数 地址标号或表达式 但不可以是一个汇编符号 如R1等 DATA和EQU的主要区别是 EQU中的字符名称是先定义后使用 而DATA中的字符名称没有这种限制 定义8位数据用DATA 定义16位数据用XDATA 格式 字符名称DATA表达式 格式 字符名称EQU数字或汇编符号 四 数据赋值指令DATA 25 五 定义字节指令DB指令格式 标号 DB8位二进制数表功能 把8位二进制数表依次存入从标号开始的连续的存储单元中 标号区段可有可无 DB指令之后的8位二进制数表是一个字节常数或用逗号隔开的字节串 也可以是用引号括起来的ASCII码字符串 一个ASCII字符相当于一个字节 ORG2000HTA

11、B1 DB30H 8AH 73DB01011010B 5 A 2000H 2001H 2002H 2003H 2004H 2005H 由于ORG2000H 所以TAB1的地址为2000H 因此 以上伪指令经汇编后 将对2000H开始的连续存储单元赋值 十进制数73以十六进制数存放 01011010B 5AH 35H是数字5的ASCII码 41H是字母A的ASCII码 27 六 定义字指令DW指令格式 标号 DW16位数据表功能 与DB相似 区别仅在于从指定地址开始存放的是指令中的16位数据 每个16位数据要占两个存储单元 高8位先存 低8位后存 这和MCS 51指令中的16位数据存放顺序是一致

12、的 ORG1500HTAB2 DW1234H 80H 10 1500H 汇编以后 1501H 1502H 1503H 1504H 1505H 29 七 定义空间伪指令DS格式 标号 DS表达式功能 从指定的地址开始 保留若干个存储单元作为备用的空间 ORG1000HSPC DS20HDB30H 8FH 汇编后从1000H开始 预留32 20H 个字节的内存单元 然后从1020H开始 按照下一条DB指令赋值 即 1020H 30H 1021H 8FH 1000H 1020H 0FFFH 1021H 101FH 31 八 BIT位地址赋值伪指令格式 字符名称BIT位地址功能 把右边的位地址赋给左边

13、的 字符名 例如 ORG0300HA1BIT00HA2BITP1 0MOVC A1MOVA2 C 4 2源程序的设计步骤和汇编 设计步骤1 拟定设计任务书2 建立数学模型3 确立算法4 绘制程序流程图5 编制汇编语言源程序6 上机调试 33 单片机汇编语言程序设计的基本步骤如下 1 题意分析 2 画出程序流程图 熟悉并了解汇编语言指令的基本格式和主要特点 明确被控对象对软件的要求 设计出算法 程序流程图也称为程序框图 是根据控制流程设计的 它可以使程序清晰 结构合理 便于调试 34 3 分配内存工作区及有关端口地址 4 编制汇编源程序 5 编译 仿真 调试程序 6 固化程序 分配内存工作区 要

14、根据程序区 数据区 暂存区 堆栈区等预计所占空间大小 对片内外存储区进行合理分配并确定每个区域的首地址 便于编程使用 4 2源程序的设计步骤和汇编 汇编 汇编程序 源程序目标码 汇编语言 机器语言 反汇编 汇编程序 汇编和反汇编示意图 4 2源程序的设计步骤和汇编 汇编1 人工汇编2 机器汇编 P136表4 2P137表4 3 第一次汇编 翻译机器码第二次汇编 计算偏移量 人工汇编 P136例4 1 ORG0100HSUMDATA1FHBLOCKDATA20HSTART MOVR0 BLOCKMOVA R0CJNEA 00H LOOPHERE SJMP LOOP CLRANEXT INCR0A

15、DDA R0DJNZBLOCK NEXTMOVSUM ASJMPHEREEND RAM 20H 1FH SUM BLOCK LEN个单元内容求和 编程好习惯之一 上下对齐 清晰易读 第一次汇编 翻译机器码 SUMDATA1FHBLOCKDATA20H 第二次汇编 计算偏移量 地址偏移量 目标地址 转移指令起始地址 转移指令字节数 LOOP 1008 1003 03 02H 1006 1006 2 02H 补码为FEH NEXT 1009 100B 03 05H 补码为FBH 4 2源程序的设计步骤和汇编 汇编1 人工汇编2 机器汇编 第一次汇编 翻译机器码第二次汇编 计算偏移量 机器汇编 汇编

16、软件 汇编源程序 目标代码 机器语言 4 3 1简单程序设计4 3 2分支程序设计4 3 3散转程序设计4 3 4循环程序设计4 3 5查表程序设计4 3 6子程序设计和参数传递 4 3汇编语言程序设计 例1两个无符号双字节数相加 设被加数存放于内部RAM的40H 高位字节 41H 低位字节 加数存放于50H 高位字节 51H 低位字节 和数存入40H和41H单元中 4 3 1简单程序设计 没有分支 顺序执行的程序 CY ORG0000HLJMPMAINORG0100HMAIN CLRC 将Cy清零MOVR0 41H 将被加数地址送数据指针R0MOVR1 51H 将加数地址送数据指针R1AD1 MOVA R0 被加数低字节的内容送入AADDA R1 两个低字节相加MOV R0 A 低字节的和存入被加数低字节中DECR0 指向被加数高位字节DECR1 指向加数高位字节MOVA R0 被加数高位字节送入AADDCA R1 两个高位字节带Cy相加MOV R0 A 高位字节的和送被加数高位字节SJMP END R0 R1 例2将两个半字节数合并成一个一字节数 设内部RAM40H 41H单元中分

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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