论坛风格切换切换到宽版
  • 2638阅读
  • 4回复

ZT汇编的思维写出简洁的C程序 [复制链接]

上一主题 下一主题
离线BG7TBL
 
发帖
2965
只看楼主 倒序阅读 0楼 发表于: 2006-01-06
/**********************************
转自http://www.21icbbs.com
汇编的思维写出简洁的c程序

上学的时候学过单片机,后来几乎全还给了学校。前段时间由于工作需要重新拾起来,用汇编写了个程序,但由于维护起来太麻烦,决定用c重写一遍。在重写的过程中有一点点心得,希望与其他c51的初学者共享!
如果要写个延时程序,是用
{
for(i=0;i<100;i++);
}
还是用
{
for(i=100;i>0;i--);
}
呢?似乎没什么区别,但在汇编里面
用加一的思想,程序必然这么写,
mov r0,#00h         ;2字节
loop:
inc r0             ;1字节
cjen r0,#64h,loop     ;3字节
如果用减一的思想,程序可以这么写
mov r0,#64h         ;2字节
loopl:
djnz r0,loop         ;2字节
其实这也是keil c对c处理后的汇编情况。
由此可见,c的语法稍微变一点,就可以节约2个byte,定时可以更精确。
程序更简洁!
*********************/

图片是我用keil 51编译后的结果,for(i=0;i<100;i++);编译后的代码比作者的要多,不知道何故!!!
离线wycx
发帖
1497
只看该作者 1楼 发表于: 2006-01-06
用户被禁言,该主题自动屏蔽!
离线BG6AGB
发帖
915
只看该作者 2楼 发表于: 2006-01-07
呵呵,你也知道c省事了啊?
地球人早都知道了~~~
离线oxalis
发帖
958
只看该作者 3楼 发表于: 2006-01-07
留个   mark
离线bg7vi
发帖
2562
只看该作者 4楼 发表于: 2006-01-27
jihao