已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章MCS 51汇编语言程序设计 本讲重点 汇编语言程序设计格式与结构 4 1汇编语言概述 4 1 1程序设计语言 机器语言 用二进制表示的指令 汇编语言 用助记符表示的指令 高级语言 面向过程和问题并能独立于机器的通用程序设计语言 C语言 BASIC PL M等 汇编可分成两种 人工汇编机器汇编机器汇编是用机器自动把汇编语言源程序翻译成可以运行的目标代码程序 即二进制程序的过程 它是一种用机器来代替人脑的汇编 完成这一汇编过程的软件称为 汇编程序 4 1 2汇编语言程序的开发过程 汇编 机器语言目标程序 汇编语言源程序 汇编程序 汇编 机器语言目标程序 汇编语言源程序 人工查指令机器码表 4 2 2汇编语言的语句格式 标号由1 8个ASCII码组成 但第一个字符必须是字母 同一标号 在同一段程序中只允许定义一次 标号 操作码 目的操作数 源操作数 注释 标号后边必须跟冒号 4 2汇编语言格式 CJNEA 55H LOOP1 Ta T55则转向LOOP1AJMPFH Ta T55则返回主程序LOOP1 JNCJW 若 CY 0则表明Ta 55转降温处理程序CJNEA 54H LOOP2 Ta T54则转向LOOP2AJMPFH Ta T54则返回主程序LOOP2 JCSW 若 CY 1则表明Ta T54 转升温处理程序 FH RET 例如 4 2 3表达式 位于操作数字段的数据有三种表示方法 显式记法 如0FFH 使用预定义的符号 如ACC 也可使用表达式 如 2 3 汇编器在汇编时求值表达式并存入合适位置 所有表达式求值都按16位运算进行 数制字符和字符串以一个或两个用单引号引起来的字符构成汇编器将其ASCII码转换为等价的二进制形式 算术运算包括加 减 乘 除 求模 分别用符号 MOD表示 逻辑运算包括逻辑或 与 异或和非 分别用符号OR AND XOR和NOT表示 实现的是按位运算 特殊运算包括SHR SHL HIGH LOW 分别表示右移 左移 取高字节 取低字节和优先求值 关系运算关系运算符有EQ NE LT LE GT和GE 也可以写作 分别表示相等 不等 小于 小于或等于 大于 大于或等于 运算符的优先级 4 2 4汇编语言伪指令 汇编程序 软件 工具 工具软件 将程序员用汇编语言编写的程序翻译成机器码 真 指令 告诉计算机如何操作以及做何种操作 用汇编语言编写的程序在此被称为应用程序 伪指令 告诉汇编程序在翻译应用程序时有何具体约定 伪指令不进行具体的操作 那是真指令的事 比如 从何处开始 何处结束 某些编程者自己规定的表述代表什么意思 ORGaddr16 ASM51程序中一定要写 规定编译后的机器代码存放的起始位置 END ASM51程序中一定要写 表示翻译到此结束 其后的任何内容不予理睬 当前PC值 也叫位置计数器代表正在执行的指令所在位置 重点 汇编起始伪指令 格式 ORG功能 指定汇编源程序编译成机器语言程序的起始地址例如 ORG0000HLJMP0100HORG0100HStart MOVA 5AHSJMP END 程序中可以有多条ORG语句 但定义的起始地址既不要交叉 也不要重叠 必须从小地址向大地址分配程序所占空间 汇编结束伪指令 格式 END 起始地址 功能 停止汇编仍用上例 ORG0000HLJMP0100HORG0100HStart MOVA 5AhSJMP END 符号名称EQU表达式将表达式的值赋予符号名称 程序中凡出现该符号名称就等同于该表达式 SET可以重新定义 EQU则不可 P 108 例4 3 INI SPEQU5FHCREQU0DH 回车符MSG DB Howareyou CRMSG LENEQU MSG SET可以重新定义 EQU则不可 重点 使用不同的存储器 将使程序执行效率不同 在编写C51程序时 最好指定变量的存储类型 这样将有利于提高程序执行效率 51系列中data idata xdata pdata的区别 data 固定指前面00 7FH的128个RAM 可以用acc直接读写 速度最快 生成的代码也最小 idata 固定指前面00 0FFH的256个RAM 其中前128和data的128完全相同 只是因为访问的方式不同 idata是用类似C语言中的指针方式访问的 汇编中的语句为 moxACC Rx C语言中 idata做指针式的访问效果很好 xdata 外部扩展RAM 一般指外部0 x0000 0 xffff空间 用DPTR访问 pdata 外部扩展RAM的低256个字节 地址出现在A0 A7的上时读写 用movxACC Rx读写 这个比较特殊 而且C51好象对此有BUG 建议少用 但也有他的优点 具体用法属于中级问题 这里不提 code 的作用是告诉单片机 我定义的数据要放在ROM里面 写入后就不能再更改 其实 程序可以简单的分为code 程序 区和data 数据 区 code区在运行的时候是不可以更改的 data区放全局变量和临时变量 是要不断改变的 cpu从code区读取指令 对data区的数据进行运算处理 因此code区存储在什么介质上并不重要 象以前的计算机程序存储在卡片上 code区也可以放在rom里面 也可以放在ram里面 也可以放在flash里面 但是运行速度要慢很多 主要读flash比读ram要费时间 因此一般的做法是要将程序放到flash里面 然后load到ram里面运行的 DATA区就没有什么选择了 肯定要放在RAM里面 放到rom里面改动不了 定义位伪指令 格式 BIT功能 定义位变量地址UBIT20H 0VBIT20H 1WBIT20H 2XBITP1 0YBITP2 4ZBITP3 2QBITTCON 2 讨论P 108 例4 5 先自己预习一下 F OKEQU00H 不确定F BUSYEQU01H 位地址 即20H 1SETBF OK 可 有问题 SETBF BUSY 可MOVF OK 0 可MOVF BUSY 0 错 P 79 MOVbit C 重点 标号名称DS表达式以字节为单位为标号名称保留空间 保留空间的大小为 当前PC值 表达式值 P 108 例4 6 XSTARTEQU4000HXLENGTHEQU1000XSEGATXSTARTXBUFFERDSXLENGTH MOVDPTR XBUFFER 标号名称DBIT表达式以位为单位保留存储空间 如P 109 例4 7 P 109 例4 7 BSEGAT00HXLENGTHEQU1000XSEGATXSTARTXBUFFERDSXLENGTH MOVDPTR XBUFFER 定义字节伪指令 格式 DB功能 把项或项表的数值存入从标号开始的连续单元 其中项或项表可以是一个字节 数或以引号括起来的字符串 ORG1000HDat DB11h 1 A BCD END 该指令只能为程序存储器赋初值 不能为其他存储器赋初值 尤其不能为内部数据存储器赋初值 注意 1000H 11H FFH 41H 42H 程序存储器 43H 44H 补码 ASCII码 重点 定义字伪指令 格式 DW功能 把项或项表的数值存入从标号开始的连续单元 其中项或项表是一个字 两字节 ORG1000HDat DW1122h 3344h 1END 1000H 11H 22H 33H 44H 程序存储器 只对程序存储器起作用 FFH FFH 重点 例如 ORG2000HTAB1 DB30H 8AH 7FH 73DB 5 A BCD 由于ORG2000H 所以TAB1的地址为2000H 因此以上伪指令经汇编以后 将对2000H开始的若干内存单元赋值 2000H 30H 2001H 8AH 2002H 7FH 重点 2003H 49H 十进制数73以十六进制数存放 2004H 35H 数字5的ASCII码 2005H 41H 字母A的ASCII码 2006H 42H BCD 中B的ASCII码 2007H 43H BCD 中C的ASCII码 2008H 44H BCD 中D的ASCII码 标识符 模块 调用伪指令 PUBLICsymbol symbol EXTRNseg type symbol symbol 其中段类型为 DATA IDATA XDATA BIT CODE等 该伪指令告诉汇编程序 放在PUBLIC之后的标识符 本模块的定义的 可被其他模块使用 这些标识符可以是变量 标号或者过程名 言外之意 它不仅可以被本模块调用 而且还可被其他模块调用 该伪指令告诉汇编程序 EXTRN后面括号中的标识符由外部程序调用 本程序不调用 绝对地址段选择伪指令 CSEG ATaddress 代码段 ROM DSEG ATaddress 数据段 内部RAM ISEG ATaddress 数据段 间址内部RAM BSEG ATaddress 数据段 位寻址区 XSEG ATaddress 数据段 外部RAM 分别为程序存储器 内部数据存储器 间接寻址的内部数据存储器 位寻址区和外部数据存储器的使用指定绝对地址 4 2 5通用的转移和调用语句 MCS 51汇编器允许程序员使用通用的转移和调用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业影响力专员岗位公关活动效果评估报告
- 2024年日照市莒县招聘城市社区工作者考试真题
- 企业年度总结报告及来年工作计划
- 保洁绿化领班培训课程设计与培训效果评估
- 北碚数学专业求职实战指南各领域实战经验分享
- 自然保护区巡护监测员岗前岗中实操考核试卷含答案
- 住房保障计划及安居工程方案
- AI领域三星求职经验分享
- 人工智能应用场景与落地方案
- IT工程师项目管理方法论
- 2025湖南长沙浏阳市城乡发展集团有限责任公司招聘12人笔试考试备考试题及答案解析
- 外脚手架拆除工程作业方案
- 建设银行招聘面试题及答案
- 2025年酒店应聘笔试题目及答案
- GB/T 14746-2025儿童骑行及活动用品安全儿童自行车
- 2025年护理管理试题及答案
- 2025解读NCCN临床实践指南:腹膜间皮瘤(2026.v1)课件
- 济南医学发展集团有限公司招聘22人考试笔试模拟试题及答案解析
- 脚手架施工监理细则规范
- 2025年小学四年级数学上学期期中测试
- 粉笔线上协议班 合同
评论
0/150
提交评论