迷茫....为什么要用汇编进行Win32编程???

dizengrong 2008-10-20 07:29:16
最近在学习windows环境下的32位汇编程序设计,感觉很复杂,
学习进度非常的慢!中途又听别人贬低用汇编写Win32程序....
是啊,为什么要用汇编写呢?为什么别人用C语言写Win32程序呢(别人说用c来写容易些等好多的优点)?到底用汇编写Win32的意义何在呢?望有识之士指点迷津。
...全文
713 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
guetcw 2008-11-08
  • 打赏
  • 举报
回复
楼主可以看看这个论坛http://bbs.pediy.com/forumdisplay.php?f=4
xlt123 2008-11-06
  • 打赏
  • 举报
回复
学Win32汇编还是不要用微软的MASM
推荐Borland的TASM32
微软的语法,一堆 while,if,else
跟高级语言有区别吗?
函数调用时,栈是如何调整的?
临时变量是如何分配的?
跳转时,是以哪个标志位为条件?
还是不知道!
微软就是在愚弄我们!
sagitturs 2008-11-06
  • 打赏
  • 举报
回复
我觉得编程不在乎用什么语言。而是,在乎什么特性。现在很多语言可以混编。例如C可以调用汇编。
而且汇编让你了解很多计算机原理。让你对高级语言的特性有很多深入的理解。
而且汇编执行的速度,是其他语言不能比的。而且可以理解编程和数学模型到底有什么关系。
所以,我支持学习汇编。而且我觉得学程序必须要学汇编。
liangbch 2008-11-06
  • 打赏
  • 举报
回复
回31楼,在某些情况下,用汇编改写程序,确实可以做到比C语言快100%以上。这篇文章就给出一个汇编比C语言快300%的例子。阶乘之计算从入门到精通―入门篇之三汇编的威力
wangqr1984 2008-11-06
  • 打赏
  • 举报
回复
强弩之末势不能传鲁镐。这么多怨言,那就择时在学吧
xlt123 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 liangbch 的回复:]
回楼上,编程语言的主要功能就是为了编写程序用的,对一个具体的问题,编程越方便,越简单,效率越高,则这个编程语言越好。高级语言,各种API,各种组件,库,中间件就是为这个服务的。而汇编语言的缺点就是编程效率低,繁琐,可读性差,容易出错。MASM好好的平衡了编程效率和执行效率这个问题,具有汇编语言的数据操作功能强,控制硬件容易,又有具有高级语言的容易阅读,不容易出错的特点,给我们的编程和代码阅读带来极大的方…
[/Quote]

我是针对学习而言的。
而且,我也看不出MASM的宏有多么的编程效率,如果要效率,为什么不用VB,DELPHI
如果只是API调用,我实在看不出汇编比C的执行效率高在哪里。
看现在的教材,凡是用MASM写的,有不用INVOKE,WHILE ,IF,ELSE的么?
这纯粹是误导!

另,TASM与MASM是一种语言,都叫汇编,不同的只是编译器。
pangu9999 2008-11-06
  • 打赏
  • 举报
回复
引用: 汇编是计算机专业学习的课程,不是一般程序员必学的课程。学习汇编很大程度上不是为了用汇编写程序,主要是为了更好地理解 高级语言(计算机)真正的工作原理,也会对程序调试带来帮助。也是反向工程,编写病毒或者杀病毒,加密/减密,破解等技术的主要基础。

明白了。


liangbch 2008-11-06
  • 打赏
  • 举报
回复
回楼上,编程语言的主要功能就是为了编写程序用的,对一个具体的问题,编程越方便,越简单,效率越高,则这个编程语言越好。高级语言,各种API,各种组件,库,中间件就是为这个服务的。而汇编语言的缺点就是编程效率低,繁琐,可读性差,容易出错。MASM好好的平衡了编程效率和执行效率这个问题,具有汇编语言的数据操作功能强,控制硬件容易,又有具有高级语言的容易阅读,不容易出错的特点,给我们的编程和代码阅读带来极大的方便。如果你想搞明白原理,那么建议你做一个cpu,否则用汇编语言还是无法弄清 xor, add, mul 这些指令是如何实现的,还是无法弄清dos/bios/WINAPI 调用是如何工作的。
另外,如果你不喜欢MASM中的那些宏,你不是用好了,没有人强迫你,在MASM32中,使用裸的,原始的汇编指令一样可以编译通过,为什么要抱怨呢?学习编程最重要的是踏踏实实的学习,最忌的是整天讨论哪种语言好,哪种语言不好,这样很可能你哪种语言也学不会。


jin0819 2008-11-03
  • 打赏
  • 举报
回复
10楼和16的两位高手好厉害啊,你们说的太好了,其实如果要是研究硬件的话还是要用汇编的
不过以后可能会向c的方向发展的
dizengrong 2008-11-02
  • 打赏
  • 举报
回复
谢谢redtin的指点,你让我更明白了学它的目标了。
现在我已在努力学win32汇编了。
redtin 2008-11-01
  • 打赏
  • 举报
回复
LZ最初学习的动机是什么呢。
如果应付考试,那就嘿嘿嘿

大多数情况下,学汇编是为了反汇编。
如果你 当初的动机消失了,那就不必执着了,毕竟人的精力是有限的。
参见:


[Quote=引用 16 楼 liangbch 的回复:]
汇编是计算机专业学习的课程,不是一般程序员必学的课程。学习汇编很大程度上不是为了用汇编写程序,主要是为了更好地理解 高级语言(计算机)真正的工作原理,也会对程序调试带来帮助。也是反向工程,编写病毒或者杀病毒,加密/减密,破解等技术的主要基础。
[/Quote]

学习方法:
win32汇编就是折腾api,
先从c那里折腾明白了再来也好。
“调用约定”要看。。。
和dos相关的无视掉。

asmaj 2008-10-31
  • 打赏
  • 举报
回复
liangbch 老师的讲解深入人心,膜拜!
b2yond 2008-10-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 masterkill 的回复:]
- -#
对了,不知道你学汇编的方向是什么,BIOS?DRIVER?或者是其他,与硬体联系多就还是在DOS下做吧,如果不是倒关系不大,希望你坚持两年,然后就可以BS对你讲不要学这个的人^^y
对于你讲的意义何在,只能说~~~很多平时看来显而易见的事情原来不是那么理所当然,你会更多的了解什么是PC
用C,你可以count一下就显示结果(“为什么那样就能显示?”,“我也不知道,书上说的可以”)
用汇编,你才知道,哦,原来这样一句代码是由这么多细节构成的,才知道这些字符在内存中是怎样存取,又是怎样访问中断向量表取得中断服务程序来达到目的,这样你就豁然开朗了。[/Quote]
[Quote=引用 21 楼 codefox 的回复:]
学习汇编的目的就是能够更好的理解和利用其它语言,让你在程序与计算机之间很好的打交道!
[/Quote]

顶礼膜拜
createthefuture 2008-10-28
  • 打赏
  • 举报
回复
为了更好的学习破解!
codefox 2008-10-27
  • 打赏
  • 举报
回复
各层楼的看法都有见地,学习汇编的目的就是能够更好的理解和利用其它语言,让你在程序与计算机之间很好的打交道!
xiaopoy 2008-10-26
  • 打赏
  • 举报
回复
谁说汇编比C难了?
汇编不比C难,只是环境要求你可以在C上花费大量时间。
翻译汇编时就会非常深刻的意识到C的所谓“底层”,是C和汇编几乎可以一句一句的对应下来
这是其他高级语言远远不及的
不过C当初产生的原因就是为了更快捷编程。
用汇编你可以编的好,用C可以速度提高5倍。
当然,通过C还是通过汇编熟悉就是见仁见智的问题了
Kratos 2008-10-25
  • 打赏
  • 举报
回复
基本没啥用,最后就是反汇编的时候拿去改改参数什么的玩玩而已。
wgdegg 2008-10-25
  • 打赏
  • 举报
回复
liangbch的帖子应该算是总结性发言了.
楼主应该知道汇编语言的用处了.
学习汇编的痛苦和快乐就靠楼主自己去体会了.
dizengrong 2008-10-24
  • 打赏
  • 举报
回复
非常感谢大家的指导性意见!
我会努力的!
liangbch 2008-10-23
  • 打赏
  • 举报
回复
罗的书 是站在汇编的视角看win32编程的,站在这个视角,对windows 的运行机制更透彻,更深入。书中的有些章节,用C语言是说不清楚的。罗还告诉你,对于windows编程,不只是可用c编程,也可以用 masm32编程,当然汇编 编程比C要难(主要是繁琐,容易出错,不好调试),但masm32编程相对于通常的汇编,已经简单了不少了,书中的代码,简单易懂,不想一般天书般的汇编代码。

学习这本书,有两个目标,一是学会用汇编编写windows程序,当然,并不是劝你用汇编编程。2是学习windows编程,学会了这个,如果有c语言基础,也可以用这些知识进行C编程。

一般情况下,用汇编写windows程序不是一个好主意,特别是在工程实践中。但如果为了一些特殊的目的,如要求程序文件的大小不能太大,或者需要一些底层的操作,如病毒或者杀毒软件。

学习汇编是一个困难的任务,许多人半途而废,而大学生学的教课书,内容陈旧而枯燥。主要是讲解指令,用这些书的知识,只可学习汇编语言,却很难编出一个实用的程序。这些书主要讲几乎不再使用的16位指令,而很少将现在正在使用的32位指令。

罗的书 则和这些书大不相同。
1. 直接讲最新的masm32汇编,紧跟时代潮流,代码易懂,阅读起来很流畅。
2. 文笔比较优美,循序渐进,一边学习一般练习编程,有助于提高编程能力。
3. 在当前流行的window操作系统编程,这些知识可以马上派上用场,而不是学习永远不会用到的dos/bios编程。

汇编是计算机专业学习的课程,不是一般程序员必学的课程。学习汇编很大程度上不是为了用汇编写程序,主要是为了更好地理解 高级语言(计算机)真正的工作原理,也会对程序调试带来帮助。也是反向工程,编写病毒或者杀病毒,加密/减密,破解等技术的主要基础。




加载更多回复(15)

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧