汇编学习从入门到精通 step by step

本文分享了一位程序员自学汇编语言的经历,从16位到32位再到64位汇编,介绍了多本推荐书籍及在线资源,并给出了学习建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Cracker,一个充满诱惑的词。别误会,我这里说的是软件破解,想做骇客的一边去,这年头没人说骇客,都是“黑客”了,嘎嘎~


公元1999年的炎热夏季,我捧起我哥留在家的清华黄皮本《IBM-PC汇编语言程序设计》,苦读。一个星期后我那脆弱的小心灵如玻璃般碎裂了,为了弥补伤痛我哭爹求妈弄了8k大洋配了台当时算是主流的PC,要知道那是64M内存!8.4G硬盘啊!还有传说中的Celeon 300A CPU。不过很可惜的是在当时那32k小猫当道的时代,没有宽带网络,没有软件,没有资料,没有论坛,理所当然我对伟大的计算机科学体系的第一步探索就此夭折,此时陪伴我的是那些盗版光盘中的游戏,把CRACK_XXX文件从光盘复制到硬盘成了时常的工作,偶尔看到光盘中的nfo文件,心里也闪过一丝对破解的憧憬。

上了大学后有网可用了,慢慢地接触到了一些黑客入侵的知识,想当黑客是每一个充满好奇的小青年的神圣愿望,整天看这看那,偷偷改了下别人的网页就欢喜得好像第一次偷到鸡的黄鼠狼。

大一开设的汇编教材就是那不知版了多少次的《IBM-PC汇编语言程序设计》,凭着之前的那星期苦读,考试混了个80分。可惜当时头脑发热,大学60分万岁思想无疑更为主流,现在想想真是可惜了宝贵的学习时间。

不知不觉快毕业了,这时手头上的《黑客防线》,《黑客X档案》积了一大摞,整天注来注去的也厌烦了,校园网上的肉鸡一打一打更不知道拿来干什么。这时兴趣自然转向了crack,看着杂志上天书般的汇编代码,望望手头还算崭新的汇编课本,叹了口气,重新学那已经忘光了的汇编语言吧。咬牙再咬牙,看完寻址方式那章后我还是认输,不认不行啊,头快裂了,第三次努力终告失败。虽然此时也可以爆破一些简单的软件,虽然也知道搞破解不需要很多的汇编知识,但我还是固执地希望能学好这门基础中的基础课程。

毕业了,进入社会了,找工作,上班,换工作成了主流旋律,每天精疲力尽的哪有时间呢?在最初的中国移动到考公务员再到深圳再到家里希望的金融机构,一系列的曲折失败等待耗光了我的热情,我失业了,赋闲在家无所事事,唯一陪伴我的是那些杂志,课本,以及过时的第二台电脑。我不想工作,我对找工作有一种恐惧,我靠酒精麻醉自己,颓废一段日子后也觉得生活太过无聊了,努力看书考了个CCNA想出去,结果还是被现实的就业环境所打败。三年时间,一无所获。

再之后来到女朋友处陪伴她度过刚毕业踏入社会工作的适应时期,这段时间随便找了个电脑技术工作,每月赚那么个几百块做生活费。不过这半年让我收获比较大的就是时间充裕,接触到了不少新东西,我下定决心要把汇编学好,这时我在网上看到了别人推荐的王爽《汇编语言》,没抱什么希望在当当网购了人生中的第一次物,19块6毛,我记得很清楚,呵呵。

废话终于完了,感谢各位能看到这里,下面进入正题吧。


16位汇编

对于一个汇编初学者,首先必看的就是王爽老师的这本《汇编语言》,虽然它不是很完整,虽然它有一些错漏,虽然它需要一些前置知识(详见书籍前言部分,前言一定要仔细看!),但是王爽老师独特的教学理念构造了这本循序渐进的书,我们从中可以抛开对汇编语言的畏惧心态,一步一步的深入进去,更可喜的是在这本书里我们可以学到宝贵的底层编程意识和思想,这对于初学者来说是最为重要的,掌握了意识思想,进一步学习下去也不会再艰难。大家学习的时候一定要严格按照“前言”的要求去做,这样才能有最好的效果。


半个月,就半个月,我已经看完了书,我可以自信地宣布:我掌握汇编语言了。虽然比较基础,但想想我那六年半时间,想想我那几次痛苦的尝试,心中无端生出一丝怨恨,为什么当年没有这本书呢,否则我的成就绝不会是现在这样。我的学习过程是先看完一遍书,做了一些习题(当时没电脑上机操作),现在有了新的电脑了,便重新看一遍,把所有的上机操作和编程练习都完成了(除了最后的磁盘操作外)。

 

好书推荐:
1.《80x86汇编语言程序设计教程》杨季文编著,清华黑皮本。本书可以当作进一步深入学习的教材。

2.《The Art of Assembly Language》 [英文版],经典著作。

 

 

32位汇编

虽然上面学到的知识已经可以应付大学要求,但是16位汇编始终还是落后于时代了,所以我们要学习32位汇编,这里首推的是《Intel汇编语言程序设计(第4版)》,可以这样说,有了这本书,你就可以不必看别的32位汇编教材了。不过这本书的内容比较压缩,信息量大,需要时常翻阅复习。本书适合初学者及从16位转向32位汇编的人们。本书光盘中带有例子程序和作者Kip Irvine写的几个链接库,极大地简化了一些烦琐的基本操作,同时附带的Masm 6.15和编译链接批处理程序也可以用在王爽老师的《汇编语言》学习里,不过我建议不要安装光盘里的TextPad来编写源代码,个人推荐使用EditPlus。
认真学完这本书,应该可以对付一般的破解工作了,起码我是能进行一般的算法分析推出注册码咯。

好书推荐:

80x86保护模式系列教程 [中文版] 作者:李彦昌。本书可以可以当作进一步深入学习的教材。


64位汇编

虽然现在我们的系统主要还是WinNT系列,但是64位的CPU已经普及市场,64位的操作系统Vista也在不少电脑里安家落户,64位汇编语言学习不再是前沿研究。可惜我手头上的资料太少,无法作进一步介绍,各位高手看到这里还请指点。

相关资料:《Intel 64位CPU指令集及编程方法》电子文档。

相关链接:
1.
开始进行 64 位 Windows 系统编程之前需要了解的所有信息
http://www.microsoft.com/china/MSDN/library/Windev/64bit/issuesx64.mspx?mfr=true

2.
Moving to Windows x64
http://www.ntcore.com/Files/vista_x64.htm

 

 


Win32汇编

单纯的汇编似乎除了在底层开发,嵌入式开发以及高级语言内嵌汇编外没有多少地方使用了。为了在实际应用中更大地发挥,我们必须学习Win32汇编。这方面的资料比较少,国内的当然就是罗云彬的《Windows环境下32位汇编语言程序设计 第二版》了。hoho,大部头著作啊,可以当成防身行暴武器哦。

好书推荐:
1.
《Iczelion的Win32汇编教程》,网络上最初的系统Win32教程,罗云彬那书大部分内容都是从里面编著出来的,呵呵。

2.《Kernel Mode Drivers教程中文版》,Four-F的驱动开发教程,不论开不开发驱动还是得看看。

 

 

如果你已经精通上面罗列的东西,觉得有点不胜寒了,建议还是进行一下流行的哲学研究吧。

好书推荐:
1.
朱邦复的《组合语言之艺术》,作者的经验可以让我们的效率变得更高。

2.
《汇编语言与禅-Zen Of Assembly Language》,我还没看,哪位有空慢慢研究吧。

 

 

个人建议,虽然上面的书籍都能找到电子书,但是我认为上面列出的主要的三本书最好还是买纸质实体书吧,主要便于阅读和翻查,而且这么好的书,你能不支持一下作者吗?正版系统买不起而已,正版书籍我们还是扛得住的,小小一百几十块钱,少抽几包烟就够了。况且实体书读起来的感觉就是比电子书要好。如果您更喜欢阅读电子版本,那么当这段是废话略过也罢。

 

 

学习难免遇到一时难于解决的问题,网络交流也是必须的,介绍一下我认为不错的几个网站:

汇编语言学习论坛:
http://www.asmedu.net/forum.jsp
这里有王爽《汇编语言》讨论区,好像网站没开多久,大家凑合看看吧。


《Intel汇编语言程序设计(第4版)》作者的网站:
http://kipirvine.com/asm/4th/index.html
这个链接是关于书本的,更多内容请自己看首页。


罗云彬的编程乐园:
http://asm.yeah.net
上面有不少好东西下载哦。


AoGo汇编小站
http://www.aogosoft.com/
东西不少,论坛也还可以。


80x86汇编小站
http://www.x86asm.com/


优快云论坛汇编板块:
http://community.youkuaiyun.com/Expert/ForumList.asp?typenum=1&roomid=1703


国外的著名汇编论坛:
http://www.asmcommunity.net/board/index.php
http://masm32.com/board/


MSDN当然也不能少:
http://msdn2.microsoft.com/zh-cn/default.aspx

顺便广告广告:
我的博客http://hi.baidu.com/hkbyesthttp://blog.youkuaiyun.com/hkbyest/里也有我平时收集的一些资料和代码,有空捧捧场交流一下。

 


总结

学习汇编或许不容易,而且很枯燥,但是作为计算机科学体系中的重要基础,掌握汇编除了进行破解外还有许多优点,最简单地说,这么底层这么枯燥这么难的你都能学好,那些高级的人性化的还在话下吗?希望本文能给广大汇编学习者一些帮助,谢谢~

课程介绍 第1章 预备知识  1.1 汇编语言的由来及其特点   1 机器语言   2 汇编语言   3 汇编程序   4 汇编语言的主要特点   5 汇编语言的使用领域  1.2 数据的表示和类型   1 数值数据的表示   2 非数值数据的表示   3 基本的数据类型  1.3 习题 第2章 CPU资源和存储器  2.1 寄存器组   1 寄存器组   2 通用寄存器的作用   3 专用寄存器的作用  2.2 存储器的管理模式   1 16位微机的内存管理模式   2 32位微机的内存管理模式  2.3 习题 第3章 操作数的寻址方式  3.1 立即寻址方式  3.2 寄存器寻址方式  3.3 直接寻址方式  3.4 寄存器间接寻址方式  3.5 寄存器相对寻址方式  3.6 基址加变址寻址方式  3.7 相对基址加变址寻址方式  3.8 32位地址的寻址方式  3.9 操作数寻址方式的小结  3.10 习题 第4章 标识符和表达式  4.1 标识符  4.2 简单内存变量的定义   1 内存变量定义的一般形式   2 字节变量   3 字变量   4 双字变量   5 六字节变量   6 八字节变量   7 十字节变量  4.3 调整偏移量伪指令   1 偶对齐伪指令   2 对齐伪指令   3 调整偏移量伪指令   4 偏移量计数器的值  4.4 复合内存变量的定义   1 重复说明符   2 结构类型的定义   3 联合类型的定义   4 记录类型的定义   5 数据类型的自定义  4.5 标号  4.6 内存变量和标号的属性   1 段属性操作符   2 偏移量属性操作符   3 类型属性操作符   4 长度属性操作符   5 容量属性操作符   6 强制属性操作符   7 存储单元别名操作符  4.7 表达式   1 进制伪指令   2 数值表达式   3 地址表达式  4.8 符号定义语句   1 等价语句   2 等号语句   3 符号名定义语句  4.9 习题 第5章 微机CPU的指令系统  5.1 汇编语言指令格式   1 指令格式   2 了解指令的几个方面  5.2 指令系统   1 数据传送指令   2 标志位操作指令   3 算术运算指令   4 逻辑运算指令   5 移位操作指令   6 位操作指令   7 比较运算指令   8 循环指令   9 转移指令   10 条件设置字节指令   11 字符串操作指令   12 ASCII-BCD码调整指令   13 处理器指令  5.3 习题 第6章 程序的基本结构  6.1 程序的基本组成   1 段的定义   2 段寄存器的说明语句   3 堆栈段的说明   4 源程序的结构  6.2 程序的基本结构   1 顺序结构   2 分支结构   3 循环结构  6.3 段的基本属性   1 对齐类型   2 组合类型   3 类别   4 段组  6.4 简化的段定义   1 存储模型说明伪指令   2 简化段定义伪指令   3 简化段段名的引用  6.5 源程序的辅助说明伪指令   1 模块名定义伪指令   2 页面定义伪指令   3 标题定义伪指令   4 子标题定义伪指令  6.6 习题 第7章 子程序和库  7.1 子程序的定义  7.2 子程序的调用和返回指令   1 调用指令   2 返回指令  7.3 子程序的参数传递   1 寄存器传递参数   2 存储单元传递参数   3 堆栈传递参数  7.4 寄存器的保护与恢复  7.5 子程序的完全定义   1 子程序完全定义格式   2 子程序的位距   3 子程序的语言类型   4 子程序的可见性   5 子程序的起始和结束操作   6 寄存器的保护和恢复   7 子程序的参数传递   8 子程序的原型说明   9 子程序的调用伪指令   10 局部变量的定义  7.6 子程序库   1 建立库文件命令   2 建立库文件举例   3 库文件的应用   4 库文件的好处  7.7 习题 第8章 输入输出和中断  8.1 输入输出的基本概念   1 I/O端口地址   2 I/O指令  8.2 中断   1 中断的基本概念   2 中断指令   3 中断返回指令   4 中断和子程序  8.3 中断的分类   1 键盘输入的中断功能   2 屏幕显示的中断功能   3 打印输出的中断功能   4 串行通信口的中断功能   5 鼠标的中断功能   6 目录和文件的中断功能   7 内存管理的中断功能   8 读取和设置中断向量  8.4 习题 第9章 宏  9.1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值