打印

汇编程序格式规范

[复制链接]
6689|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
长沙卖菜王|  楼主 | 2009-6-22 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在单片机领域,一直有一个怪现象,就是:每个程序员写的程序,都只有自己看得懂。原因何在?盖因每个程序员写程序时,都按自己的习惯来写,大家没有统一的规范。如此以来,造成诸多弊端:
1、    可读性极差。读懂别人的一个程序,比自己写一个程序的时间还长。
2、    可维护性极差。程序越写越长,越改越烂,像懒婆娘的裹脚布,又长又臭又粘。
3、    可移植性极差。今天你写程序用的子程序,明天我写程序时,这些子程序又得重写一遍。众多的程序员在程序的苦海中重复着低级劳动¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬……
4、    开发周期长。客户怨声载道,老板的MONEY不禁使唤……
……
在此,特发出倡议:让我们共同来制定一个程序编写规范,大家都用这种规范来写程序,并逐步推动其成为一种行业标准。
(以上摘自于匠人手记,下面是作者自编的汇编程序格式规范)

1、程序的开头:
在开头部分,我们应该说明以下几个关键点:
a、程序编写人     b、程序编写时间     c、程序实现的功能

;//////////////////////////////////////////////////////
;程序编写人:      王筝 QQ:408864998
;程序编写时间:    2008年12月11日星期四
;程序实现的功能:  本程序实现P2口的流水灯,低电平点亮
;//////////////////////////////////////////////////////

2、子程序的注释
严格来说,所有的程序,每条指令,都必须写上注释。但在实际中,有的同学想节省时间,但也不能代表不需要写注释,可以只对子程序进行注释。子程序的注释,主要包括下面几个关键点:
a、子程序的名称      b、子程序实现的功能     c、输入   d、输出

;///////////////显示子程序///////////////////
;输入:"A"
;输出: "P2口"
;实现的功能:把A的数输出到P2口显示
display:    mov        shuchu,a    ;p2口输出要显示的灯
           ret

3、主程序
主程序是方便大家把程序模块化,从主程序反应的信息,一定是整个程序的整体,因此主程序一定是调用子程序或者判断,主程序指令最好不要超过20条。

;/////////主程序////////////////////////////
start:    mov        a,#01h        ;初始化
main:    call    display        ;显示    
        call    delay        ;延时
        call    zuoyi        ;左移
        ljmp    main        ;循环

4、初始化的定义
在单片机的主程序前,必须要对所有的I/O口,以及用到的资源进行定义,定义的名称应该通俗易懂,方便大家进行以后阅读程序,增强程序的可读性。并且对定义的名称,进行注释。

;/////////开始自定义及初始化////////////////
shuchu               equ        p2          ;定义P2口为输出口
pianxuan        equ        p1          ;P1为片选口
cishu               equ        10            ;循环次数
shuzhi            equ      100            ;显示的数值

相关帖子

沙发
NING4581909| | 2009-6-22 17:51 | 只看该作者

使用特权

评论回复
板凳
不亦心| | 2009-6-22 19:04 | 只看该作者

不错,汇编这样规范的

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

使用特权

评论回复
地板
huangqi412| | 2009-6-22 19:49 | 只看该作者

恩,

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

使用特权

评论回复
5
ayb_ice| | 2009-6-22 20:44 | 只看该作者

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

使用特权

评论回复
6
耕在此行| | 2009-6-24 07:49 | 只看该作者

呵呵 顶顶

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

使用特权

评论回复
7
lbx_00| | 2009-6-24 11:26 | 只看该作者

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

不过,程序编写人,程序时间,程序功能都没有,都在我的笔记本(不是电脑)里;

精确到每一句的注释基本没有,除非那个东西对我来说很新,第一次想出来,而且觉得很妙;

子程序的注释都有,但是E文的;

还有就是内存和SFR,SFR一般是开发环境就定义好名字了,我就用了,没有定义的地方就直接用地址,当然很多地址按照C语言的说法是全局的,它是做什么用的,只在我的笔记本(不是电脑)里有。

使用特权

评论回复
8
icecut| | 2009-6-24 12:44 | 只看该作者

这不是从c规范抄的吗

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

使用特权

评论回复
9
不亦心| | 2009-6-24 12:50 | 只看该作者

俺觉得汇编挺好

汇编挺好

使用特权

评论回复
10
长沙卖菜王|  楼主 | 2009-6-24 12:55 | 只看该作者

本人以卖菜的名字声明

   这个完全是我的原创!

使用特权

评论回复
11
5880527| | 2009-6-24 16:26 | 只看该作者

楼主说的很好

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

使用特权

评论回复
12
highgear| | 2009-6-24 21:45 | 只看该作者

顶卖菜王!!!

非常好的规范,可以看出完全是搂主原创。

添加一个小小的建议:使用明确而有意义的命名。一个好的程序不用注释也应该能看得懂。既然花了大量篇幅在注释上,为什么不再多打几个字在变量名和程序名上呢?例如:delay 不如 delay_100ms or delayInMillisecond 有意义.

使用特权

评论回复
13
长沙卖菜王|  楼主 | 2009-6-25 12:30 | 只看该作者

回复楼上

    非常感谢你的建议!感谢

使用特权

评论回复
14
zhf0964| | 2009-6-25 16:57 | 只看该作者

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

使用特权

评论回复
15
古道热肠| | 2009-6-25 17:21 | 只看该作者

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

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

使用特权

评论回复
16
古道热肠| | 2009-6-25 17:25 | 只看该作者

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

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

使用特权

评论回复
17
FREEXP| | 2009-6-26 10:23 | 只看该作者

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

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

使用特权

评论回复
18
长沙卖菜王|  楼主 | 2009-6-26 17:13 | 只看该作者

DINGQI

使用特权

评论回复
19
长沙卖菜王|  楼主 | 2009-6-30 08:45 | 只看该作者

顶起来

  顶一下

使用特权

评论回复
20
bjc125| | 2009-6-30 09:54 | 只看该作者

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

我的汇编也是规范的 自己规定的规范而已
呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

201

帖子

0

粉丝