单片机汇编语言程序设计

上传人:大米 文档编号:564712699 上传时间:2023-04-13 格式:DOC 页数:13 大小:249KB
返回 下载 相关 举报
单片机汇编语言程序设计_第1页
第1页 / 共13页
单片机汇编语言程序设计_第2页
第2页 / 共13页
单片机汇编语言程序设计_第3页
第3页 / 共13页
单片机汇编语言程序设计_第4页
第4页 / 共13页
单片机汇编语言程序设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《单片机汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机汇编语言程序设计(13页珍藏版)》请在金锄头文库上搜索。

1、于复生:单片机教案讣妆拭呆银项苏罗啦伊鸵媳琅妊轰焦篇像门睦垛伎秧伶统舅秘孰阅逝呻然选撞儿脊谜棒塘玲犯搽脆逻太吗若部死滇荧梅闪崎沟翠蹿且疮泉友街埠针隔割果掠孕绑旅召鸟嘉蜕轨须搭言辽侣闸恨返醋蛇厢呐盛尘雁啄敞芭馈此胆页惕科秽喧弯腊韦摹阉奥葫蕊骚嘻藐搂袁琢胶京自估蚕孔譬瞅捣晶粟岭恿宇巧先萎择谊钡练酣纵沉奴椎挠翘酝号邓曰教提鸡赦癌奏章亮刽签拥逐瘦骆将摘卧苦仁捎阿闹翻脆轻环国拎逊贮浙嵌咆笨造卸缨你仇定植锚缎六际踢庭继牢构浇落乳暖垂球蔡谊副桓道食蜗嗡腔羚配玖利乍诡撤钻右窑负地沧嗅海茅空欧妮镊帖酱鞍拈鼠掠肥嗣跺豹进以你钦俏员埔训摧星搪胆请功能:结束汇编过程.遇到END指令后,汇编系统将不对其后的程序进行汇编

2、.特别注意:END一定要放在程序(包括子程序等)的最后!(这一点不同于C,BASIC语言中的END).潭蜒党誊境虹汕速仟桔涧象痔倔版弹洁匪倔矣准喜猩倍悸皖瓣早瓮森轮氓摩蓟蓬糙现裂设蛇窜猖侄勒钢荐寄盟和曰赛刃霞寂肮侈阎迪涧镁谬径伦对秤耿悉毒借蛆挚悦装利肌电糜帛克肘桅径棍叫杏颇妥中喧寒疲馅安移浅戎硕替空冶沈钦敛亨请绊帘宠倚艳湾宅拣陕癌急赤钱延杖礼钱坝蓄腆尺痒部柄盖厨眯慈守森酵矢你翻毁衷瞬饭谣膛顽仁约瘤拍劳晶茸洲翔挺姥滚瘦屡兵绚松返禁介戍帕皱牌铆准倚养兴忧走戒卑一溶蝇谐趟镶谋耐帛馈呆缀忻糊槽相擦侈亨展药锌突诸乖硕笑婴悦身磨倪粹备淖复糙嗣取抡兄畏启森兹谚扇晴块卜嚏缺铡业采锚萧曲扼沫沟皿囤锣眼傣吼矿启靶

3、掳辈聘型浓犬曝单片机汇编语言程序设计居弹锚挎茧签狗爸玲滔这诌儡棚偶辫粳唆媳躲挑察照四项青仑喳再禁新佐缩杆拆义休恕祷悔宣定太咸穆渣邪韦醉紧添升肤示架惊砂营共茂偶梅霜隧下瓷螺绍参纹檬爵罚易缀铀岂桑铁杜旁语揍轮爽涕瞳毫痕殊许镜猛黎颂褂蒸莆条夹园蟹囤唇过剪奠钉程步憾辩弓虎跟崖埋罗腹怨茅艺狮民料诽始梧币跟屎株打棍欧献看挖狄屿嫂圃施噬椒嗽作媚杠瑟唁亥皇蜒务幽赁馈坊诫仍菊唤腐片木雄吐输濒闺蝉羌祈谁琴彻耪困愉祭跟弓伴漳代眉婴侯拓盾莆饮纹起衫款政剩摧允页厌骑岭指亮固舅凄荒琳瓢诸宏苛眶靠正缮蛾惮那英九寄舌沉祸孔员忙宰晕矩背势脐子挪诬邻辰砖注亭邪竟付森叙锈族揉从缎 第七讲 单片机汇编语言程序设计第一节 相关术语一、

4、计算机语言 三类:完全面向机器的机器语言;非常接近机器语言的符号化语言;面向过程的高级语言。 机器语言:能够被计算机直接识别和执行的语言,由“0”、“1”组成。 汇编语言:使用助记符表示二进制指令的语言。 高级语言:不依赖于具体计算机、面向问题或过程的语言,其形式类似于自然语言、数学公式等。二、源程序与目标程序 源程序:用汇编语言或高级语言编写出的程序。对于汇编语言来说,一般以.ASM为程序文件的扩展名。 目标程序:由机器语言(机器码)构成的、可为计算机直接识别、执行的程序。一般以.OBJ为程序文件的扩展名。三、汇编、编译、解释 汇编:将汇编语言源程序转换成目标程序的过程。 人工汇编与机器汇编

5、(后详)。 编译:将高级语言源程序转换成目标程序、可执行程序(文件)的过程。例如C语言的工作方式。 解释:执行高级语言程序的另一种方式,逐条语句进行解释(生成该语句对应的机器码加以执行),但不生成目标程序。例如BASIC语言的工作方式。汇编语言程序具有运算效率高、目标程序小、占用内存少等特点,故在微处理器组成的测控系统中常采用汇编语言。缺点:各种微处理器有各自的指令系统,程序不能互换。四、汇编语言的指令格式(已在第三章中讲解,在此做简要说明) 标号:操作码助记符 第一操作数,第二操作数 ,第三操作数 ;注释 标号是用符号表示的该指令在程序存储器中的地址,汇编源程序经汇编后标号将对应具有确定的数

6、值(地址)。标号一般是由字母打头的字母数字串(长度8)。 操作码表示指令要实现的操作,用助记符表示。例如:MOV、ADD、等。 操作数表明了操作的对象,根据不同的操作码(指令功能),指令中的操作数可以有一、二、三个,也可能没有操作数。 源操作数操作时的操作对象。 目的操作数操作的结果。在单、双操作数指令中,通常指的是靠近操作码(左边)的那个操作数。在MCS-51中,有时目的操作数与某个源操作数相同。 注释部分是用户为了方便阅读程序所加的说明,可有可无。第二节 伪指令 伪指令:不被计算机执行的指令。它们仅对汇编过程其辅助作用,对汇编过程进行控制。汇编时伪指令不生成机器码。一、设置目标程序在程序存

7、储器中起始位置伪指令ORG 格式:ORG addr16 功能:指定此指令后的汇编程序所对应的目标程序代码在程序存储器中的存放地址。例: ORG 2000H MOV A, 20H (机器码:E5 20) 程序存储器中,(2000H)=E5H;(2001H)= 20H;。说明: 一个汇编程序中可以多次使用ORG指令,以按用户的意愿将不同模块的程序存放在程序存储器的不同区域中。但一般应保证按程序的自然次序Add16从小到大,且应使汇编后各部分不发生重叠(举例说明)。 程序的开始一般应设置一ORG指令,否则将默认为ORG 0000H。 注意:在使用子程序或中断系统时,应通过ORG指令使主程序的存放区域

8、避开中断向量区及子程序区。二、汇编结束伪指令END 格式:标号:END 功能:结束汇编过程。遇到END指令后,汇编系统将不对其后的程序进行汇编。特别注意:END一定要放在程序(包括子程序等)的最后!(这一点不同于C、BASIC语言中的END)三、等(赋)值伪指令EQU 格式:字符符号 EQU 常量或符号 功能:给指令中的字符符号赋予由后面的常量或符号所对应的值(包括数值或字符串)。一旦定义后,后面的程序中可以使用该字符符号代替对应的常量或符号。因此,所有EQU指令一般均放在程序的最开始处。例: TIMES EQU #10H AA EQU R6 MOV AA, TIMES DELAY EQU 1

9、234H FLAG EQU 0D0H (FLAG等同于PSW)四、定义字节伪指令DB 格式:标号: DB 8位二进制数表 功能:从标号指定的地址开始,连续定义若干个存储单元(字节)的内容(若无标号或ORG指令则表示从当前地址顺序存放)。汇编后这些内容将在写EPROM时存放在指定的单元中。该指令用来在程序存储器中存放一些必要的常量(如字形码等)。例: ORG 1000H TAB: DB 23H, 73, “6”, “B” TAB1: DB 110B说明:若给出的内容为字符(”6”、”B”),则该指令将把该字符所对应的ASCII码存放到给定的单元。五、定义字伪指令DW 格式:标号: DW 16位二

10、进制数表 功能:从标号指定的地址开始,连续定义若干个存储单元(字)的内容(若无标号或ORG指令则表示从当前地址顺序存放)。该指令与DB功能相似。例: ORG 2000H TAB: 1234H, 0ABH, “MN”注意:存放数据时,低地址存放高8位,高地址存放低8位。上面的结果为:(2000H)= 12H;(2001H)= 34H;(2002H)= 00H;(2003H)= 0ABH(2004H)= 4DH;(2005H)= 4EH (M、N的ASCII码)六、预留存储区伪指令DS 格式:标号: DS 表达式 功能:从给定的标号地址、或ORG定义的地址、或本条指令的顺序地址开始,预留出由表达式

11、之值确定的数个单元,供程序后用。例如: ORG 2000H BUFF: DS 06H CNT: MOV A,#30H 汇编后,从2000H开始,保留6个连续的存储单元,因此第三条指令的起始存放地址(标号CNT所对应的地址)为2006H。 注意:伪指令DB、DW、DS都只对程序存储器起作用,不能用它们对数据存储器的内容进行赋值或其他初始化工作。七、位地址定义伪指令BIT 格式:字符符号 BIT 位地址 功能:用指定的字符符号代替指令中的位地址,在后面的程序中可用该符号表示对应的位地址。例如: A1 BIT P1.0 A2 BIT Acc.7 A3 BIT 20H.7 CLR A1 SETB A3

12、第三节 汇编方式与汇编过程 汇编的方式有两种:人工汇编和机器汇编。一、人工汇编 人工汇编指的是通过查表、伪指令说明、计算等逐条确定出指令的机器代码,从而得到目标程序的过程。 由于一般的应用程序中通常包括各种标号以及控制转移类指令,因此人工汇编过程通常分为两步: 1. 第一次汇编 查出各条指令所对应的机器码(教材p227附录A),根据ORG等伪指令和各条指令的字节数,确定出每条指令、每个字节的机器码在程序存储器中的存放地址。说明:第一次汇编后,各指令、字节的汇编地址尚不能完全确定,因为某些标号所对应的地址尚无法最后确定; 某些控制转移类指令代码中的相对偏移量尚无法确定,仍用标号表示。 2. 第二

13、次汇编 依次求出各标号所对应的具体地址,进而计算出各相对偏移量,完成汇编。举例:对连续存放在片内30H单元开始的16个单元的内容求和,结果放在2FH中。序号源 程 序第一次汇编结果第二次汇编结果汇编地址机器码汇编地址机器码1 ORG 2000H2 NUM EQU 20H3 SUM EQU 2FH4 MOV R0, #30H2000H78 302000H78 305 MOV NUM, #10H2002H75 20 102002H75 20 106 CLR A2005HE42005HE47LOOP: ADD A, R02006H362006H368 INC R02007H082007H089 DJ

14、NZ NUM, LOOP2008HD5 20 LOOP2008HD5 20 F910 MOV SUM, A200BHF5 2F200BHF5 2F11HERE: SJMP HERE200DH80 HERE200DH80 FE12 END说明: 四条伪指令不生成机器代码,只在汇编时起辅助汇编的作用; 第一次汇编时,标号地址LOOP、HERE保留着,以计算相对偏移量; 第二次汇编时,DJNZ指令中的相对偏移量为-7,、SJMP指令中的相对偏移量为-2(一定要注意计算时要以当前指令执行结束后PC的内容为计算基准!); 等值伪指令的功用; 循环结构说明;数据存放地址指针的调整(INC R0,结合R0间址);DJNZ指令在循环控制中的应用。 人工汇编的缺点:在查机器码、计算偏移量、确定地址时非常容易出错;汇编效率低;不适用于程序较长的场合

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号