单片机汇编程序编写技巧

【摘 要】在用汇编语言编写单片机程序时,由于编程方法或者选用指令的不同,会造成实现相同功能的程序,执行时间的长短和程序占用内存空间的大小都不相同,占用内存空间少、执行时间短是编写汇编程序最基本的原则.本文从这两个评价标准入手,简述了对汇编程序进行时间和空间优化的一些小技巧,目的是为了改善程序的执行效率,或达到一定的限制、要求,以更好地满足应用需求.

【关 键 词】单片机;汇编程序;编程技巧

ProgrammingskillsofMCUassemblyprogram

【Abstract】IntheMCUprograminginassemblylanguage,programmingmethodsorselectionofdifferentinstructions,maycausetheprogramtoachievethesamefunctionality,theimplementationofthelengthoftimeandprogramsizeisnotthesameOccupylesemoryspace,shortexecutiontimeisthebasicprincipleofprogramming.Thisarticlefromthetwoevaluationcriteriatostart,brieflyassemblertipstooptimizethetimeandspace,theaimistoimprovetheefficiencyoftheimplementationoftheprogram,orreachacertainlimit,therequirementstobettermeettheapplicationrequirements.

【Keywords】MCU,Assemblyprogram,Programmingskills

0.引言

单片机应用系统由硬件和软件组成.软件是系统监控程序的总称,也就是各种指令依某种规律组合而形成的程序,单片机应用系统的软件设计是系统设计中最基本而且工作量较大的任务.迄今为止,单片机的程序设计语言主要采用汇编语言和高级语言.汇编语言是面向机器的语言,常称为低级语言,但比机器语言直观,便于理解和记忆,适合编写短小、高效、实时控制的程序.在单片机应用系统中经常用汇编语言编写程序,在用汇编语言编写一个单片机应用系统的程序时,往往选择的程序结构、选用的汇编指令以及占用的存储空间都不相同,这就导致实现同一个功能的汇编程序不唯一.一个好的汇编程序应该执行时间短,占用系统的存储空间少,这就是评价汇编程序的时间和空间标准.

1.程序的时间和空间

先看个例子,用汇编程序将单片机数据存储器30H开始的16个单元中的数据依次循环左移8位,有三种实现方法:

方法一

MOVA,30H

MOVR1,#10H

MOVR0,#3FH

JH:XCHA,@R0

DECRO

DJNZR1,JH

方法二

MOVA,30H

MOV30H,31H

MOV31H,32H

......

MOV3EH,3FH

MOV3FH,A

方法三

MOVA,30H

XCHA,3FH

XCHA,3EH

......

XCHA,31H

XCHA,30H

上例中,三段汇编程序实现的功能相同,但占用的时间和空间却不相同,程序运行的时间分别为67个周期,32个周期和17个周期;程序占用的空间分别是10个字节、52个字节和34个字节.其中方法三和方法二相比较,不仅速度提高了将近1倍,而且减少了一半的存储空间.可见,不同的程序编写方法,程序的时间和空间不相同.

2.时间和空间的优化

从上述分析得知,同一个功能的汇编程序有多种实现方法,在编写程序时,应该考虑系统对时间和空间的要求,对一般控制系统来说,主要考虑空间,保证程序能装下,而对于实时控制系统来说,主要希望程序执行的时间越短越好.正是由于不同的系统对时间和空间的要求不尽相同,所以在程序编写过程中,就要对汇编程序进行时间和空间的优化,来满足单片机应用系统的要求.下面笔者就浅谈在时间和空间优化上的一些小技巧.

2.1时间的优化

程序在时间上的优化最基本的就是用周期更短的指令代替原来的指令,例如当遇到乘除运算时,尽可能地用移位来实现;其次,寄存器寻址的指令具有指令周期数少的特点,所以尽量采用寄存器寻址,可以优化程序的执行时间.另外对于有很大存储空间的单片机应用系统,还可以采用“空间换时间”的方法,即充分利用那部分闲置的存储空间,来编写执行时间短的程序,例如可以将循环程序分成几个单独的程序段执行,将带参数的子程序改成可以直接调用的子程序,省去对参数进行赋值上的时间等.上例中的方法三就采用的这种方法.

2.2空间的优化

程序在空间上的优化最基本的就是采用循环结构和子程序,使程序的长度大幅减少,占用内存空间减少,从而简化程序的逻辑结构,提高了空间效率.其次就是存储空间的复用,一般来说,一个存储空间只作一个用途,但是在可利用资源非常有限的情况下,可以适当的实现存储空间的复用.另外在单片机应用系统对时间要求不高的情况下,可以使用“时间换空间”的策略来压缩程序大小,即使用执行时间长但占用存储空间少的程序或程序段.例如,将功能相同或相近的几个主程序段合并为一个子程序,将几个相近的子程序合并成一个子程序等等.上例中方法一使用的就是这个策略.

3.结论

除以上的方法外,一些小技巧的使用也可以优化程序.例如一些指令的配合经常可以做成模块使用,多编制和收集一些模块化的子程序不仅有助于程序的编制,也有利于提高所编制程序的可读性.

总之,用汇编语言编写单片机程序不仅要能用,而且要实用,占用芯片内存少、执行时间短是编程的基本原则,程序的逻辑性和可读性也是程序优劣的一项重要指标.

【参考文献】

[1]张友德等.单片微型机原理应用与实验[M].上海:复旦大学出版社.2003:618-619.

[2]谢敏.单片机应用技术[M].北京:机械工业出版社.2010:61-62.


[3]王洪庆.微型计算机控制技术.北京:机械工业出版社.2009:41-52.

类似论文

word编写文的技巧

1、用好样式编写论文,一定要使用样式,除了Word原先所提供的标题、正文等样式外,还可以自定义样式 如果你发现自己是用选中文字然后用格式栏。
更新日期:2024-7-19 浏览量:92291 点赞量:19781

Word编写文的技巧明

一篇论文应该包括两个层次的含义:内容与表现,内容是指文章作者用来表达自己思想的文字、图片、表格、公式及整个文章的。
更新日期:2024-3-22 浏览量:43723 点赞量:9990

Word编写文的技巧指导

一篇论文应该包括两个层次的含义:内容与表现,内容是指文章作者用来表达自己思想的文字、图片、表格、公式及整个文章的。
更新日期:2024-5-21 浏览量:68555 点赞量:15143

基于Keil的51单片机汇编程序多文件编译

引言:本文结合KeilμVision2程序开发流程,描述了51单片机汇编程序多文件编译的实现方法 通过多文件编译的使用,大。
更新日期:2024-6-9 浏览量:16018 点赞量:5369

关于单片机应用编程的技巧

摘 要:单片机是单片微型计算机的简称,是一种集成电路芯片 目前,单片机已经在各个行业和领域得到应用,很难找到哪。
更新日期:2024-5-21 浏览量:69724 点赞量:15724

VC在编写病毒专杀工具中的应用

摘 要:目前病毒越来越多,杀毒软件存在滞后性 各大安全公司针对影响较大的病毒都推出病毒专杀工具 其实普通用户。
更新日期:2024-6-17 浏览量:82208 点赞量:18461

基于单片机的恒压供水控制系统

一、绪论 (一)课题背景及意义 随着社会经济的迅速发展,水对人民生活与工业生产的影响日益加强,人们对供水的质量和安全。
更新日期:2024-12-23 浏览量:156780 点赞量:33630