文档介绍:简明x86汇编语言教程(1)
疯狂代码/ ĵ:http://assembler/
第○章写在前面
我不想夸大或者贬低汇编语言但我想说汇编语言改变了20世纪历史和前辈相比我们这代编程人员足够幸福
我们有各式各样编程语言我们可以操作键盘、坐在显示器面前甚至使用鼠标、语音识别我们可以使用键盘、鼠
标来驾驭“个人计算机”而不是和群人共享台使用笨重继电器、开关去操作巨型机相比的下我们前辈不得不使
用机器语言编写他们甚至没有最简单汇编来把助记符翻译成机器语言而我们可以从上千种计算机语言中选择我
们喜欢种而汇编虽然不是种“常用”具有“快速原型开发”能力语言却也是我们可以选择语言中种
每种计算机都有自己汇编语言——没必要指望汇编语言可移植性选择汇编意味着选择性能而不是可移植或
便于调试这份文档中讲述是x86汇编语言此后“汇编语言”词如果不明示则表示ia32上x86汇编语言
汇编语言是种易学却很难精通语言回想当年我从初学汇编到写出第个可运行只用了不到4个小时;然而直到
今天我仍然不敢说自己精通它编写快速、高效、并且能够让处理器“很舒服地执行”是件很困难事情如果利用
业余时间学习通常需要2-3年时间才能做到这份教材并不期待能够教给你大量汇编语言窍门技巧对于读者来说
x86汇编语言"就在这里"然而不要僵化地局限于这份教材讲述内容它只能告诉你汇编语言是“这样回事”学好汇
编语言更多要靠个人创造力于悟性我可以告诉你我所知道窍门技巧但肯定这是不够位对我编程生涯产生过重要
影响人曾经对我说过这么句话:
写汇编语言不是汇编语言最难部分创新才是
我想愿意看这份文档人恐怕不会问我“为什么要学习汇编语言”这样问题;不过我还是想说几句:首先汇编
语言非常有用我个人主张把它作为C语言先修课程通过学习汇编语言你可以了解到如何有效地设计数据结构让计
算机处理得更快并使用更少存储空间;同时学习汇编语言可以让你熟悉计算机内部运行机制并且有效地提高调
试能力就我个人经验而言调试个非结构化困难程度要比调试个结构化难度高很多“结构化”是以牺牲运行效率
来提高可读性和可调试性这对于完成般软件Software工程编码阶段是非常必要然而在些地方比如硬件驱动、操
作系统底层或者中经常需要执行代码结构化设计这些优点有时就会被它低效率所抹煞另外如果你想真正地控制
自己只知道源代码级调试是远远不够
浮躁人喜欢说用C写足够了甚至说他不仅仅掌握C而且精通STL、MFC我不赞成这个观点掌握上面那些是每
个编程人员都应该做到然而C只是我们"常用"种语言它不是编程全部低层次开发者喜欢说嘿C是多么强大它可以
做任何事情——这不是事实便于维护、调试这些确实是我们追求目标但是写不能仅仅追求这个目标我们最终目
是满足设计需求而不是个人非理性理想
这份教材适合已经学习过某种结构化设计语言读者其内容基于我在1995年给别人讲述汇编语言时所写讲义
当然如大家所希望它包含了最新处理器所支持特性以及相应内容我假定读者已经知道了设计些基本概念没有这
些是无法理解汇编语言设计;此外我希望读者已经有了比较良好设计基础如果你缺乏对于结构化设计认识编写
汇编语言很可能很快就破坏了你结构化编程习惯大大