片机学习07汇编程序.ppt_第1页
片机学习07汇编程序.ppt_第2页
片机学习07汇编程序.ppt_第3页
片机学习07汇编程序.ppt_第4页
片机学习07汇编程序.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第4章89C51汇编语言程序设计汇编语言是面向机器硬件的语言 要求程序设计者对89C51单片机具有很好的 软 硬结合 的功底 4 1汇编语言程序设计概述4 1 1机器语言 汇编语言和高级语言1 机器语言用二进制 0 1 代码表示的指令 数字 用机器语言编写的程序 机器语言目标程序 不易懂 难记忆 易出错 P 53 2 汇编语言采用英文的指令助记符表示指令称为符号语言或汇编语言将汇编语言程序转换成为二进制代码表示的机器语言程序的程序称为汇编程序经汇编程序 汇编 得到的机器语言程序称为机器语言目标程序 原来的程序称为汇编语言源程序 汇编语言特点 面向机器的语言 程序设计员须对硬件有相当深入的了解 助记符指令和机器指令一一对应 用汇编语言编写的程序 比高级语言编写的程序 效率高 占存储空间小 运行速度快 能编写出最优化的程序 能直接管理和控制硬件设备 功能部件 它能处理中断 也能直接访问存储器及I O接口电路 汇编语言和机器语言都脱离不开具体机器的硬件 均是面向 机器 的语言 缺乏通用性 P 53 3 高级语言不受具体机器的限制 接近于人的自然语言及学科语言 常用的如BASIC FORTRAN以及C语言等 可视化 面向对象 高级语言优点 通用性强 直观 易懂 易学 可读性好 计算机不能直接识别和执行高级语言 需要将其 翻译 成机器语言才能识别和执行 进行 翻译 的专用程序称为编译程序 可用C语言 C51 来进行AT89C51的应用程序设计 对于程序的空间和时间要求很高的场合 汇编语言仍是必不可缺的 C语言和汇编语言混合编程在很多需要直接控制硬件的场合 则更是非用汇编语言不可使用汇编语言编程 是单片机程序设计的基本功之一 P 53 汇编 汇编语言源程序 机器语言目标程序 汇编程序 汇编软件 人工 人工汇编 机器汇编 编译 解释 高级语言源程序 机器语言目标程序 编译程序 解释程序 软件 编译型 解释型 4 1 2汇编语言语句的种类和格式两种基本类型 指令语句和伪指令语句 1 指令语句 CPU指令 可执行指令 真指令 已在第3章介绍每一条指令语句在汇编时都产生一个指令代码 机器指令代码 2 伪指令语句 命令语句 是为汇编工作服务的 在汇编时除了定义的数据之外没有机器指令代码与之对应 P 54 例4 1 AT89C51的汇编语言的四分段格式如下 标号字段操作码字段操作数字段注释字段START MOVA 00H 0 AMOVR1 10 10 R1MOVR2 00000011B 3 R2LOOP ADDA R2 A R2 ADJNZR1 LOOP R1内容减1不为零 则循环NOPHERE SJMPHERE程序功能 R2内容自加10次 R2 10 A P 54 十进制 二进制 十六进制 P 55 4 1 3伪指令伪指令也称为汇编程序控制命令 是向汇编程序发出的指示信息 告诉它如何完成汇编工作 伪指令没有相应的机器指令代码产生常用的伪指令 1 ORG ORiGin 汇编起始地址命令指定后续程序的起始地址 可多次使用ORG指令 但是 地址必须由小到大排列 地址不能交叉 重叠 ORG2000H20007400START MOVA 00H 2 END ENDofassembly 汇编终止命令汇编语言源程序的结束标志 用于终止源程序的汇编工作 在整个源程序中只能有一条END命令 且位于整个程序的最后 P 55 56 3 DB DefineByte 定义字节命令例 ORG2000H20003040184342DB30H 40H 24 C B DB功能是从当前地址开始定义 存储 若干个单字节数据 十进制数自然转换成16进制数 字母按ASCII码存储 4 DW DefineWord 定义数据字命令定义16位的数据字 例如 ORG2000H20001246007B000ADW1246H 7BH 10DB功能是从当前地址开始定义 存储 若干个双字节数据 高字节在低地址单元5 EQU EQUate 赋值命令用于给标号赋值 赋值以后 其标号值在整个程序有效 例如 TESTEQU2000H表示标号TEST 2000H 在汇编时 凡是遇到标号TEST时 均以2000H来代替 P 56 例4 3 设计一子程序 功能为 根据30H单元中的数x 0 9之间 查平方表 求出x相应的平方y存50H单元 x和y均为单字节数 用DPTR作基址的方法 地址机器码汇编语言源程序ORG0300H0300E530PFSUB MOVA 30H 取自变量x0302900309MOVDPTR 0309H 或MOVDPTR TAB030593MOVCA A DPTR 查表得相应函数值0306F550MOV50H A 存结果y030822RET03090001040910TAB DB00H 01H 04H 09H 10H 平方表014916030E1924314051DB19H 24H 31H 40H 51H 2536496481 x 0309H 引用前例 4 2汇编语言源程序的汇编汇编语言源程序 翻译 成机器代码 指令代码 的过程称为 汇编 汇编可分为手工汇编和机器汇编两类 4 2 1手工汇编人工查表翻译指令 但遇到的相对转移指令的偏移量的计算 要根据转移的目标地址计算偏移量 不但麻烦 且容易出错 4 2 2机器汇编用编辑软件进行源程序的编辑 编辑完成后 生成一个ASCII码文件 扩展名为 ASM 然后在微计算机上运行汇编程序 把汇编语言源程序翻译成机器代码 交叉汇编 汇编后的机器代码是在另一台 种 计算机 这里是单片机 上运行 反汇编 分析已有的可执行目标程序 要将二进制的机器代码语言程序反向翻译成汇编语言源程序 以便分析 修改 P 57 4 3AT89C51单片机汇编语言程序设计举例4 3 6分支转移程序设计1 单分支转移结构 仅有两个出口 两者选一 图4 4 图4 5 P 65 属循环结构 3 图4 3 程序段1 条件满足 例B4 1 请编程序使48H 49H单元所存储的二个数中较大者在前 ORG0000HBIG MOVA 48H 取甲CLRC 清CySUBBA 49H 减去乙数JNCLP1 无借位则甲 乙 转LP1MOVA 48H 乙数大 两数交换MOV48 49HMOV49H ALP1 SJMP 自循环 练习 请编程序使48H 49H单元所存储的二个数中较小者送28H单元 请编程序判断若34H 35H单元所存储的二个数相等则置F0位为0 否则置1 CJNEA 49H LPSJMPLP1 相等LP JNCLP1 甲 乙 2 多分支转移结构 程序的判别部分有两个以上的出口 例4 10求符号函数的值 X存放在40H单元 Y存放在41H单元 SIGNFUC MOVA 40HCJNEA 00H NZEARAJMPNEGT 为0则转NZEAR JBAcc 7 POSI 为负则转MOVA 01H 为正 赋 1原码AJMPSAVEPOSI MOVA 81H 赋 1的原码SJMPSAVENEGT MOVA 00H 赋0的原码SAVE MOV41H A 存结果SJMP END 图4 6 P 66 NZEAR NEGT POSI A Y A A A X A S S 若补码 1是FFH 教材题意为用原码表示带符号数X Y SAVE 图4 7 在实际的应用中 经常遇到的图4 7结构形式的分支转移程序的设计 需根据某一单元的内容是0 1 n 来分别转向处理程序0 处理程序1 处理程序n P 65 类似于开关语句 A 1 A n 4 3 7循环程序设计图4 8是计数循环控制结构 图4 9是条件控制结构 图4 8 图4 9 循环计数 P 67 公共 结果处理 循环 循环准备 初始地址指针循环计数初值单元变量初值 为下一次循环做准备 例4 12 改 如果xi均为单字节数 并按i顺序存放在51单片机内部RAM从50H开始的单元中 数据个数n放在R2中 求这批数据的和 双字节 放在R3 R4中 程序如下 求数组和程序 ORG0000HADD1 MOVR2 0AH 加法次数n送R2 n为具体的数据个数 如10MOVR3 0 部分和高字节单元清0MOVR4 0 部分和低字节单元清0MOVR0 50H R0指向第一个数LOOP MOVA R4 取部分和低字节原有的值ADDA R0 加上当前数低字节 本例原始数据只有低字节 MOVR4 A 回存新的部分和低字节结果MOVA R3 取部分和高字节原有的值ADDCA 00H 加上当前数高字节 00H 及低字节的进位MOVR3 A 回存新的部分和高字节结果INCR0 R0指向下一个数DJNZR2 LOOP 未加完 转回继续进行下一个数的累加SJMP END P 68 作业三 P 70 4补充1 请编程序使40H 41H单元所存储的二个数中的大数减去小数 差值存58H单元 即求两数差的绝对值 补充2 有8个双字节

温馨提示

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

评论

0/150

提交评论