有必要深入学习汇编语言吗?

duanjiayaocun 2011-11-09 11:48:24
我现在正在从事VC开发,最近发现自己对内存分配、进制转换和编码格式不是太熟悉,我改怎样提高自己呢?

尤其是一看到以为操作这些东西,我就头疼...

学习汇编会加深我对这些东西的理解吗?有必要深入学习汇编吗?还是说只要粗略的学习一下汇编,对其思想有一个大致的认识就行?

如果需要学习汇编,请大家根据我目前的情况给我推荐一本适合初学者的书籍吧,谢谢!
...全文
724 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamnobody 2011-11-10
  • 打赏
  • 举报
回复
只要懂内存分布,懂全部寄存器用法,懂全部指令的用法。写个计算器之类的小项目,应该就行了。不用太深入的。二进制是必须要懂的。不知道什么书好,因为我也是菜鸟。。
赵4老师 2011-11-10
  • 打赏
  • 举报
回复
计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
rendao0563 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhao4zhong1 的回复:]

推荐使用WinHex软件查看文件原始字节内容。

对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。

为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的一维二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据……
[/Quote]

WinHex可以在我空间下载到.

http://download.csdn.net/user/rendao0563

赵4老师 2011-11-10
  • 打赏
  • 举报
回复
推荐使用WinHex软件查看文件原始字节内容。

对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。

为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的一维二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。
赵4老师 2011-11-10
  • 打赏
  • 举报
回复
内存分配——操作系统之内存管理
进制转换——计算机组成原理
编码格式——各种规定而已(ASCII、GB2312、GBK、Unicode、BIG5……)
编码解码——各种变换而已(UrlEncode、Base64、LWZ、Zip……)

VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
asmilemyself 2011-11-10
  • 打赏
  • 举报
回复
王爽 + C++反汇编与逆向分析技术揭秘 入门加爆破,你想怎么着就怎么着,我有这书但是没时间看
terranflash 2011-11-10
  • 打赏
  • 举报
回复
汇编不需要深入,能看懂大部分汇编代码就行了
ryanxgyang 2011-11-10
  • 打赏
  • 举报
回复
可以先了解一下.
毕竟现在真正写汇编的机会比较少了,
但是调试的时候,如果能看点汇编的话,会有意外收获.

对于C语言来说"没学过汇编的人不能真正掌握C语言的真谛".

做VC上层的工作,汇编用的可能就比较少了.
做逆向分析,破解的时候,需要汇编.

你可以用OD看看你用VC生成的exe


入门的话 推荐王爽的书.
Zeroo_7 2011-11-10
  • 打赏
  • 举报
回复
没必要!
Zeroo_7 2011-11-10
  • 打赏
  • 举报
回复
没必要!
wangyang0726 2011-11-10
  • 打赏
  • 举报
回复
我觉得 爱好最重要啊
PG 2011-11-10
  • 打赏
  • 举报
回复
走高层的话,你不必纠结汇编,初步了解即可,如果你认为自己精力很旺盛的话深入一些也无妨,不过每个领域都是无底洞,这个你得自己衡量下利弊。
luciferisnotsatan 2011-11-10
  • 打赏
  • 举报
回复
有必要了解下。
至于是否要深入,看想从事哪方面工作了。
zzcmx2008 2011-11-10
  • 打赏
  • 举报
回复
大部分看懂就可以了
寻找自我 2011-11-10
  • 打赏
  • 举报
回复
正在学。。
汇编语言 ----王爽挺好。
ouen333 2011-11-10
  • 打赏
  • 举报
回复
加油吧,少年
hnhui520 2011-11-10
  • 打赏
  • 举报
回复
一直都想学,可也一直在找借口。
self001 2011-11-10
  • 打赏
  • 举报
回复
汇编:逆向 调试程序 单片机等;
学了当然好,不过不是那么容易的!
我也想学,但时间………………
crakme 2011-11-10
  • 打赏
  • 举报
回复
汇编不需要深入,能看懂大部分汇编代码就行了
《C语言高级实例解析》本书特点: ·以实例为主。本书采用实例讲解的方式,先介绍必要背景知识,之后是加注释的源码,再给出分析和改进方向。 ·涉及的知识面广。从内存分配,到串行、并行口编程,再到界面开发,几乎含盖了C编程的方方面面。 ·实用性强。实例均有具体项目中的源代码,实例非常具有参考价值,而且很多实例可以在新的项目中使用。 ·本书的源代码都可在附送的光盘中找到,读者可以将代码拷贝到自己的编译器中,进行修改、编译使用。 ·在本书光盘中赠送了大量其他高级实例。 C语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。在系统开发,特别是操作系统、底层开发中,C语言的效率是其他编程语言难以企及的。C语言较之汇编语言的普及和易用性决定了在强调效率的开发过程中将采用C语言。 本书以实例讲解为主线,对C编程做了深入和具体的探讨。涉及的知识面广,从内存分配,到串行、并行口编程,再到界面开发、动画和高级应用,几乎涵盖了C语言编程的方方面面。通过对本书的学习,对C语言的高级编程,将育一个深刻的理解和掌握,而不仅局限于简单的数据结构和算法。 本书既可以供一般读者作为深入学习C语言的教材,也可以作为工程人员的参考手册。本书适合中、高级读者,学习过C语言语法的初级读者也可以通过学习本书快速成长为C语言的编程高手。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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