




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章内容 Ch4TheProgramDesignofAssemblyLanguage 4 1概述 4 3程序基本结构 4 2伪指令 4 4程序设计举例 本章重点 1 Howmanylanguagedoesthe8031support 2 Howmanykindsofprogrammingformsdoesthe8031have 3 Howtodoa8031assemblyprogramming 4 1 1程序设计概述 设计语言 1 机器语言 二进制 编写程序 2 用助记符形式的汇编语言编写程序 称为低级语言 用汇编系统将其翻译成机器语言 该过程称为汇编 3 用更接近人的语言编写程序 程序设计师们发明了高级语言 如 C51 PLM51用编译系统将其翻译成机器语言 该过程称为编译 4 机器只能识别机器语言 所以必须用编译系统将高级语言编写的源程序编译成机器语言 用汇编系统将用汇编语言编写的源程序汇编成机器语言 5 由低级或高级语言构成的程序称为源程序 由机器语言构成的程序称作目标程序 4 1概述 2 十六进制数 便于读写记忆的二进制数的简写形式 如 5EH 0 9 A F后缀 H h 3 BCD码 用二进制数表达的十进制数 如 47H 0 9表示为 0000 1001B后缀 B b H h 1 二进制数 由0 1组成 逢2进1 的数制 如 01011110B 0 1后缀 B b 4 1 2汇编语言程序设计中的数 4 1概述 1 真 指令 告诉计算机如何操作以及做何种操作 2 伪指令 告诉汇编程序在翻译应用程序时有何具体约定 伪指令不进行具体的操作 那是真指令的事 比如 从何处开始 何处结束 某些编程者自己规定的表述代表什么意思 4 2汇编程序的伪指令 4 2汇编程序的伪指令 常用伪指令 定义字节伪指令DB DefineByte 格式 标号 DB项或项表项或项表指一个字节 或用逗号分开的字符串 或以引号括起来的字符串 一个字符用ASCII码表示 就相当一个字节 该伪指令的功能是把项或项表的数值 字符则用ASCII码 存入从标号开始的连续存储单元中 例如 ORG2000HTAB1 DB30H 8AH 7FH 73DB 5 A BC 2000H 30H 2001H 8AH 2002H 7FH 2003H 49H 十进制数73以十六进制数存放 2004H 35H 数字5的ASCII码 2005H 41H 字母A的ASCII码 2006H 42H 2007H 43H BC 中B C的ASCII码 4 2汇编程序的伪指令 格式 标号 DW项或项表DW伪指令与DB的功能类似 所不同的是DB用于定义一个字节 8位二进制数 而DW则用于定义一个字 即两个字节 16位二进制数 在执行汇编程序时 机器会自动按高8位先存入 低8位后存入的格式排列 这和MCS 51指令中16位数据存放的方式一致 例如 ORG1500HTAB2 DW1234H 80H汇编以后 1500H 12H 1501H 34H 1502H 00H 1503H 80H 4 2汇编程序的伪指令 定义字伪指令DW DefineWord 预留存储空间伪指令DS 格式 标号 DS表达式该伪指令的功能是从标号指定的单元开始 保留若干字节的内存空间以备源程序使用 存储空间内预留的存储单元数由表达式的值决定 例如 ORG1000HDS20HDB30H 8FH汇编后 从1000H开始 预留32 20H 个字节的内存单元 然后从1020H开始 按照下一条DB指令赋值 即 1020H 30H 1021H 8FH 保留的存储空间将由程序的其它部分决定它们的用处 3 1 2汇编程序的伪指令 指令格式 字符名称EQU数字或汇编符号 功能 使指令中的字符名称等价于给定的数字或汇编符号 使用等值指令可给程序的编制 调试 修改带来方便 如果在程序中要多次使用到某一地址 由EQU指令将其赋值给一个字符名称 一旦需要对其进行变动 只要改变EQU命令后面的数字即可 而不需要对程序中涉及到该地址的所有指令逐句进行修改 例 PA8155EQU8001H 即给标号PA8155赋值为8001H 4 2汇编程序的伪指令 等值指令EQU Equate ORG0000HA10EQU10HA20DATA20HMOVR0 A10 10H R0MOVR1 A10 1 11H R1MOVR2 A10 11H R2MOVR3 A20MOVR4 A20 1MOVR5 A20SJMP END 4 2汇编程序的伪指令 等值指令EQU Equate 1 题意分析2 画出流程图3 分配内存及端口4 编制源程序5 仿真 调试程序6 固化程序 4 3 1程序设计概述 基本步骤 4 3程序基本结构 4 3 2程序存储器资源分布 0003 002AH中断入口区 PC 0000 0002H上电起始区 单片机初始化 循环等待区 各功能子程序 中断程序 END ORG0000H 例 有两组BCD码分别存放在23H 22H单元和33H 32H单元 求它们的和并送入43H 42H单元中去 高位在前 低位在后 上机用Keil软件验证 分析 4 3 3简单程序设计 ORG0000HLJMPMAINORG0050HMAIN MOVA 22HADDA 32HDAAMOV42H AMOVA 23HADDCA 33HDAAMOV43H ASJMP END 4 3 3简单程序设计 4 4程序设计举例 4 4 1分支程序设计 4 4 2 散转程序 4 4 3循环程序 4 4 4查表程序 4 4 5子程序设计 分支程序可根据要求无条件或条件地改变程序执行流向 编写分支程序主要在于正确使用转移指令 分支程序有 单分支结构 双分支结构 多分支结构 散转 4 4 1分支程序设计 4 4 1分支程序设计 4 4 1 单分支程序单分支结构程序使用转移指令实现 即根据条件对程序的执行进行判断 满足条件是转移执行 否则顺序执行 在MCS 51指令系统中条件转移指令有 1 判A转移指令JZ JNZ 2 判位转移指令JB JNB JBC JC JNC 3 比较转移指令CJNE 4 减1不为0转移指令DJNZ 例 假定在外部RAM中有ST1 ST2和ST3共3个连续单元 其中ST1 ST2单元中分别存放着两个8位无符号数 要求找出其中的大数并存入ST3单元 分析 两个无符号数的大小比较可利用两数相减是否有借位来判断 流程图和程序如下所示 ST1EQU2000H ST1附地址ORG0000H 上电入口地址LJMPMAIN 跳过中断向量区ORG0050H 主程序的起始地址START CLRC 清进位标志MOVDPTR ST1 给DPTR附值MOVXA DPTR 从外RAM读值MOVR7 A 暂存在R7中INCDPTR 指向ST2单元MOVXA DPTR 读ST2单元内容SUBBA R7 ST2 ST1 JCBIG1 CY 1跳MOVXA DPTR ST2 大SJMPBIG2 存大数BIG1 XCHA R7 ST1 大BIG2 INCDPTR 指向 ST3 MOVX DPTR A 大数存入 ST3 单元中SJMP 循环等待END 编译到此结束 4 4 1 2 多分支程序 例 已知30H单元中有一变量X 要求编写一程序按下述要求给Y赋值 结果存入31H单元 X 2 X 0Y 0 X 0 1 X 0 开始 X A A 1 A A 2 存结果 结束 Y Y N N A 0 A 0 源程序如下 ORG0000HLJMPMAINORG0050HMAIN MOVA 30HJZLP1 X 0 转LP1处理JNBACC 7 LP2 X 0 转LP2处理MOVA 0FFH X 0 则Y 1SJMPLP1LP2 ADDA 01 X 0 Y X 1LP1 MOV31H A 存结果SJMP 循环等待 表示转至END 散转程序是指通过修改某个参数后 程序可以有三个以上的流向 多用于键盘程序 常用的指令是JMP A DPTR 该指令是把16位数据指针DPTR的内容与累加器A中的8位无符号数相加 形成地址 装入程序计数器PC 形成散转的目的地址 DPTR A PC 16位地址数 4 4 2 散转程序 程序清单如下 JUMP1 MOVDPTR JPTAB1 跳转表首送数据指针MOVA R7ADDA R7 R7 2 A 修正变址值 JNCNOAD 判有否进位INCDPH 有进位则加到高字节地址NOAD JMP A DPTR 转向形成的散转地址人口JPTAB1 AJMPOPR0 直接转移地址表AJMPOPR1 AJMPOPRn 例 根据R7的内容 转向各自对应的操作程序 R7 0 转入OPR0 R7 1 转入OPR1 R7 n 转入OPRn 程序清单如下 JUMP1 MOVDPTR JPTAB1 跳转表首送数据指针MOVA R7ADDA R7 R7 2 A 修正变址值 JNCNOAD 判有否进位INCDPH 有进位则加到高字节地址NOAD ADDA R7 R7 3 A 修正变址值 JNCNOAD1 判有否进位INCDPH 有进位则加到高字节地址NOAD1 JMP A DPTR 转向形成的散转地址人口JPTAB1 LJMPOPR0 直接转移地址表LJMPOPR1 LJMPOPRn 4 4 3循环程序 循环程序一般由 初始化部分循环体部分 处理部分 修改部分 控制部分结束部分其结构一般有两种 先进入处理部分 再控制循环至少执行一次循环体先控制循环 再进入处理部分循环体是否执行 取决于判断结果 开始 设置循环初值 循环处理 循环修改 结束处理 结束 循环结束 N Y Y N ORG0000HLJMPMAINORG0200HMAIN MOVSP 60HLCALLDELAY 2SJMP 延时子程序DELAY MOVR7 50 1DELAY0 MOVR6 10 1DELAY1 DJNZR6 DELAY1 2DJNZR7 DELAY0 2RET 2END 4 4 3循环程序 2 10 20 2 1 50 1150 1 2 上机用Keil软件验证 不同存储区域之间的数据传输 编写并调试一个数据传送程序 将内部RAM40 4FH的16个数据送到外部RAM2000H 200FH 再将外部RAM2000H 200FH数据送到MCS 51单片机内部RAM50H 5FH 4 4 3循环程序 ORG0000HLJMPMAINORG0050HMAIN MOVR0 40HMOVR2 10HMOVDPTR 2000HLOOP MOVA R0MOVX DPTR AINCR0INCDPTRDJNZR2 LOOPMOVR0 50HMOVR2 10HMOVDPTR 2000HLOOP1 MOVXA DPTRMOV R0 AINCR0INCDPTRDJNZR2 LOOP1SJMP END 4 4 4查表程序 表格是事先存放在ROM中的 一般为一串有序的常数 例如平方表 字型码表等 表格可通过伪指令DB来确定 通过查表指令MOVCA A DPTRMOVCA A PC来实现 在LED显示和键盘处理程序中将会用到 查LED段码实验 4 4 4查表程序 ORG0000HLJMPMAINORG0050HMAIN MOVSP 60HMOVA 07HLCALLTABSJMP TAB INCA 基地址加一MOVCA A PC 查段码表 取其相应的段码RETDB0C0H 0F9H 0A4H 0B0H 099H 092H 082HDB0F8H 80H 090H 088H 083H 0c6H 0a1H 86HDB8eH 0bfH 89H 8cH 0 9A F 共阳段码END 查LED段码实验 4 4 4查表程序 ORG0000HLJMPMAINORG0050HMAIN MOVSP 60HMOVA 07HLCALLTABSJMP TAB MOVDPTR LEDTAB MOVCA A DPTR 查段码表 取其相应的段码RETLEDTAB DB0C0H 0F9H 0A4H 0B0H 099H 092H 082HDB0F8H 80H 090H 088H 083H 0c6H 0a1H 86HDB8eH 0bfH 89H 8cH 0 9A F 共阳段码END 4 4 5子程序设计 在实际问题中 常常会遇到在一个程序中多次用到相同的运算或操作 若每遇到这些运算或操作 都从头编起 将使程序繁琐 浪费内存 因此在实际中 经常把这种多次使用的程序段 按一定结构编好 存放在存储器中 当需要时 可以调用这些独立的程序段 通常将这种可以被调用的程序段称为子程序 主程序MAIN LCALLSUB 调用子程序 子程序入口地址 RET 注意事项 1 要给每个子程序起一个名字 也就是入口地址的代号 2 要能正确地传递参数 即首先要有入口条件 说明进入子程序时 它所要处理的数据放在何处 如 是放在A中还是放在某个工作寄存器中等 另外 要有出口条件 即处理的结果存放在何处 3 注意保护现场和恢复现场 在子程序使用累加器 工作寄存器等资源时 要先将其原来的内容保存起来 即保护现场 当子程序执行完毕 在返回主程序之前 要将这些内容再取出 送还到累加器 工作寄存器等原单元中 这一过程称为恢复现场 4 4 5子程序设计 子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《幼儿教师招聘》预测试题及参考答案详解【达标题】
- 教师招聘之《小学教师招聘》考前冲刺练习试题及参考答案详解(巩固)
- 2025年教师资格综合素质试卷及答案
- 押题宝典演出经纪人之《演出经纪实务》通关考试题库及参考答案详解(培优)
- 教师招聘之《幼儿教师招聘》强化训练模考卷及答案详解(易错题)
- 教师招聘之《小学教师招聘》自我提分评估附答案详解(满分必刷)
- 教师招聘之《小学教师招聘》考前自测高频考点模拟试题附答案详解【夺分金卷】
- 演出经纪人之《演出经纪实务》考试历年机考真题集附答案详解(培优b卷)
- 2025山西焦煤集团所属煤炭子公司井下操作技能人员招聘模拟试卷及答案
- 安全知识系列培训课程课件
- 水产养殖项目可行性研究报告水产养殖立项报告
- 电信局实习协议书
- 新人教版四年级数学上册第九单元《总复习》核心素养教案
- TSG 07-2019 特种设备生产和充装单位 许可规则
- 电梯维保服务评价与改进措施
- 施工质量标准化手册之桥涵工程
- 医院培训课件:《环境卫生学监测的方法》
- 中队辅导员培训材料
- 2025年巷道掘砌工(技师)职业技能鉴定理论考试题库(含答案)
- 小学五爱教育
- 开学第一课消防安全知识课件
评论
0/150
提交评论