打印

文不对题,谬之千里,**,贻笑大方

[复制链接]
楼主: 天雨粟
手机看帖
扫描二维码
随时随地手机跟帖
81
1dqmoon| | 2008-10-24 20:25 | 只看该作者 回帖奖励 |倒序浏览

程序界里争论多年的话题

今天又见到了~

小弟不才,斗胆两句

用asm还是c, 是要看情况和看人的吧?   空间不足,时间要求高,当然是汇编占优势; 程序巨大, 功能烦琐, 当然是c的天下.

如果情况同时允许asm和c,那就看个人爱好了.

使用特权

评论回复
82
jewson| | 2008-10-24 21:09 | 只看该作者

see see

受益匪浅~~~~

使用特权

评论回复
83
一从陶令| | 2008-10-24 22:02 | 只看该作者

几个书生之见!

无非是个软件工具而已,还在起劲讨论哪个好,真的忘了自己是干啥的?--就是一打工挣钱的!

真要是把学习当爱好的,早不用C了,都去开发D语言了!

使用特权

评论回复
84
bob.xue| | 2008-10-24 22:26 | 只看该作者

管它C还是asm

没有人打工,哪里来的老板。

这个社会的财富,是大家共同创造的,做老板也不要忘本哪,多多做善事,回馈社会才是道。

不管你是老板还是打工仔,不管你是学会编还是学C,不管你喜欢美元还是*币,这跟我有什么关系? 
唯一有关系的就是我们有共同的爱好共同沟通的语言(管它C语言还是asm)。

使用特权

评论回复
85
天雨粟|  楼主 | 2008-10-25 13:03 | 只看该作者

帖子认真拜读了,感谢各位老师嘉惠后学的苦心

深层次的问题我是不敢妄为置喙的。
我不是单片机从业人员,不知业内具体情况,是否分为软硬两途?若尔,则吃硬的钻汇编,吃软的钻C/C++,紧密配合,通力协作,岂非一双两好?
但对于有心从业的人来说,若只会其中一样,对于就业的前景,则会心有戚戚,若将不保,总得软硬都懂一点,前景才会宽一些。
如果是这样,则他就要钻汇编,何则?汇编是描述硬件的语言,或者C也可以描述硬件,但这样的书现今没有;同时他也要钻C甚至C++,何则,用C来开发应用软件要比用汇编轻松得多。善乎邓苗老师所言:用汇编开发程序要支付更高的软件成本。
当然,这只是就“用”而言,若就“体”而论,即终极的高低优劣,初学层次者非敢言说。或者到了一定境界,则“如人饮水,冷暖自知”罢!
好了,对于谋食人员,弄弄汇编,不是“无事”,学得过程中,需要到坛子里来请教,并非是主张“复汇编之古”,碰到好的汇编算法,贴出来“奇文其赏析”,也并非是出于为汇编张目。版主程序老师说:可以把玩,不可入魔。把握住度,斯可矣!

使用特权

评论回复
86
hotpower| | 2008-10-26 09:15 | 只看该作者

肯定一点:嵌入式C语言编程开发要快捷的多~~~

你只需掌握芯片的寄存器即可编程,因为C语言是过程语言,它和机器无关。

这也意味着不需花过多的精力去啃每种芯片的汇编指令集。

只要知道其IO读写的操作,模块控制及地址的访问即可开始编写代码。

嵌入式编程与PC基于界面的编程方法有很大的差异,故一般的嵌入式C语言编程

都需要C的启动代码,它在很多编译器上都是汇编书写的,现在的行情有所变化。

因为启动代码主要是由中断向量表和复位中断程序组成,后者最后跳入C的main().

所以近来都将中断向量表认为是C语言的数组,故也就可用C语言完全替换了启动代码了,这已成为一种趋势。

启动代码里由于全是与机器有关的代码,有时用C语言很难表述,且有时需要严

格的时序,所以有些编译器暂时还无好对策,故还以汇编书写。

使用特权

评论回复
87
天雨粟|  楼主 | 2008-10-26 10:10 | 只看该作者

感谢hotpower前辈的指导

是的,用C开发单片机程序,一般需要添加STARTUP.A51甚至INIT.A51这两个汇编语言源文件,需要根据具体硬件情况,对其进行适当的修改.这个例子说明,如果毫无汇编的概念,用C开发单片机程序也是空谈.

KEIL C51是我顶礼膜拜的神器,崇拜归崇拜,汇编的基础也不感丢!

使用特权

评论回复
88
hotpower| | 2008-10-26 10:28 | 只看该作者

别感谢为好~~~楼主的汇编把21ic引入了一场大战~~~

实际俺已不太用51了,甚至Keil已用烦~~~改用IAR和CCS.

而且几乎都是C++编程。除了51和PIC外全部是清一色的C++.

开始看到楼主的精巧汇编,感觉并不精细,故随手写了一个~~~

没想到引发了一场AC大战~~~

俺主要是“就事论事”,因为本主题是汇编的题目,那么俺已汇编“会友”

本“无可厚非”~~~

因为俺用自己的解答“战胜”了楼主的前辈~~~

而且不给任何地球人已挑战的机会~~~

这个老A高手邓苗同志最为清楚~~~实际上他也会给出此答案的~~~

因为本命题俺的解答是唯一的,这是C所不能办到的~~~这也是A之乐趣~~~

总说俺玩弄技巧,俺否认~~~

这是一道除法的特例,实际只能算移位操作,就看谁移位少~~~

因为右移三位后,原低3位实际就没了(and 0xf8),此时将高3位移入(or)

才是正解~~~

这应该是个很自然的思维方式,根本无技巧可言~~~

使用特权

评论回复
89
天雨粟|  楼主 | 2008-10-26 11:28 | 只看该作者

前辈辛苦了,

网友却是幸运的,既欣赏了您妙参造化的汇编,又聆听了您及所长老师抉微发隐的宏论,受益多多,感谢不忘!

使用特权

评论回复
90
xc_cz| | 2008-10-27 13:26 | 只看该作者

偷偷问一下

SWAP 指令什么意思?

使用特权

评论回复
91
hotpower| | 2008-10-27 13:50 | 只看该作者

高低4位交换

使用特权

评论回复
92
HWM| | 2008-10-27 15:17 | 只看该作者

等效移四位(左右理解都可),这里就是利用了其移位功效

使用特权

评论回复
93
dengm| | 2008-10-27 20:25 | 只看该作者

51 的四位(半字节 nibble) 指令有:

    SWAP A  
    XCHD A, @R0
    XCHD A, @R1
    (DA A) ?

16bits 的指令有:
    MOV DPTR, #TAB_2

使用特权

评论回复
94
110xia| | 2008-10-28 09:03 | 只看该作者

牛人啊。

中国市场为什么这么烂,”牛“太多了!
完整的实现功能就可以了,重要的是要作出有创意的新东西。

使用特权

评论回复
95
ilaohu| | 2008-10-29 09:39 | 只看该作者

大家好

我认为,完全没必要说哪个好,看产品是否适合而已。如果用ROM为512字节的芯片的话还是汇编好一点,当然用C++也没人拦着你,只要能实现功能?

使用特权

评论回复
96
tcc8073| | 2008-10-29 12:55 | 只看该作者

能用,实用,好用,够用

能用,实用,好用,够用才是务实的态度,每天讨论有什么意思,人家做汇编的一个月4W RMB,做C也有4000RMB的,倒过来也有,没有必要非得分个高低,给那么高工资,我想还是我前面说的四用原则

使用特权

评论回复
97
bobo1| | 2008-10-30 14:36 | 只看该作者

关键是能不能养家糊口啊,高低已经没有价值

使用特权

评论回复
98
lanwuya| | 2008-10-30 15:23 | 只看该作者

难道非得把楼盖到100?,,,

我喜欢看天雨粟把工程问题文绉绉地表达出来,别有一番风味!

使用特权

评论回复
99
john_light| | 2008-10-30 21:24 | 只看该作者

今天比较无聊

如果翻了就好玩

使用特权

评论回复
100
天雨粟|  楼主 | 2008-11-1 10:14 | 只看该作者

回100楼

有所不足,不敢不勉!
其实我更喜欢hotpower前辈诗一样的网文,这才是咱们工程人的文字本色.

使用特权

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

本版积分规则