【ch04】80C51 汇编语言程序设计_第1页
【ch04】80C51 汇编语言程序设计_第2页
【ch04】80C51 汇编语言程序设计_第3页
【ch04】80C51 汇编语言程序设计_第4页
【ch04】80C51 汇编语言程序设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第四章80C51汇编语言程序设计工业和信息化部“十四五”规划教材单片机原理及应用01概述20%30%40%50%

机器语言机器语言(MachineLanguage)是指直接用机器码编写程序、能够被计算机直接执行的机器级语言。

汇编语言汇编语言(AssemblyLanguage)是指用指令助记符代替机器码的编程语言。

高级语言高级语言(High-LevelLanguage)是在汇编语言的基础上编写程序,例如PL/M-51、FranklinC51、MBASIC51等,其优点是程序可读性强,通用性好,适用于不熟悉单片机指令系统的用户。程序设计语言定义起始地址伪指令ORG

格式:ORG操作数说明:操作数为一个16位的地址,它指出了紧跟ORG后面的那条指令在程序存储器中的地址。汇编语言伪指令定义赋值伪指令EQU格式:字符名称EQU操作数说明:该指令用来给字符名称赋值。在同一个源程序中,任何一个字符名称都只能赋值一次。定义数据地址赋值伪指令DATA格式:字符名称DATA操作数说明:DATA伪指令功能和EQU相类似,它把右边“表达式”的值赋给左边的“字符名称”。

定义字节数据伪指令DB格式:[标号:]DB数据表说明:该伪指令用来定义若干字节数据表,并从指定的地址单元开始存放在程序存储器中。汇编语言伪指令汇编语言伪指令

定义双字节数据伪指令DW格式:[标号:]DW数据表说明:DW定义的是双字节数据,而DB定义的是单字节数据,其他用法都相同。定义预留空间伪指令DS格式:[标号:JDS操作数说明:该伪指令用于告诉汇编程序,从指定的地址单元开始(如由标号指定首地址),保留由操作数设定的字节数空间作为备用空间。20%30%40%50%定义位地址赋值伪指令BIT格式:字符名称BIT位地址说明:该伪指令只能用于有位地址的位(内部RAM或SFR中),把位地址赋予规定的字符名称。定义汇编结束伪指令END格式:[标号:]END说明:汇编结束伪指令END用来告诉汇编程序,此源程序到此结束。汇编语言伪指令1.汇编语言程序设计步骤汇编语言程序设计步骤如下:①分析问题;②确定算法;③设计程序流程图;④分配内存工作单元,确定程序和数据区的起始地址;⑤编写汇编语言程序;⑥调试程序。程序汇编方法程序汇编方法汇编语言源程序的汇编和调试(1)机器汇编汇编过程是将汇编语言源程序翻译成目标程序的过程。机器汇编通常在计算机上(与单片机仿真器联机)通过汇编程序实现。(2)手工汇编由程序员根据89C51的指令集将汇编语言源程序的指令逐条人工翻译成机器码的过程叫人工汇编。通过人工查找指令表,将每一条指令的机器代码查出,并分配存储空间,计算地址偏移量,最后得到目标文件。02顺序程序设计顺序程序设计①正确选择程序存放的地址。在编写程序时,一般要在程序开头用一条伪指令ORG指定程序的首地址。首地址应该避开单片机的系统保留地址,如复位地址和中断入口地址等,且要注意程序存储器的有效使用空间。②检查所用的指令是否合法,非法指令由于找不到机器码,是无法汇编的。③程序要有一定的通用性且易于修改。④为使程序在运行结束时,不会继续跑飞,可在程序的最后一行加一条指令,使程序暂停,如SJMP$。03分支程序设计【例4.3.1】比较两个无符号数的大小。设从外部存储单元ST1起存放两个无符号8位二进制数,要求比较其大小,将大数存入ST1+2单元中。程序流程图如图4-4所示。一般分支程序设计

【例4.3.2】试编制计算符号函数y=SGN(x)的程序。设自变量x已存入标号为DATA的单元,其值在-128≤x≤127范围内。符号函数y存于FSGN单元中。一般分支程序设计【例4.3.3】比较两个有符号数(三分支程序)。内部RAM的20H单元和30H单元各存放了一个8位有符号数,请比较这两个数的大小,根据比较结果点亮发光二极管(LED)。一般分支程序设计20%30%40%50%用转移指令表实现散转在某些程序中,需要根据某一单元的值0,1,2,…,n,相应地转向处理程序0,处理程序1,…,处理程序n。用转移地址表实现散转当程序转移范围比较大时,可使用转移地址表方法,即把每个处理程序的入口地址直接置于地址表内,先用查表指令找到对应的转向地址,再把此地址装入DPTR中。将累加器清零后,用指令JMP@A+DPTR直接转向各个处理程序的入口。散转程序设计三种无条件转移指令三种无条件转移指令在应用上的区别有以下三点:首先,转移距离不同,LJMP可在64KB范围内转移,AJMP指令可以在本指令取出后的2KB范围内转移,SJMP的转移范围是以本指令为核心的-126~+129B。其次,汇编后机器码的字节数不同,LJMP是三字节指令,AJMP和SJMP都是两字节指令。最后,LJMP和AJMP都是绝对转移指令,可以计算得到转移目的地址,而SJMP是相对转移指令,只能通过转移偏移量来进行计算。散转程序设计04循环程序设计20%30%40%50%

程序在进入循环处理之前必须先设立初值,如循环次数计数器、工作寄存器及其他相关变量的初始值等,为进入循环处理做准备。

循环体也称为循环处理部分,是循环程序的核心。循环体用于处理实际的数据,是重复执行部分。

在重复执行循环体的过程中,不断修改和判别循环变量,直到符合循环结束条件。一般情况下,循环控制有以下几种方式。循环程序结构循环程序组成循环程序的基本结构循环程序通常有两种编程方法:一种是先处理后判断,另一种是先判断后处理,如图4-7所示。循环程序结构循环程序结构

多重循环结构程序对于一些复杂问题,必须采用多重循环的程序结构,即循环程序中包含循环程序或一个大循环程序中包含多个小循环程序,称为多重循环程序结构,又称循环嵌套。循环程序与分支程序的比较循环程序本质上是分支程序的一种特殊形式,凡是分支程序可以使用的转移指令,循环程序一般都可以使用。

单重循环程序设计已知有10个单字节数,依次存放在内部RAM40H单元开始的存储区中,要求把求和结果存入寄存器R2、R3中(高位存R2,低位存R3)。循环程序实例

多重循环程序设计——延时程序设计设计一个延时1s的程序,设单片机时钟晶振频率为fose=6MHz。循环程序实例

数据传送程序不同存储区域之间的数据块传输。将内部RAM30H单元开始的内容依次传送到外部RAM0100H单元开始的区域,直到遇到传送的内容是0为止。循环程序实例

05查表程序设计20%30%40%50%

题意分析所谓表格,是指在程序中定义的一串有序的常数,如平方表、字型码、键码表等。

汇编语言源程序

程序说明从程序存储器中读数据时,只能先读到累加器A中,然后再送到题目要求的地方。查表程序设计在程序中定义一个0~9的平方表,利用查表指令找出累加器A=05H的平方值。06子程序设计与堆栈技术【例4.6.1】编程使P1口连接的8个LED按下面方式显示:从P1.0连接的LED开始,每个LED闪烁10次,再移向下一个LED闪烁10次,循环不止(原理图参见图3-11)。子程序实例堆栈概念堆栈实际上是内部RAM的一部分,堆栈的具体位置由堆栈指针SP确定。SP是一个8位寄存器,用于存放堆栈的栈底(初始化)地址和栈顶地址。堆栈结构堆栈操作堆栈有两种最基本操作:向堆栈存入数据称为“入栈”或“压入堆栈”(PUSH),从堆栈取出数据称为“弹出堆栈”(POP)。堆栈结构

堆栈的功能最初,堆栈是为了子程序调用和返回而设计的,执行调用指令(LCALL、ACALL)时,CPU自动把断点地址压栈;执行返回指令RET时,自动从堆栈中弹出断点地址。堆栈操作与RAM操作的比较堆栈作为内部RAM的一个特殊区域,有其独特性,为汇编语言程序设计提供了更多的方便。子程序结构子程序的编程原则●子程序的第一条指令必须有标号,明确子程序入口地址;●以返回指令RET结束子程序;●简明扼要的子程序说明部分;●通用性和可浮动性,尽可能避免使用具体的内存单元和绝对转移地址等;●注意保护现场和恢复现场。在计算机内部,任何数据最终都是以二进制形式表示的。但人们通过外部设备与计算机交换数据采用的常常又是一些别的形式。例如标准的编码键盘和标准的显示器使用的都是ASCⅡ码;人们习惯使用的是十进制数,在计算机中表示为BCD码等。因此,汇编语言程序设计中经常会碰到代码转换的问题,这里提供了BCD码、ASCII码与二进制数相互转换的基本方法和子程序代码。代码转换程序双字节无符号

温馨提示

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

评论

0/150

提交评论