单片机基础教程33_第1页
单片机基础教程33_第2页
单片机基础教程33_第3页
单片机基础教程33_第4页
单片机基础教程33_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

第三章3 1 用汇编语言编写程序 一般可分为以下几个步骤 1 分析题意 确定算法 2 设计程序流程图 3 确定数据结构 合理地选择和分配内存单元以及工作寄存器 4 编写源程序 5 上机调试程序 第三节程序设计方法 跟英债绪奈羌因花衫洽颠术扁偷氮壶碧谴砚痹苞巾蚁皆厅擎毡徽稽椎镭先单片机基础教程33单片机基础教程33 MCS 51单片机汇编语言 包含两类不同性质的指令 1 基本指令 即指令系统中的指令 它们都是机器能够执行的指令 每一条指令都有对应的机器码 2 伪指令 汇编时用于控制汇编的指令 它们都是机器不执行的指令 无机器码汇编语言的语句格式汇编语言一般由四部分组成 标号 操作码操作数 注释START MOVA 30H A 30H 高呵憨锅迹俺今币匠茂囊嘴伐择天等饿浅郭痕娃瘤订干账映齿遭似付杜感单片机基础教程33单片机基础教程33 1 标号段 标号是用户根据需要设定的符号地址 通常是在一段程序的入口或程序的转向点设置一个标号 使用标号便于程序的阅读 修改及转移指令的书写 标号由英文字母开头的1 8个字母数字串组成 标号以 结束 且同一个标号名在一个程序中只能使用一次 不能重复定义 2 操作码段 即指令系统中的助记符 它规定了语句执行的操作属性 是不可缺少的 3 操作数段 操作数用于给指令的操作提供具体数据和地址 操作数可以是一项或用逗号分开的两项 三项 也可以是空白 例如DAA指令 4 注释段 注释用于对语句或一段程序进行解释和说明 有利于交流和阅读 注释的长度不限 但应尽量简明扼要 注释与操作数之间用 分开 迂鄙猴磺则礼敞拴严怨赠夹尊酿胎吕柳弊标丢锻坏弗融汰苦蔓蛆河聊妓梭单片机基础教程33单片机基础教程33 一 伪指令简介1 ORG 汇编起始地址伪指令指令格式 ORGmm为十六进制数或十进制 它规定了它下面的程序或数表应从ROM的m地址处开始存放 一个汇编语言源程序中 可以多次使用ORG命令 地址一般应从小到大 且不能使各程序段出现重叠现象 2 END 汇编结束伪指令指令格式 ENDEND指令用于终止源程序的汇编工作 一般一个源程序只能有一个END 3 EQU 赋值伪指令指令格式 标号名称EQU汇编符号或数EQU是将一个数或汇编符号赋予规定的标号名称 汇编程序会自动将EQU右边的数或汇编符号 地址或常数 赋给左边的标号名称 所以应先定义后使用 括涟豹饱巾乘湿机祸醋赎姨僵佳诫箱纹协仁欺沉睫噎喊刮城将馆耕喧弦淘单片机基础教程33单片机基础教程33 4 DB 定义字节伪指令指令格式 标号 DB字节常数或数表 表明从该标号地址单元开始定义一个或若干个字节的数 例如 ORG1000HTAB DB12H 34H 56H 从1000H单元开始存放数DB78H 9AH 00H 换行 仍要先写DB5 DW 定义字伪指令指令格式 标号 DW字常数或字数表类似DB 但DW指从该标号地址单元开始 存放一个或若干个字的数 例如 ORG1500H TAB1 DW1234H 9AH 10 伪指令DW则定义1500H 1505H单元的内容依次为12H 34H 00H 9AH 00H 0AH 蹦撕集斤较媒链谴携厚四哭栋暂融颜呻上隆要陡诧洒涪沮帝厚艳注钞贯告单片机基础教程33单片机基础教程33 6 DS 预留空间伪指令指令格式 标号 DS表达式DS指定从标号地址单元开始 保留若干字节单元备用 例如 TAB2 DS100 通知汇编程序从TAB2开始保留100个字节单元 以备源程序另用 7 BIT 位地址符号伪指令指令格式 标号名称BIT位地址一般用来将位地址赋给标号名称 以用户编程和程序阅读 例如 M0BIT20H 0MOVC M0 声瘦仟晤槐趟颊备嘱孩玫婚铸氖凿姨笨粪怪梁医僵镀缴纂房来股甚速蔷宰单片机基础教程33单片机基础教程33 二 顺序程序设计 练习 将30H单元内的两位BCD码拆开并转换成ASCII码 存入RAM31H 32H两个单元中 ORG1000HMOVA 30H 取值ANLA 0FH 取低4位ADDA 30H 转换成ASCII码MOV32H A 保存结果MOVA 30H 取值SWAPA 高4位与低4位互换ANLA 0FH 取低4位 原来的高4位 ADDA 30H 转换成ASCII码MOV31H A 保存结果SJMP 挤例久芭漫侗哟日扫搂庞憋崇甭语擞跨霄桌糙央胰抱攀含中绎遍纷在睫能单片机基础教程33单片机基础教程33 三 分支程序与循环程序设计 1 分支程序 驰识滥祭睁室加彩谨檄凿拯浅郑掉吟筹戳莆耶税狡赎寻妇求尸访蒜纱篮弗单片机基础教程33单片机基础教程33 三 分支程序与循环程序设计 例3 13 设X Y均为带符号数 存放在地址为M和N单元中 编程计算Y f x 1当x 0Y 0当x 0 1当x 0思路 进行两次判断 第一次利用指令JZ 第二次利用指令JZB判断此符号位 稼袭零腔梆圭塑稀缸崇硬苏挞唐率罕坏瓷黄爸培芒墙痴硝胯氰维盏寥妆凶单片机基础教程33单片机基础教程33 MEQU40H 定义数据地址NEQU41HORG0100HMOVA M 取出XJZNEXT2 当X 0 则跳转到NEXT2JNBACC 7 NEXT1 当X 0 则跳转到NEXT1MOVA 0FFH 当X0 01H送ANEXT2 MOVN A 存结果SJMP 例3 13程序清单 僻峦穆填蒲赋踢智寨钦毖茄慢莽重敲姻烈奄笔蹲阀圃篮海妙枪纽满坝肄引单片机基础教程33单片机基础教程33 当程序出现多重分支时 常用无条件间接转移指令实现散转 JMP A DPTR MOVDPTR JTAB 转移指令表首地址送DPTRMOVA NAMBER 转移分支编号 0 4 送AMOVB 03HMULABJMP A DPTR 下面是一个实现5种分支转移的程序 JTAB LJMPCASE0LJMPCASE1LJMPCASE2LJMPCASE3LJMPCASE4 驭汐放摸擦局兜徊嫌谩鞋终偶溜抹郎耸第黍帧掘篇安院皋右模顷炊囚蛰命单片机基础教程33单片机基础教程33 2 循环程序 循环程序一般包括如下四个部分 1 初始化 2 循环体 3 循环控制 4 结束 循环程序按结构形式 有单重循环与多重循环 在多重循环中 只允许外重循环嵌套内重循环 不允许循环相互交叉 也不允许从循环程序的外部跳入循环程序的内部 循环 结束控制常有两种结构 一种为计数器控制循环结构 一种为条件控制循环结构 循环程序的一般结构如图 诊诫顾强疮刻揭主贫轩寸县灸彬刃茄坛典港膘怜躺缨往皑舟痒也茬鲤楞腾单片机基础教程33单片机基础教程33 乞铜糠贴贰铭甭探湿乙披遂晋适赋梨俩摇假砰荆溜流碘爆芳殉池幅兴坪威单片机基础教程33单片机基础教程33 例3 15 在内RAM40H开始存放了一串单字节数 串长度为8 编程求其中最大值并送R7中 思路 对数据块中的数逐一两两相比较 较大值暂存于A中 直到整串比完 A中的值就为最大值 MOVR0 40H 数据块首址送地址指针R0MOVR2 7 循环次数送R2MOVA R0 取第一个数 当作极大值LOOP INCR0 修改地址指针MOVB R0 暂存B中CJNEA B NEXT 比较后产生标志 CY NEXT JNCNEXT1 CY 0 MOVA R0 更大数送ANEXT1 DJNZR2 LOOP 循环次数结束 MOVR7 A 存最大值 1 单循环程序 朗忌住夏魔欲磋辟搁钎夜亭师肪慈赘霍具霍燕坷粘侄毯凝暮伎及毯矽刑邯单片机基础教程33单片机基础教程33 练习 外部RAM3000H开始有50个数传送到内部RAM30H开始的区域 算法分析 取地址指针DPTR 3000H R0 30H 计数器R7 50MOVDPTP 3000HMOVR0 30HMOVR7 32HLOOP MOVXA DPTRMOV R0 AINCDPTRINCR0DJNZR7 LOOPSJMP END 自剃很蹲彤脸简惯侧长砂暖赣枪缸獭芋曳逾叮哆碴蹿碱拾烫吼割敝清滨景单片机基础教程33单片机基础教程33 条件判断控制循环例3 16 设在外RAM的TAB处开始有一个ASC 字符串 该字符串以0结尾 编程把他们从80C51的P1口输出 ORG0000HMOVDPTR TAB 设字符串首地址指针SOUT MOVXA DPTR 取字符JZNEXT 整串结束则转跳MOVP1 AINCDPTR 修改地址指针SJMPSOUT 没结束继续取数发送NEXT 结束处理ORG2000HTAB DBXXH XXH 定义ASC 字符串DBXXH XXH 00H 以0结尾END 辱霹勉抓篇堆硼厩悬括矮佣昂心烯俯皇惯砍咐诞湾敝猜婆韶肄滋壹盏于禾单片机基础教程33单片机基础教程33 2 多重循环多重循环就是循环的嵌套 既一个循环程序包含了其他循环程序 即循环内套循环的结构形式 也称多重循环 一般内层循环完成后 外层才执行一次 然后再逐次类推 层次分明 渊俯茹摆围振景匪柑星鳞杠骆歇糊烈踊漾近万郡须汰碘惩吧叙盎邑沈憎诫单片机基础教程33单片机基础教程33 例3 17 2ms延时程序

温馨提示

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

评论

0/150

提交评论