长沙卖菜王 发表于 2009-6-22 17:36

汇编程序格式规范

<br />在单片机领域,一直有一个怪现象,就是:每个程序员写的程序,都只有自己看得懂。原因何在?盖因每个程序员写程序时,都按自己的习惯来写,大家没有统一的规范。如此以来,造成诸多弊端:<br />1、&nbsp;&nbsp;&nbsp;&nbsp;可读性极差。读懂别人的一个程序,比自己写一个程序的时间还长。<br />2、&nbsp;&nbsp;&nbsp;&nbsp;可维护性极差。程序越写越长,越改越烂,像懒婆娘的裹脚布,又长又臭又粘。<br />3、&nbsp;&nbsp;&nbsp;&nbsp;可移植性极差。今天你写程序用的子程序,明天我写程序时,这些子程序又得重写一遍。众多的程序员在程序的苦海中重复着低级劳动&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;&not;……<br />4、&nbsp;&nbsp;&nbsp;&nbsp;开发周期长。客户怨声载道,老板的MONEY不禁使唤……<br />……<br />在此,特发出倡议:让我们共同来制定一个程序编写规范,大家都用这种规范来写程序,并逐步推动其成为一种行业标准。<br />(以上摘自于匠人手记,下面是作者自编的汇编程序格式规范)<br /><br />1、程序的开头:<br />在开头部分,我们应该说明以下几个关键点:<br />a、程序编写人&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b、程序编写时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c、程序实现的功能<br /><br />;//////////////////////////////////////////////////////<br />;程序编写人:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;王筝&nbsp;QQ:408864998<br />;程序编写时间:&nbsp;&nbsp;&nbsp;&nbsp;2008年12月11日星期四<br />;程序实现的功能:&nbsp;&nbsp;本程序实现P2口的流水灯,低电平点亮<br />;//////////////////////////////////////////////////////<br /><br />2、子程序的注释<br />严格来说,所有的程序,每条指令,都必须写上注释。但在实际中,有的同学想节省时间,但也不能代表不需要写注释,可以只对子程序进行注释。子程序的注释,主要包括下面几个关键点:<br />a、子程序的名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b、子程序实现的功能&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c、输入&nbsp;&nbsp;&nbsp;d、输出<br /><br />;///////////////显示子程序///////////////////<br />;输入:&quot;A&quot;<br />;输出:&nbsp;&quot;P2口&quot;<br />;实现的功能:把A的数输出到P2口显示<br />display:&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shuchu,a&nbsp;&nbsp;&nbsp;&nbsp;;p2口输出要显示的灯<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br /><br />3、主程序<br />主程序是方便大家把程序模块化,从主程序反应的信息,一定是整个程序的整体,因此主程序一定是调用子程序或者判断,主程序指令最好不要超过20条。<br /><br />;/////////主程序////////////////////////////<br />start:&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a,#01h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;初始化<br />main:&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;显示&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;delay&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;延时<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;zuoyi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;左移<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ljmp&nbsp;&nbsp;&nbsp;&nbsp;main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;循环<br /><br />4、初始化的定义<br />在单片机的主程序前,必须要对所有的I/O口,以及用到的资源进行定义,定义的名称应该通俗易懂,方便大家进行以后阅读程序,增强程序的可读性。并且对定义的名称,进行注释。<br /><br />;/////////开始自定义及初始化////////////////<br />shuchu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;定义P2口为输出口<br />pianxuan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;P1为片选口<br />cishu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;循环次数<br />shuzhi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;显示的数值<br />

NING4581909 发表于 2009-6-22 17:51

不亦心 发表于 2009-6-22 19:04

不错,汇编这样规范的

‘每个程序员写的程序,都只有自己看得懂。’<br />这个是不是人家在保护自己的劳动成果啊

huangqi412 发表于 2009-6-22 19:49

恩,

俺以前接受的汇编,CAO,连PORTA,PORTB都直接用内存地址&nbsp;xxH来写,更别说内存单元命名了,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;整死个人...

ayb_ice 发表于 2009-6-22 20:44

这是因为思维习惯不很难看出来的

耕在此行 发表于 2009-6-24 07:49

呵呵 顶顶

汇编不大用了&nbsp;用C用规范也是必须的。

lbx_00 发表于 2009-6-24 11:26

呵呵,我写程序大致是这样规范

不过,程序编写人,程序时间,程序功能都没有,都在我的笔记本(不是电脑)里;<br /><br />精确到每一句的注释基本没有,除非那个东西对我来说很新,第一次想出来,而且觉得很妙;<br /><br />子程序的注释都有,但是E文的;<br /><br />还有就是内存和SFR,SFR一般是开发环境就定义好名字了,我就用了,没有定义的地方就直接用地址,当然很多地址按照C语言的说法是全局的,它是做什么用的,只在我的笔记本(不是电脑)里有。

icecut 发表于 2009-6-24 12:44

这不是从c规范抄的吗

汇编直接不提倡用.老板为了省钱用不支持c的芯片,对不起,这个问题老板自己承担.

不亦心 发表于 2009-6-24 12:50

俺觉得汇编挺好

汇编挺好

长沙卖菜王 发表于 2009-6-24 12:55

本人以卖菜的名字声明

&nbsp;&nbsp;&nbsp;这个完全是我的原创!

5880527 发表于 2009-6-24 16:26

楼主说的很好

搭好了框架以后更改也方便,可靠性也会提高。我以前的师傅,一个主循环几千行,子程序调用很少,一路下来没一句注释,现在想想都恐怖

highgear 发表于 2009-6-24 21:45

顶卖菜王!!!

非常好的规范,可以看出完全是搂主原创。<br /><br />添加一个小小的建议:使用明确而有意义的命名。一个好的程序不用注释也应该能看得懂。既然花了大量篇幅在注释上,为什么不再多打几个字在变量名和程序名上呢?例如:delay&nbsp;不如&nbsp;delay_100ms&nbsp;or&nbsp;delayInMillisecond&nbsp;有意义.<br /><br />

长沙卖菜王 发表于 2009-6-25 12:30

回复楼上

&nbsp;&nbsp;&nbsp;&nbsp;非常感谢你的建议!感谢

zhf0964 发表于 2009-6-25 16:57

写好流程图才是最根本的方法。

古道热肠 发表于 2009-6-25 17:21

写汇编要注意资源的占用情况,子程序最好作出说明

上层调用子程序时就会将被子程序(弄脏)的寄存器入栈保护的.<br />51单片机汇编时尤其是DPTR要当心.

古道热肠 发表于 2009-6-25 17:25

想提高代码重用质量有两个方法

1是用C语言编程.<br />2是分层,将底层与硬件相关的驱动层独立出来,中间层和应用层做成ANSI&nbsp;C兼容的,应该就能跨平台使用了.

FREEXP 发表于 2009-6-26 10:23

都用C了,格式参考“华为编程规范”

都用C了,格式参考“华为编程规范”

长沙卖菜王 发表于 2009-6-26 17:13

DINGQI

长沙卖菜王 发表于 2009-6-30 08:45

顶起来

&nbsp;&nbsp;顶一下

bjc125 发表于 2009-6-30 09:54

呵呵 建议是好的是规范 也难统一呀

我的汇编也是规范的&nbsp;自己规定的规范而已<br />呵呵
页: [1] 2
查看完整版本: 汇编程序格式规范