自己用的EMC汇编编程风格

来源:互联网 发布:疯狂美工京东装修助手 编辑:程序博客网 时间:2024/06/07 21:06

想确立一下编程序的风格,这样有个规范,做起来比较方便和快捷。

1) 每一个程序块都有一个统一的入口和一个统一定出口,这样做到好处是程序成一个块状结构,整个程序块可以整个的删除或者移动,而不会影响上下关联程序之间,这样做有点像C语言的结构化程序和C++的类,打个比方而已,其实没有可比性。坏处,暂时个人的理解来说,除了增加几行废代码之外,没有其他,不过如果程序比较长,大量用这类出口结尾的语句的话,显得比较重复和冗余,不过这个可以看具体的来改。个人觉得,这个牺牲是有意义的,程序看起来很好看,让人一眼就能看懂,哪部分开始,哪部分结束。

 

下面用case ……switch 这个多条件选择语句做为例子,顺便也说说这个非常好用的多条件选择语句。通过A中值的0-2得不同,加上PC值转移,跳进3个不同的服务程序。

 

       ADD   PC,A

       JMP   PRO1

       JMP   PRO2

       JMP   PRO3

PRO1:

       .......

       JMP   PRO_END  

PRO2:

       .......

       JMP   PRO_END

PRO3:

       .......

       JMP   PRO_END

PRO_END:

       NOP    

 

 

这个多条件转移语句是相当好用的,也很实用。回到原先的规范问题,看看程序尾PRO_END:       NOP  这个是一个空语句,显然是没用的,但是他提供了一个统一的程序出口,所有的条件最后都是跳回到那里。如果不这样做到话,每个分支程序跳出的时候都会直接跳到相应的其他程序里面去了。就这样完成程序的话,当然不会有什么问题,单是如果客户要求修改程序的话,就会变得相当的麻烦,每个分支的出口都要修改。

我个人比较喜欢用多一点的标签,让程序看起来整齐容易理解,在这里要建立个人的风格,整个就是我比较喜欢的风格之一。

 

一些时间可以修改常数定义部分里面的宏定义

ref 系列为基准寄存器,reg系列为延时用时间寄存器,或者其他类型类型的寄存器,dat系列为常数的宏定义,方便修改。

 

命名规则:

 

( 1 )  子程序的命名规则  

xx_ proc:

……

……

xx_r1:

……

xx_r2:

…….

…….

xx_end:

nop

 

xx代表子程序名字,例如扫键用 key_scan_proc 等)

这种风格,有几点好处,第一,可以看出来,这是一个模块化的结构,程序里面的跳转,特别是跳出的时候,统一用 xx_end 作为出口,这样的话整个程序可以方便的移动,而不用担心必须修改程序的其他跳转关系。

第二 这样命名的话不多怕标号会重复,因为标号的前缀都是用子程序名,子程序名字是唯一的,所以在另外一个程序里面也可以用同一个标号,只是后缀不同,例如

扫键的时候设定了  key_r1   key_r2  key_r3    等等标号,到扫灯的时候同样可以  led_r1  led_r2   led_r3  这样可以剩下很多心思去想“该用什么标号呢”等问题

 

2)标志寄存器

个人的习惯是  主寄存器是 flag ,其他看标志的类型设定名字,例如延时用的 flag_delay ,定时用的flag_timing 等等。

 

3)变量寄存器的名字

个人习惯是统一前缀的,例如延时用的全部 delay_ 开头,看起来感觉不错。

0 0
原创粉丝点击