第4章80C51单片微机的程序设计.ppt

上传人:京东小超市 文档编号:5935601 上传时间:2020-08-16 格式:PPT 页数:110 大小:1.58MB
返回 下载 相关 举报
第4章80C51单片微机的程序设计.ppt_第1页
第1页 / 共110页
第4章80C51单片微机的程序设计.ppt_第2页
第2页 / 共110页
亲,该文档总共110页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章80C51单片微机的程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章80C51单片微机的程序设计.ppt(110页珍藏版)》请在三一文库上搜索。

1、第四章 80C51单片微机的程序设计 肉 斑 累 佑 剧 星 佃 募 搐 术 糯 垣 冲 润 困 扑 钟 服 融 发 孕 雨 转 虎 终 兼 擅 稳 昔 凄 阿 唇 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 4.1概述 4.1.1汇编语言格式 1.计算机语言机器语言、汇编语言与高级语言 程序:为计算某一算式或完成某一工作的若干指令的有序 集合。计算机的全部工作概括起来,就是执行这一指令序列的 过程。 程序设计:为计算机准备这一指令序列前的过程。 机器语言 机器语言系统:用二进制代码表示的指令系统,简称

2、为机器语言 。 直接用机器语言编写的程序称为手编程序或机器语言程序。 访 沦 蒲 诵 肄 驻 籍 待 霖 则 物 胸 翔 镐 毖 棒 孔 溶 梳 了 异 狱 句 耻 巫 谷 锤 帕 篷 许 稽 铝 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 汇编语言 在机器语言,这些英文字符被称为助记符。用这种助记符 表示指令系统的语言称为汇编语言或符号语言,用汇编语言编写 的程序称为汇编语言程序。特点: 助记符指令与机器指令是-对应的,用汇编语言编写的程序效 率高,占用存储空间小,运行速度快,而且能反映计算机的实际

3、运行情况,所以用汇编语言能编写出最优化的程序。 汇编语言是“面向机器”的语言,编程比使用高级语言困难。 汇编语言能直接访问存储器、输入与输出接口及扩展的各种芯 片(比如A/D、D/A等),也可直接处理中断,汇编语言能直接管理 和控制硬件设备。 诗 社 盼 介 端 苞 震 恭 首 账 回 袭 备 畴 臆 遏 接 脊 擦 郴 固 恨 关 棱 涉 点 雹 拨 叫 碳 涝 友 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 汇编语言通用性差,汇编语言和机器语言一样,都面向一台具体 的机器,不同的单片微机具有不同的指

4、令系统,并且不能通用。 不能直接识别在汇编语言中出现的字母、数字和符号,需要 将其转换成用二进制代码表示的机器语言程序,才能够识别和执行 。通常把这一转换(翻译)工作称为汇编。 人工汇编:由程序员通过查指令表把汇编指令程序转换为机器语言 程序的过程。 由专门的程序来进行汇编,这种程序称为汇编程序。经汇编程序汇 编而得到的机器语言程序,计算机能够识别和执行,这一机机器语 言程序称为目的程序或目标程序,而汇编语言程序称为源程序。这 3者之间的关系如图41所示。 滑 惹 柠 捉 棉 割 棘 铀 雅 冬 盟 揖 霉 照 伸 鱼 歧 粳 筑 愤 皖 改 蟹 痛 裙 立 块 别 航 展 笔 殊 第 4 章

5、 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 高级语言 比如BASIC、FORTRAN、COBOL及PASCAL等,都是 一些参照数学语言而设计的、近似于人们日常用语的语言。通用 性强,易于移植到不同类型的机器中去。计算机也不能直接识别 和执行高级语言,需要将其转换为机器语言才能识别和执行。对 于高级语言,这一转换工作通常称为编译或者解释。进行编译或 者解释的专用程序称为编译程序或者解释程序。 由于高级语言不受具体机器的限制,而且使用了许多数学 公式和习惯用语,从而简化了程序设计的过程,因此是一种面向 问题或者面向

6、过程的语言。 比如,APT、PROLOG、LISP、PL/M以及C语言等。而80C51 系列单片微机作为工业标准地位,从1985年开始就有C语言编译 器,简称C51。 蜗 褐 伍 民 赶 哭 雇 姆 匿 张 掘 茧 萄 疫 谗 染 兑 染 装 琉 巫 絮 磕 入 厢 涂 没 仅 吠 曳 皂 匣 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 汇编语言 汇编语言语句的种类和格式 汇编语言语句的种类 指令语句:每1个指令语句都在汇编时产生1个目标代 码,对应着机器的1种操作。 例如:MOVA,#0 伪指令语句:

7、主要是为汇编语言服务的,在汇编时没有目标 代码与之对应。 例如:ONEEQU1 宏指令语句:用以代替汇编语言源程序中重复使用的程序段 的1种语句,由汇编程序在汇编时产生相应的目标代码。 咬 勉 页 毫 邯 乳 踩 坷 鸳 夷 方 畜 封 敌 即 怔 弦 笨 遇 再 榔 才 收 谚 惨 斤 涨 粗 观 谋 茶 宝 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 汇编语言语句的格式 指令语句的格式为: 【标号(名字)】:助记符(操作码)【操作数(参数)】; 【注释】 伪指令语句的格式: 名字定义符参数;注释 各

8、字段之间用1个空格或字段定界符分隔,常用的字段定界符有 冒号“:”、逗号“,”和分号“;”。其中方括号括起来的是可选 择部分。 掇 仔 咖 漫 逗 珠 股 杠 涯 岭 营 澳 捞 彻 梨 呸 峻 耿 蔷 尽 擦 肃 晾 柬 荔 洁 挤 伐 少 戴 撞 乔 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 标号域: 说明指令的地址。标号可以作为LJMP、AJMP、 LCALL及ACALL等指令的操作数。 在指令语句中,标号位于一个语句的开头位置,由字母和数 符组成,字母打头,冒号“:”结束。 标号中的字符个数一

9、般不超过8个,若超过8个,则以前面的8 个为有效,后面字符不起作用。 不能使用本汇编语言中已经定义了的符号作标号,比如指令 助记符(如ADD)、伪指令(如END) 一条语句可以有标号,也可以没有标号 探 婪 凡 灿 吧 逃 揽 炸 倒 岩 莉 江 斜 君 肥 绑 位 之 炸 榷 须 属 妮 煽 胜 襄 睛 嘴 止 立 穴 街 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 操作码域: 是指令的助记符或定义符,用来表示指令的性质,规定这 个指令语句的操作类型。 伪指令语句中的定义符规定这个指令语句的伪操作功能

10、。 对于标号缺省的语句,操作码域作为一行的开始。但在书写 时,应与上一行的操作码对齐。 鲤 袭 眷 掸 少 疼 甘 劝 钮 集 驶 尼 猾 哆 寿 梨 陋 眠 蚁 烛 鱼 宠 久 室 晒 玛 伪 迎 僵 夜 赏 坤 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 操作数域: 给出的是参与运算或进行其它操作的数据或这些数据的地址 。 操作数与操作码之间用空格“”分隔,若有两个操作数,这两 个操作数之间必须用逗号“,”分开。 对于操作数域出现的常数:若采用十六进制数表示,其末尾必 须加“H”说明;若十六进制数以

11、A、B、C、D、E、F开头,其前 面必须添1个“0”进行引导说明。 若采用二进制数表示,其末尾必须用“B”说明。 若采用十进制数表示,可以不加后缀或加“D”说明。 凌 癸 组 诧 扑 颗 尺 凯 旅 糖 荷 呵 镇 嘴 瓷 容 琢 帆 康 伊 敛 并 腾 昂 踏 碌 谍 二 蔑 蝇 汛 态 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 注释域 由分号“;”引导开始,是说明语句功能、性质以及执行结果的 文字。以分号“;”引导。 符 丢 助 鸡 乘 蝴 风 谨 萝 逼 帝 坠 噶 介 赦 谷 互 婆 吩 漆

12、智 私 曾 兆 硒 晓 立 宰 尊 盂 扔 榔 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 例:把片外存储器2200H单元中的数送入片内70H单元中。 标号域操作码域操作数域注释域 BEGIN:MOVDPTR,#2200H;(DPTR)=2200H MOVR0,#70H;(R0)=70H MOVXA,DPTR;(A)=(DPTR) MOVR0,A;(R0)=(A) 桂 十 氟 迢 擦 铃 葬 竞 犁 扳 臃 只 谍 澜 戍 踩 谆 敞 弘 宽 隔 元 票 式 袍 蛤 匿 凝 遗 俺 徘 弓 第 4 章

13、8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 伪指令:为了便于编程和对汇编语言程序进行汇编 ,各种汇编程序都提供一些特殊的指令,供人们编程使用 。 由伪指令确定的操作称为伪操作。 伪指令又称汇编程序控制译码指令。 “伪”体现在汇编时不产生机器指令代码,不影响程序的 执行,仅指明在汇编时执行一些特殊的操作。 4.1.2伪指令语句 唬 蛙 群 棕 敬 谩 简 帖 将 韦 筒 怨 烯 隔 铣 红 申 杏 粒 斯 蓉 木 剐 漱 胜 疑 纱 扩 低 蜒 搏 询 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设

14、计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 ORG(ORiGIN)汇编起始地址伪指令 指令格式为:ORG表达式 含义:向汇编程序说明,下述程序段的起始地址由表达 式指明。表达式通常为16进制地址码。 一般规定,在由ORG伪指令定位时,其地址应当由小到大 ,不能重叠。 它的有效范围一直到下一条ORG伪指令出现为止。 跟在ORG伪指令后面的程序段或数据段是绝对地址还是浮 动地址段,依赖于ORG右边的表达式性质。 崎 吠 隔 玩 硅 志 颓 瞳 延 务 悍 莹 谚 看 梆 蜒 续 弥 千 好 姬 舍 贼 评 势 届 屡 淳 蝇 墒 靡 唐 第 4 章 8 0 C 5 1

15、单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 ORG1000H START:MOVA,12H 含义:通知汇编程序,从START开始的程序段,其起始地 址由1000H开始。由于1000H是立即数型地址码,所以还隐含地指 明该程序段是绝对地址段。 假定ORG右边的表达式是浮动程序段中定义的标号RELOCA, 则 ORGRELOCA SUBROU: 表明SUBROU起始于RELOCA(它是相对地址)浮动地址的程序段 。 锗 疽 舶 木 佬 拉 素 盎 赖 哥 斤 妒 夸 傈 繁 沸 温 菊 懂 招 脑 碍 虾 烙 琳 仇 莹 歇 啮 道 卧

16、捣 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 END(ENDofassembly)汇编结束伪指令 汇编结束伪指令一般有以下两种格式: 主程序模块:标号END表达式 子程序模块:标号END 含义:通知汇编程序,该程序段汇编至此结束。 END语句应设置在整个程序(包括伪指令在内)的后面。 当源程序为主程序时,END伪指令中可有标号,这个标 号应是主程序第一条指令的符号地址。若源程序为子程序,则 在END伪指令中不需要带标号。 荐 烤 柑 祷 轰 闺 校 诗 剪 跑 沉 揉 藕 狈 字 望 狸 洋 营 箭

17、理 遣 癣 幌 氦 彬 跋 尔 汇 晰 吏 秽 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 EQU(EQUate)赋值伪指令 指令格式为:标号EQU表达式 含义:把表达式赋值于标号,这里的标号和表达式是必 不可少的。例如: LOOPEQU 2002H 是向汇编程序表明,标号LOOP的值为2002H。又如: LOOP1EQU LOOP LOOP已赋值为2002H,则相当于LOOP1LOOP,即 LOOPI也为2002H,在程序中LOOP和LOOP1可以互换使用。 用EQU语句给一个标号赋值以后,在整个源程

18、序中该标 号的值是固定的,不能更改。 趾 兢 逢 赋 圃 腹 紊 岩 滓 柞 企 主 闰 遣 铰 朴 碰 钢 晒 煌 酗 惶 货 否 腋 醉 岳 川 妓 览 筏 业 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 DL定义标号值伪指令 指令格式为:DL 含义:说明标号等值于表达式。同样,标号和表达式是必 不可少的。例如; COUNTDL3000H;S定义标号COUNT的值为 ;3000H COUNTDLCOUNT十1;重新定义COUNT的值为 ;3000Hl 可用DL语句在同一源程序中给同一标号赋予不同的值

19、,即 可更改已定义的标号值;而用EQU语句定义的标号,在整个源程 序中不能更改。 纵 万 腹 愉 盒 靛 窍 慑 叔 绩 库 沙 协 翰 漾 魂 吱 泌 犊 哨 竟 绕 该 念 厌 侍 屉 鸭 庇 波 搬 医 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 DB(DefineByte)定义字节伪指令 指令格式为:标号DB表达式或表达式表 含义:将表达式或表达式表所表示的数据或数据串存入从标 号开始的连续存储单元中。标号为可选项,它表示数据存储单元 地址。表达式或表达式表是指一个字节或用逗号分开的字节数据 。

20、可以是用引号括起来的字符串。字符串中的字符按ASCII码存 于连续的ROM中。例如: ORG 2000H TABLEDB73H,04,100,32,00,2,“ABC” 表示字节串数据存入由TABLE标号为起始地址的连续存 储器单元中。即从2000H存储单元开始依次连续存放数据为: 73H,04H,64H,20H,00H,FEH,41H,42H,43H。 嘎 蜗 阿 屏 斥 态 扯 浊 扇 景 活 舶 共 欺 赫 揉 拷 佛 恰 许 纯 浚 充 奉 袍 伦 笺 捌 毁 侯 柳 骋 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机

21、 的 程 序 设 计 若不采用ORG伪指令专门规定数据区的起始地址,则数 据区的起始地址即根据DB命令前一条指令的地址确定。这时DB 所定义的数据字节的起始地址为DB命令前一条指令的地址加上 该指令的字节数。 常 碗 伯 眼 仍 秉 沥 秤 足 耻 矗 距 魂 掐 牺 静 桂 榨 啄 吻 巷 族 圣 指 匿 砚 沂 璃 师 暮 丘 亿 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 DW(DefineWord)定义字伪指令 指令格式为:标号DW表达式或表达式表 含义:把字或字串值存入由标号开始的连续存储单元

22、中 ,且把字的高字节数存入低地址单元,低字节数存入高地址单 元。按顺序连续存放。 DW100H,3456H,814 表示按顺序存入01H,00H,34H,56H,03H,2EH 注:DB和DW定义的数表,数的个数不得超过80个。若数据的 数目较多时,可以使用多个定义命令。 一般以DB来定义数据,以DW来定义地址。 境 屡 帕 腐 箩 串 墓 崩 汉 锗 茎 搂 幽 啊 鸳 道 证 伯 且 鞍 苔 激 介 盘 害 絮 麦 附 团 谋 酱 鼓 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 DS(DefineS

23、torage)定义存储区伪指令 指令格式为:DS 含义:通知汇编程序,在目标代码中,以标号为首地址保留表达 式值的若干存储单元以备源程序使用。汇编时,对这些单元不赋 值。例如: BASEDS100H 通知汇编程序,从标号BASE开始,保留100H个存储单元 ,以备源程序另用。 注意,对于80C51单片微机,DB、DW、DS等伪指令只能 应用于程序存储器,而不能对数据存储器使用。 否 唾 搐 曝 总 押 必 胺 丫 陇 多 届 礼 亏 酉 轩 致 庆 剂 滴 斗 滩 前 癌 惫 梁 匡 滦 镍 犯 受 宋 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C

24、 5 1 单 片 微 机 的 程 序 设 计 BIT位定义伪指令 命令格式为:BIT 含义:给字符名称赋予位地址。其中,位地址可以是绝 对地址,也可以是符号地址。 例:ABCBITP3.1 把P3.1位地址赋值给ABC,在后面的编程中,ABC即可 作为位地址P3.1使用。 仰 坚 壮 胀 洱 吟 织 父 鸭 榆 苍 骗 渊 慌 遏 延 哦 结 依 愁 禁 磁 钟 泼 贴 烂 挺 良 桨 削 杂 蓟 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 例1.伪指令应用 ORG8100H BUFFERDS10H D

25、W“AB” DW100H,1ACH,-814 说明:从8100H至810FH为缓冲区空间 (8110H)=41H(A) (8111H)=42H(B) 8112H单元起存放01H、00H、01H、ACH、FCH、D2H 独 垮 醒 肯 甫 哗 帘 访 砒 识 锰 衔 肖 结 瓢 造 薯 观 额 懦 碰 多 卫 寻 着 傀 药 嗅 鹏 躁 封 栅 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 4.2 80C51汇编语言程序设计 汇编语言程序设计,就是采用汇编指令来编写计算机程序 。在实际编程中,如何正确选择指

26、令、寻址方式和合理使用工作 寄存器,包括数据存储器单元,如何对扩展的I/O端口进行操作 等,都是基本的汇编语言程序设计技巧。 程序结构一般采用以下3种基本控制结构,即顺序结构、 分支结构和循环结构来组成,再加上使用广泛的子程序及中断服 务子程序,共有5种基本结构。 缎 淋 照 搞 刻 酥 极 屯 繁 睡 硝 照 霸 埠 早 别 脂 墓 拥 干 丰 绕 婪 可 妒 渠 半 汗 企 绕 鸣 宪 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至 某一条指令为止。

27、 例2.数据传送和交换。 将R0与R7内容互换,R4与内存20H单元内容互换。 XCHR:MOVA,R0 XCHA,R7 XCHA,R0;R0与R7内容互换 MOVA,R4 XCHA,20H XCHA,R4;R4与20H单元内容互换 4.2.1 顺序结构程序设计 令 遣 峭 屈 趾 诈 灰 店 盾 刺 叮 驯 夜 刷 穷 展 育 重 沙 砚 役 辨 寻 芝 惋 柜 牙 虑 灼 剂 现 井 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 设被加数存放于片内RAM的20H(低位字节)、21H( 高位字节),加数

28、存放于22H(低位字节)和23H(高位字节) ,运算结果的和数存放于20H(低位字节)和21H(高位字节) 中。实现16位相加。 START:PUSHACC;将A中内容进栈保护 MOVR0,20H;将20H地址送R0 MOVR1,22H;将22H地址值送R1 MOVA,R0;被加数低字节内容送A ADDA,R1;低字节数相加 MOVR0,A;低字节数和存20H中 例3.不带符号多字节加法。 尖 妇 普 蝶 星 扔 转 解 惠 昏 签 勒 脑 鹊 酉 越 乎 蜡 洲 帽 撕 采 往 莉 弛 伯 悔 贫 狠 小 主 辰 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章

29、 8 0 C 5 1 单 片 微 机 的 程 序 设 计 INC R0;指向被加数高位字节 INCR1;指向加数高位字节 MOVA,R0 ;被加数高位字节送A ADDCA,R1;高字节数带进位相加 MOVR0,A;高字节数和存21H中 CLRA ADDCA,#00H MOV 10H,A;进位暂存于10H中 POP ACC;恢复A原内容 媒 哗 滩 蛙 丢 步 炳 阎 靛 倒 灵 拜 奖 涌 淹 戈 锋 丈 世 遏 尤 妆 聘 泛 蟹 拥 晤 义 惠 我 记 厢 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计

30、 注意:对于对带符号数原码的减法运算,只要先将减数原码的符 号位取反,即可把减法运算按加法运算的原则来处理。 对于带符号数的加法运算,首先要进行两数符号的判定, 若两数符号相同,则进行两数相加,并以被加数符号为结果的符 号。 如果两数符号不同,则进行两数相减。如果相减结果为正 ,则该数即为最后结果,并以被减数符号为结果的符号。如果两 数相减的结果为负,则应将其差数取补,并把被减数的符号取反 后作为结果的符号。 踊 醇 财 造 聘 竣 项 畅 字 馁 渠 懊 掖 耽 禽 峭 山 缓 吊 盖 建 室 琉 仗 七 陪 硬 臭 虹 莉 呼 各 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序

31、 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 多字节乘法的基础是加法。分别相乘后对应字节相加(个 位、十位、百位等分别相加,并考虑低字节向高字节的进位)。 选用工作寄存器暂存中间积。 分析:设被乘数低字节(addrl)用A表示,高字节(addr2) 用B表示;乘数低字节(addr3)用L表示,高字节(addr4)用 M表示。 例.双字节乘法。 然 飘 宵 石 秩 今 赠 逮 厉 殿 下 莉 汀 需 侗 味 抱 晤 祖 肠 锭 拂 民 亚 刘 来 薯 史 裔 离 鄂 祖 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5

32、 1 单 片 微 机 的 程 序 设 计 双字节相乘的过程如下: 述 客 彭 吱 开 貉 轿 眨 亨 瞒 大 鞘 盖 芭 昧 邓 益 乙 峦 真 趟 茧 宰 抨 衅 蓉 澜 须 靳 含 兄 去 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 工作寄存器用来存放部分积,R2存放(HALLBLLMA), R3存放(HBL+CYHMALBM),R4存放(HBM十CY)。 START:PUSHPSW;PSW、A、B入栈 PUSHACC PUSHB MOVPSW,18H;选用工作寄存器组3 MOVR0,addrl;被

33、乘数低字节地址送R0 MOVR1,addr3;乘数低字节地址送R1 MOVA,R0;被乘数低字节内容送A PUSHA;被乘数低字节内容A压栈 朱 韶 善 脐 湾 皋 脐 妮 业 屁 驮 闭 咋 费 疙 窄 压 熏 怔 登 杨 意 朝 乖 磊 贺 耙 记 惟 首 弗 器 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 MOVB,R1;乘数低字节内容送B MULAB;(1)AL MOVR0,A;积的最低字节存入addrl中 MOVR2,B ;HAL送R2中 INCR0;指向被乘数高字节 MOVA,R0;被乘数高

34、字节送A MOVB,R1;乘数低字节送B MULAB;(2)BL 帐 念 瞻 盆 号 懦 遣 而 甫 袍 模 采 邪 怂 令 译 礁 挝 垮 老 易 纽 仰 外 帚 股 砖 喻 咖 拌 猫 绞 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 ADDA,R2 ;HAL十LBL MOVR2,A ;HAL十LBI之和送R2 MOVA,B;HBL送A ADDCA,00H;HBLCY MOVR3,A ;HBL送R3 POPA;被乘数低字节内容L出栈 INCR1;指向ddr4 MOVB,R1;M送B 熄 薪 涨 迢 帛

35、 瑚 死 藐 休 迟 评 稻 稚 金 恢 戈 壶 誉 绝 洽 勇 酿 慌 躺 润 握 整 舅 治 揭 搀 刃 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 MULAB;(3)MA ADDA,R2 ;LMA(R2) MOVR2,A;LMAHAL十LBL之和送R2 MOVA,B ;HMA送A ADDCA,R3 ;HMA十HBLCY MOVR3,A ;HMAHBLCY之和送R3 MOVR4,0 ;清R4 痔 疏 廖 吏 报 檀 谢 敝 迢 谷 休 鸭 剖 彬 迁 郑 廷 禹 往 赚 买 尿 函 舌 灵 挟 刹

36、司 擅 服 琳 键 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 JNCLOOP;CY0,转LOOP INCR4;CY1,则(R4)R4l LOOPMOVA,R0;B送A MOVB,R1;M送B MULAB;(4)MB ADDA,R3;HMA十HBLLBM MOVR3,A;HMAHBLLBM之和送R3 MOVA,B;HBM送A ADDCA,R4;R4HBMRES3 掂 蚂 慷 验 垣 柱 迭 鼻 忻 理 喉 空 钾 访 威 缩 圃 妥 孙 嫉 栅 敢 哥 忿 诫 阀 滴 叹 货 秒 蓖 兵 第 4 章 8

37、 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 MOVR1,A ;RES3存入addr4中 MOV A,R2;RES1存入addr2中 MOVR0,A DECR1;指向addr3 MOVA,R3;RES2存入addr3中 MOV R1,A POPB;B、A、PSW出栈 POPACC POPPSW 困 孔 顾 厅 泊 佣 邱 阶 烙 丙 汹 唯 讶 浑 狙 短 凹 串 举 莉 驳 镑 韧 淌 砌 垦 璃 挫 冀 晚 恩 仍 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1

38、单 片 微 机 的 程 序 设 计 对于带符号数的乘法,其原则为: 原码相乘, 乘积的符号位为被乘数与乘数符号位的“异或” 珍 落 燕 拭 国 魂 轨 泵 曰 灸 舷 华 氏 玩 砰 漠 议 联 炸 疏 土 拆 有 疯 碳 眠 稚 壬 烂 崩 睁 兴 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 查表:根据变量x,在表格中查找对应的y值,使yf(x )。y与x的对应关系可有各种形式,而表格也可有各种结构。 一般表格常量设置在程序存储器的某一区域内。 MOVCA,ADPTR;远程查表 MOVCA,A+PC;

39、近程查表 例.查表 程 峻 谐 靶 弊 锣 怎 戳 袍 象 匝 忽 邓 还 缮 合 躬 啪 筋 抖 窒 钉 荐 榷 岩 臣 颠 白 匪 涯 枣 屹 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 设有一个巡回检测报警装置,需对4路输入进行控制,每路 设有一个最大额定值,为双字节数。控制时需根据检测的路号 找出该路对应的最大额定值。设R2用于寄存检测路号,查找到 的对应的最大额定值存放于31H和32H单元中。 查找最大允许额定值子程序如下: 廉 蕴 均 李 韶 伤 了 赴 稽 备 伙 妒 丁 俗 本 许 刨

40、跨 清 黎 肄 蹦 习 做 扼 秉 又 囤 滞 悸 猴 暇 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 地址机器码源程序注释 ORG2000H 2000EAMOVA,R2;检测路号送A 20012AADDA,R2;(R2)2 2002F531 MOV31H,A;距表首址偏移量 20042408 ADDA,#19H;偏移量 200683MOVCA,A+PC ;查表,读取第1个字节内容 2007C531XCHA,31H;第1字节存入31H单元 20092404ADD A,#15H;偏移量 200B83MOV

41、CA,A+PC ;查表,读取第2字节 200CF532 MOV32H,A;第2字节存入32H单元 200E 比 讣 统 胳 窗 幼 瑞 妹 损 故 颠 冰 督 学 屹 睡 翘 硬 股 寺 套 亢 酚 柑 心 蠢 时 烂 炕 词 经 昭 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 ORG 2020H;最大额定值表 20201230TAB:DW1230H,;路号0 20221540DW1540H;路号1 20242340DW2340H,;路号2 20262430DW2430H;路号3 END 说明:rel计

42、算2020H-(2006H+1)=19H (2020H+1)-(200BH+1)=15H 洛 赚 占 垂 掉 驼 鸿 诬 茨 何 妹 萌 惭 悬 脊 子 审 兴 脓 囊 厚 逢 榴 篡 奈 近 犹 豹 褐 成 茂 拄 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 设表中有1024个元素,每个元素为两个字节,则表格总长 为2048个字节。现按R4和R5的内容从表格中查出对应的数据元 素值,送存R4和R5中。 TBDP1:MOVDPTR,addrl6 ;表格首地址值送DPTR MOVA,R5;查表参数低位字节

43、送A CLRC;清CY RLCA;带进位左移一位 XCHA,R4;将查表参数R4内容送A RLCA;带进位左移一位 XCHA,R4;R4与R5内容互换 例.查表 颖 掌 志 常 义 观 封 殖 辣 嘛 裕 税 砚 伏 专 豹 越 雍 浙 食 拷 疮 骨 哉 求 熬 双 煮 描 乒 传 标 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 ADD A,DPL;DPL查表参数低位字节 MOVDPL,A;调整DPL、DPH MOVA,DPH;DPH送A ADDCA,R4;DPH查表参数高位字节 MOVDPH,A;相

44、加和存DPH CLRA;清A 谁 腆 秀 恒 母 鳞 砸 杖 宪 揩 充 狸 舰 伟 灯 郴 嚎 漏 衰 汪 燃 惺 肆 贮 协 梦 网 厅 往 澎 摘 偏 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 MOVCA,ADPTR;查表,读第1字节 MOVR4,A;第1字节存入R4 CLRA;清A INCDPTR;(DPTR)1 MOVCA,ADPTR ;查表,读第2字节 MOVR5,A;第2字节存入R5 RET TBDP2:DW;数据表 DW 诗 酗 方 败 学 叔 废 框 杜 己 握 贫 姥 旨 净 庸

45、城 耗 雹 汞 雨 举 跌 裁 荚 砷 卿 蔼 刨 擂 戒 褐 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 特点:程序执行流程中必然包含有条件判断,符合条件要求 和不符合条件要求分别有不同的处理路径。 在程序设计时,往往借助程序框图(判断框)来指明程序的 走向。 一般情况下,每个分支均需单独一段程序,在程序的起始地 址赋予一个地址标号,以便当条件满足时转向指定地址单元去执 行,条件不满足时仍顺序往下执行。 4.2.2 分支结构程序设计 动 举 拆 湾 游 藐 喳 逮 察 劲 再 瓶 认 剧 涅 盅 歪

46、阂 桌 渣 跨 欠 柳 茶 延 同 驮 纷 牵 滓 谬 跟 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 单分支结构 程序仅有两个出口,两者选一。 通常用条件判跳指令来选择并转移。 可实现单分支程序转移的指令有位条件转移指令 ,如:JC、JNC、JB、JNB和JBC等,还有一些条件 转移指令,如:JZ、JNZ、DJNZ等。 有3种典型形式(见图42)。 见 另 娟 颁 抡 匀 径 确 靴 阔 禁 咀 锄 大 诅 嫉 烧 汤 秒 谣 拿 炎 妥 耕 掩 朋 肩 郝 瑞 倘 虱 瓦 第 4 章 8 0 C 5

47、 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 图42(a),当条件满足时执行分支程序1,否 则执行分支程序2。 图42(b),当条件满足时跳过程序段1,从程 序段2开始继续顺序执行;否则,顺序执行程序段1和 程序段2。 图42(c),当条件满足时程序顺序执行程序段 2;否则,重复执行程序段1,直到条件满足为止。实 际是循环结构程序。 琵 倍 俗 扳 幽 劝 熬 余 临 渣 奉 尾 冕 整 韭 们 泡 烫 宇 哺 磨 姑 栅 苹 到 大 卜 毋 格 汀 圣 揭 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第

48、4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 设对addrl,addrl1的双字节数取补后存入addr2和addr2 十1单元中,其中高位字节在高地址单元中。8位微机对双字节数 取补需分两次进行。首先对低字节数取补,然后判其结果是否为 全“0”。若为“0”,则高字节数取补;否则,高位字节数取反。 START:MOVR0,addrl;原码低字节地址码送R0 MOV R1,addr2;补码低字节地址码送R1 MOVA,R0;原码低字节内容送A CPL A INC A;A内容取反加l,即取补 MOVR1,A;低字节补码存addr2单元 例.求双字节补码程序 哟 擅 热 馅 培 庐

49、桥 核 摧 笑 观 郊 印 梗 厂 峭 蹄 娩 来 虽 南 脚 馅 搭 腔 印 构 缓 依 觅 疯 奶 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 INC R0;指向原码高字节 INC R1;指向补码高字节 JZ LOOP1;当(A)0,转LOOP1 MOVA,R0;原码高字节送A CPL A;高字节内容取反 MOVR1,A;字节反码存(addr2十1)单元 SJMPLOOP2;转LOOP2,结束 LOOP1:MOVA,R0;低字节补码为0 CPL A;对高字节数取补 INCA MOVR1,A;高字节补码存(addr2+1)单元 LOOP2: END;结束 除 吏 杂 宾 蜘 喷 蝴 幕 尤 另 坟 固 赖 舀 艇 盆 罪 柬 范 驭 裹 碑 逃 尊 殉 惕 戒 幌 望 箩 庶 孵 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 第 4 章 8 0 C 5 1 单 片 微 机 的 程 序 设 计 Y=a2b(当b10时) Y=a2b(当b10)转MM MOVR3,A;R3b MOVA,R0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1