欢迎来到天天文库
浏览记录
ID:44361377
大小:1.02 MB
页数:82页
时间:2019-10-21
《单片机基础(第3版)——第4章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MCS-51系列单片机的程序设计第四章交叉汇编语言MASM51单片机汇编语言程序设计方法及技巧本章内容了解交叉汇编语言MASM51的特点掌握顺序程序、分支程序、循环程序、查表程序、子程序的基本设计方法和技巧学习目的掌握汇编语言程序设计的一般步骤4.1交叉汇编语言MASM51汇编语言源程序是由汇编指令和伪指令组成的文件,其扩展名为“ASM”。源程序编辑完后只有转换为机器码表示的目标程序计算机才能执行,这个转换的过程称为汇编。程序设计就是用计算机所能接受的语言把解决问题的步骤描述出来,也就是编制程序。常用的
2、MCS-51程序设计语言有MCS-51汇编语言和MBASIC51、C51、PLM51等高级语言。编程汇编语言编程时大多在PC中用文本编辑器(如EDIT)编写,目前几乎所有的单片机仿真器所配的软件均有文本编辑器。如南京伟福WAVE6000forWindows、KeilμVision2等软件。只要运行软件后进入程序编辑状态即可编写程序。汇编汇编语言必须经过机器汇编或人工汇编才能得到相应的机器程序,即目标程序,以供单片机识别和执行。由于人工汇编工作量大,容易出错,现已不用。机器汇编一般是在PC上利用一些汇编软件
3、进行。目前几乎所有的单片机仿真器配的开发软件都有汇编程序,在源程序编写完成后使用汇编功能菜单即可进行对源程序汇编。在汇编时若发现源程序有语法错误或跳转超出范围等情况,系统会将错误显示给用户。用户在改正错误后,需再对源程序进行汇编,直到源程序完全没有语法错误。此时汇编程序会生成与其对应的目标文件。一般情况下是生成HEX(十六进制)和BIN(二进制)文件。没有语法错误并不等于程序开发成功,一般来说还要对程序进一步调试、修改,运行无误后,程序才算最终完成。这时才可将目标文件写入到程序存储器中。1)人工汇编人工汇
4、编是通过人工查出源程序中所有汇编指令的机器码,并依次将机器码输入单片机中,使之成为单片机能直接执行的目标程序。2)机器汇编机器汇编是指在计算机上通过汇编程序对源程序进行汇编,即从源程序到目标程序的转换过程是由计算机上的汇编程序自动完成的。3)交叉汇编是指用一种计算机上的汇编程序去汇编另一种计算机的源程序,为另一种计算机产生目标程序。单片机MCS-51汇编语言程序设计步骤:1分析问题2确定算法3设计程序流程图4分配内存单元5编写汇编语言源程序6调试程序4.2程序设计方法及技巧4.2.1顺序程序设计顺序程序在
5、单片机中是最简单的程序片段,在顺序程序中没有判断、没有分支。只是顺序向下执行。如单片机开始时对内部或外部资源初始化的程序就是一个典型的顺序程序。例4.1请用MCS-51汇编指令编写程序,将片内RAM104、105单元中的内容分别传送到片外RAM104H、105H单元中。分析:应注意片内和片外的寻址指令不同ORG1000HMOVR0,#68HMOVA,@R0;片内RAM104单元内容送累加器MOVDPTR,#0104HMOVX@DPTR,A;完成片内RAM104单元内容送片;外104H单元中INCR0MOV
6、A,@R0;片内RAM105单元内容送累加器INCDPTRMOVX@DPTR,A;完成片内RAM105单元内容送片;外105H单元中SJMP$;等待END;结束4.2.2分支程序设计分支程序就是在程序执行过程中要判断某些条件,当条件成立后程序转移到不同的功能处运行。在MCS-51单片机中条件转移指令都可以用在分支程序中。测试条件符合转移,如:JNBTI,$;TI是串行控制寄存器;SCON的第一位CLRTI比较不相等转移,如:CJNER0,#2FH,LOOPRET减1不为0转移,如:DJNZR7,LOOPR
7、ET根据某些单元或寄存器的内容转移,如:JMP@A+DPTR1.简单分支程序YN顺序执行条件满足?转向目标程序图4.1简单分支程序转移分析:只要将两数进行比较,用比较的结果作为分支转移的条件就很容易地找出其中的大数。已知片内RAMFIRST开始的两个单元中各存放有一个8位无符号二进制数,要求找出其中的大数并存入片内RAM的SECOND单元中。例4.2ORG1000HCLRCMOVR0,#FRIST;第一个数地址送R0中MOVA,@R0;取第一个数INCR0;R0指向第二个数地址SUBBA,@R0;两数比较
8、JCBIG;第二个数大转BIGDECR0;R0指向第一个数地址BIG:MOVSECOND,@R0;存大数SJMP$;等待END;结束参考程序2)多路分支程序(散转程序)K=nK=n-1K=2转向分支n-1转向分支2转向分支1转向分支nK=?K=1…图4.2多路分支程序转移1)把AJMP或LJMP指令组成一个分支程序的转移表,表的首地址放入DPTR中;2)调整后的出口信息放入累加器A中;3)执行JMP@A+DPTR转向对应的分
此文档下载收益归作者所有