打印

让我告诉你 “准备转型用C编程,以前用汇编习惯...”?

[复制链接]
4556|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2010-1-14 17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
不亦心| | 2010-1-14 19:03 | 只看该作者
一言以蔽之,就当你从没有学过汇编。刚学C语言时候把汇编忘得越干净越好。

一般来讲,忘记汇编的干净程度与你以后的C语言精通程度成正比。
xlsbz 发表于 2010-1-14 17:14

严重反对此观点

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xlsbz + 1
板凳
不亦心| | 2010-1-15 13:29 | 只看该作者
呵呵,我反对LZ,
LZ还给我评分,以后天天跟LZ对着干,呵呵
:P

使用特权

评论回复
地板
反质子| | 2010-1-15 14:28 | 只看该作者
像电影里面的  太极拳?

使用特权

评论回复
5
smileagain| | 2010-1-15 22:08 | 只看该作者
一言以蔽之,就当你从没有学过汇编。刚学C语言时候把汇编忘得越干净越好。

一般来讲,忘记汇编的干净程度与你以后的C语言精通程度成正比。
xlsbz 发表于 2010-1-14 17:14

倒是第一次看到说话那么绝对的,虽然我从汇编转C后就再也没用过汇编。
我个人觉得,一般用用的话C就够了,但是要深入了解或精通单片机的话,汇编绝不可少
C语言调试中很多问题是需要看反汇编才能解决的,不会汇编,就死路一条
记得郭天祥的“十天学会51单片机C语言”视频中,他说他初学51的时候是从汇编开始的,但后来发现完全没有必要学汇编。听这话我猜想,郭天祥的单片机水平也就一般般吧。
还是匠人手记中那句话最经典:匠人说,他面试时最怕碰到两种人,一种是不懂单片机的,还有一种是不懂汇编的。
大赞此话!

使用特权

评论回复
6
xwj| | 2010-1-15 22:49 | 只看该作者
觉得没有障碍,可以互不影响自由转换。
不过精通汇编的话可以写出更有效率的C代码哦~

使用特权

评论回复
7
machunshui| | 2010-1-16 08:23 | 只看该作者
学汇编的作用有三:
1.借此深入理解MCU工作机理。
2.某些成本极其敏感的小家电应用减小代码尺寸,降低成本。
3.某些DSP应用场合,写出速度更快的算法代码。

对一般的单片机应用而言,没必要熟悉汇编。
编写程序架构更加合理,稳定,易于修改的C程序是重中之重

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
古道热肠 + 2
8
928315| | 2010-1-16 08:46 | 只看该作者
了解一点点汇编。但是没有用汇编做个东西。。

使用特权

评论回复
9
xlsbz|  楼主 | 2010-1-16 22:27 | 只看该作者
倒是第一次看到说话那么绝对的,虽然我从汇编转C后就再也没用过汇编。
我个人觉得,一般用用的话C就够了,但是要深入了解或精通单片机的话,汇编绝不可少
C语言调试中很多问题是需要看反汇编才能解决的,不会汇编,就死路一条
记得郭天祥的“十天学会51单片机C语言”视频中,他说他初学51的时候是从汇编开始的,但后来发现完全没有必要学汇编。听这话我猜想,郭天祥的单片机水平也就一般般吧。
还是匠人手记中那句话最经典:匠人说,他面试时最怕碰到两种人,一种是不懂单片机的,还有一种是不懂汇编的。
大赞此话!smileagain 发表于 2010-1-15 22:08


程序将人某天发了一段汇编,然后..........


soho 发表于 2002-1-8 23:56 侃单片机返回版面
警告: 下次再贴, 文字加倍, 程序删掉
!
又臭又长的程序谁看
.

jw5th
发表于 2002-1-9 03:35 侃单片机返回版面

只需要把思路讲出来就可。

虚拟人
发表于 2002-1-9 14:20 侃单片机返回版面

为匠人默哀3分钟。

呜呜
~~~~

程序匠人
发表于 2002-1-9 19:43 侃单片机返回版面

此失败?

没想到各位如此冷落小匠
……
请问SOHO:老哥是喜欢看搞笑的那段,还是凶杀的那段?
……

签名:

如果你的是一座作坊,我愿作那不知疲倦的程序匠……

soho
发表于 2002-1-9 21:57
侃单片机返回版面

别伤芯, 要不我给你块糖糖吃
^-^
hlmfox
发表于 2002-1-10 17:23
侃单片机返回版面

老兄,换C吧!这样掌声会多点!!!

插翅能飞
发表于 2002-1-11 13:02 侃单片机返回版面

我来给点掌声。

啪!啪啪!啪啪啪!。。。

skysea
发表于 2002-1-11 14:12 侃单片机返回版面
保持你的风格

每个人都有自己的风格,我个人觉得你的这种风格比较有个性,感觉文笔还不错,能够让战友们在获取资料信息的同时又轻松一笑,佩服!!!

Y are not alone  :-)
程序匠人
发表于 2002-1-11 19:48 侃单片机返回版面
     
skysea
的发言真是一针见血!

其实,小匠发这篇帖子的目的,就是想让大家在一个比较轻松愉快的环境下来讨论技术。

签名:
如果你的是一座作坊,我愿作那不知疲倦的程序匠……



使用特权

评论回复
10
xlsbz|  楼主 | 2010-1-16 22:27 | 只看该作者
hyqiu 发表于 2002-1-11 20:17 侃单片机 ←返回版面     
啊……前面的文笔不错……
后面的程序就……
这种功能……用 C 来实现更好些……
另外……对于键盘扫描,我采用的算法是每 1/60 秒扫描一次,然后简单的判断一下本次扫描值和上次扫描值有否区别……类似电视游戏机的做法……
这样……似乎 CPU 利用率会高一些……如此程序的稳定性也比较有提升的空间(不过实时性也会有所降低),而且还可以免于进行抖动去除……



今晚打老虎 发表于 2002-1-11 20:18 侃单片机 ←返回版面     
好呀!
  现在很难找到一个搞义隆系列单片机的战友了,不错不错对我这种初学者来说很有参考的价值,谢谢。希望程序匠人朋友再接再厉,为我们带来快乐。



程序匠人 发表于 2002-1-11 20:30 侃单片机 ←返回版面     
关于EMC++
前面有两位朋友都提到了C语言,
各位真是幸福,可以用C语言,
EMC的芯片只有一套伪C语言,叫EMC++
不过,语法不太严密,界面也不好(FOR DOS 的)
所以,小匠只有……
不过,我倒是认为,汇编语言对硬件的控制更直接些。
各位以为呢?……


签名:

如果你的‘芯’是一座作坊,我愿作那不知疲倦的程序匠……



johnsoncao 发表于 2002-1-11 20:52 侃单片机 ←返回版面     
Yes! I Agree!



soho 发表于 2002-1-11 20:54 侃单片机 ←返回版面     
对, 汇编语言对硬件的控制更直接些
只是程序因芯片而异, 局限性大, 加之芯片不熟的话, 读起来也吃力.



hyqiu 发表于 2002-1-11 20:57 侃单片机 ←返回版面     
这个嘛……
个人认为……纯粹的 ANSI C 在处理硬件控制/时序上的能力确实比汇编差,但是这个的相差其实微乎其微……
而 C 在逻辑/算法上的能力绝非汇编可以比拟的……并且汇编程序几乎是不可重用的……
另外,如果以 51 系列单片机来说……许多稍具规模的系统用 C 开发编写的代码甚至比汇编还快……
再者,C 的可移植性是汇编完全没有的……
最后……C 非常容易学……而且 C 的基础打好的话,可以非常容易的转到 FPGA/DSP 甚至 PC 程序的开发上……这个是汇编不可能比拟的优势——你总不会希望自己一辈子跟 8 位单片机较劲吧?



插翅能飞 发表于 2002-1-12 12:12 侃单片机 ←返回版面     
关于C与汇编的好坏,谁最有发言权?
一定是两种语言都很精通的人,才能不偏不倚地来评价……



jcws10000 发表于 2002-1-12 13:00 侃单片机 ←返回版面     
谁再说C比汇编好,我跟他急.....

使用特权

评论回复
11
xlsbz|  楼主 | 2010-1-16 22:28 | 只看该作者
alonlee 发表于 2002-1-12 13:22
侃单片机返回版面

呜呜,PL/M如何?大家都把它忘了还是不值一提
?


签名:


   
我想飞 , 可我没有翅膀


hyqiu
发表于 2002-1-12 14:39 侃单片机返回版面

楼上的楼上……急有什么用?

除非你打算一辈子只用一种单片机……否则长远来看,精通 C 并且了解汇编确实比只精通汇编来的有用
……

   
招聘精通单片机通讯工程师1-2

专业源自专心
串口专家

主题:《多个按键的连按处理技巧》大话篇
返回主题列表

刷新 PAGE 2 / 2 25
首页
前页
后页
尾页
  

jcws10000
发表于 2002-1-12 21:35 侃单片机返回版面

楼上的朋以,干嘛只懂汇编就只能用一种单片机?哪种单片机不能用汇编?




hyqiu
发表于 2002-1-13 11:51 侃单片机返回版面

……只是一种比喻而已
……
毕竟只用汇编语言的话,改型后就得重新掌握整套指令体系
……
而以 C 为主的话,基本上只要知道新片子的引脚功能和时序就可以了
……



程序匠人
发表于 2002-1-13 22:16 侃单片机返回版面

哈哈,小匠也想把C再学透些,免得被时代淘汰

使用特权

评论回复
12
huangqi412| | 2010-1-16 22:34 | 只看该作者
:o  2002

使用特权

评论回复
13
zyok| | 2010-1-17 00:03 | 只看该作者
程序匠人
发表于 2002-1-13 22:16 侃单片机 ←返回版面

哈哈,小匠也想把C再学透些,免得被时代淘汰
;P

使用特权

评论回复
14
xlsbz|  楼主 | 2010-7-17 19:45 | 只看该作者
LZ的观点有道理啊!!:victory:

使用特权

评论回复
15
tcc8073| | 2010-7-17 20:40 | 只看该作者
汇编和C都用的飘过一下

使用特权

评论回复
16
zq1987731| | 2010-7-17 20:43 | 只看该作者
一辈子报着8051用了几十年汇编的人...只要一看见有人说C比汇编好就和人家急...
可事实上这年头...C的优势早就盖过汇编了
之前在21IC还看到有人以“死机式延时的精度和时序的精度”这个明显由于自身C水平太差只懂点汇编就主观臆断的荒唐理由来辩驳...每次看见这些“高手”在程序中用LJMP DELAY10MS还号称有的系统中要求没那么高,NND还为自己水平不足以和懒惰找借口了...LJMP DELAY10MS后执行的第一句竟然还是禁中断...您老以为这是在做RTC啊?
DS18B20对时序的要求够高了吧?C的_nop_();以及状态机程序结构轻松搞定,根据宏常数的设定,拖了N个在后面照样极其稳定,程序的BUG及可维护性等等远强于汇编!
C早就打败汇编了,就有那么些老古董总是固执己见,才造成大量新人被误导,认为用汇编的都是高手,就和PC机上用二进制编程的被人当成高手这种谬论一样。
照这理论..你们这帮老古董怎么不拿纯门电路+机械按钮按01010101...来编程啊?这时候到知道用编程器了嘛?!这时候到知道用工具的优越性了吧?!

使用特权

评论回复
17
wzl-xx@163.com| | 2010-7-18 09:02 | 只看该作者
单从做单片机方面来讲,汇编不能像楼主说的那样忘得一干二净,汇编为单片机编程的基础,要深入了解单片机汇编是不可少的。例如在I2C的通信中要求精确延时,用C我还编不出来那么精确地延时。在延时中C的语句虽然简单,但是编译成了汇编后不是在C中那样几条语句就完成了,每个循环部分要多不少。如果用_nop_()延时另当别论,假如用程序延时10us你可以知道用多少个_nop_()。如果要延时100us,要写一百个_nop_(),有点.......................。
还有其他的如单总线等。

使用特权

评论回复
18
mon200| | 2010-7-18 09:44 | 只看该作者
对于单片机来讲,学习汇编是基础,没有汇编语言做基础,很难谈得上能进一步通过C语言搞单片机开发;因为汇编语言是与硬件最紧密联系的,用好汇编,你的程序才能发挥单片机资源的最佳效用,而且单片机的实时性和精确性通过汇编体现的会更加深刻;唯一不足的是汇编可读性较C差,因此对编写任务较复杂的程序而言,显然不太容易。再说到C语言,因为它的可读性较强,而且对单片机,没有太多的硬件要求,只须单片机基本的硬件结构,掌握其存储结构即可,编写较复杂的单片机任务,显然较汇编更占优势,因此,可以说汇编是基础,C是单片机应用的升华,随着对单片机应用的深入,你会感觉更倾向与C,但在某些程序段,还离不开汇编的作用;而且,毕竟单片机C语言与标准C语言还是有差异的;不管怎样,写出更加高效的单片机程序才是最终目的。

使用特权

评论回复
19
icecut| | 2010-7-18 09:45 | 只看该作者
不要以为一句话在哪都有用。

这么说你就外行了。

另外一个帖子给你回复了。
从asm,c写到c++,java的人漂过

使用特权

评论回复
20
zq1987731| | 2010-7-18 10:06 | 只看该作者
To wzl-xx@163.com
汇编在教学时“了解”便足以,真正深入后汇编就是必须抛弃的部分,这年头产品研发玩的就是速度,“可重用”,“维护容易”等特点根本不会汇编所能比拟的,当然也有例外,某些4-bit的MCU根本就没C的环境,这就另当别论了。

很多“汇编高手”都追求语句上的省时,但真正的大牛们从不拘泥如此,他们追求的是“算法优化”,试想一下,初始化部分,用C需要20ms,用汇编需要18ms,开机仅执行一次,实际应用角度而言这有什么区别?
人的精力总是有限的,大牛们追求的是算法的高效,汇编高手们把大量时间浪费在了语句层面上,往往前者节省的是超越后者N个数量级的时间,因此真正的大到一定规模的程序,用C的效率将远高于汇编,一言以蔽之——高手的精力是有限的,难免顾此失彼

这里纠正一个观点:
I2C通信根本不要求精确定时,其作为同步通讯机制,通讯中出现了数秒的中断ISR,返回后通讯仍旧不会有任何错误,所谓的“延时”,仅仅是由于外设器件的接受处理速度跟不上,CPU不加延时则SCL频率必定过快导致外设来不及反应,有些器件要求标准400K速度,指的是比400K快它就处理不了,试试看用1Hz速度去操作,有问题你就好一锤子上去了。
所谓的单总线,像DS18B20,在中断中建立状态机机制,其实时性完全足以得到保证,很多人认为不可控,不是C的问题,是自身水平的问题

死机式延时——本人最反感的部分,至少我写的程序,20万行以上规模,全都采用定时器+状态机机制,绝对找不到一个delayms(x);,真要用的话,C的“精确死机式延时”做起来可是超级简单,keil中前后插2断点,设置晶振频率,语句数值上加加减减,DEBUG下1分钟就凑出一个指令周期误差都没有的延时出来!

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝