具体描述
《汇编语言(第2版)》是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的思想精心创作了《汇编语言(第2版)》。《汇编语言(第2版)》具有如下特点:采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在深入本质的层面上对汇编语言进行讲解;对关键环节进行深入的剖析。
作者简介
王爽,著名计算机科学教育家,哲学家。1 975年出生于黑龙江省齐齐哈尔市。1997年毕业于宁夏大学计算机及应用专业。2007年开创了可行性哲学理论体系。自1999年以来,陆续提出并实践了知识屏蔽、线索化、多元环境等一系列对高等专业人才培养具有重要意义的教学与教育思想
目录信息
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1 通用寄存器
2.2 字在寄存器中的存储
2.3 几条汇编指令
2.4 物理地址
2.5 16位结构的CPU
2.6 8086cPu给出物理地址的方法
2.7 “段地址xl6+偏移地址=物理地址”的本质含义
2.8 段的概念
2.9 段寄存器
2.10 CS和IP
2.11 修改CS、IP的指令
2.12 代码段
实验1 查看CPU和内存,用机器指令和汇编指令编程
第3章 寄存器(内存访问)
3.1 内存中字的存储
3.2 DS 31:1[address]
3.3 字的传送
3.4 ITIOV、add、sub指令
3.5 数据段
3.6 栈
3.7 CPU提供的栈机制
3.8 栈顶超界的问题
3.9 puSh、pop指令
3.10 栈段
实验2 用机器指令和汇编指令编程
第4章 第一个程序
4.1 一个源程序从写出到执行的过程
4.2 源程序
4.3 编辑源程序
4.4 编译
4.5 连接
4.6 以简化的方式进行编译和连接
4.7 1.exe的执行
4.8 谁将可执行文件中的程序装载进入内存并使它运行?
4.9 程序执行过程的跟踪
实验3 编程、编译、连接、跟踪
第5章 【BX】和loop指令
5.1 【BX】
5.2 Loop指令
5.3 在Debu9中跟踪用loop指令实现酮循环程序
5.4 Debu9和汇编编译器masm对指令的不同处理
5.5 loop和【bx】的联合应用
……
第3章 寄存器(内存访问)
第4章 第一个程序
第5章 [BX]和loop指令
第6章 包含多个段的程序
第7章 更灵活的定位内存地址的方法
第8章 数据处理的两个基本问题
第9章 转移指令的原理
第10章 CALL和RET指令
第11章 标志寄存器
第12章 内中断
第13章 int指令
第14章 端口
第15章 外中断
第16章 直接定址表
第17章 使用BIOS进行键盘输入和磁盘读写
综合研究
附注
· · · · · · (收起)
读后感
无论是对于反病毒工程师还是逆向分析爱好者来说,汇编都是他们必学的知识,可以说汇编是一切逆向研究的根本。不管是使用OllyDbg还是IDA Pro,又或者是其它的一些反汇编工具,我们进行逆向分析的时候,是只能查看目标程序的汇编代码的,通过分析其汇编代码,来推测程序...
也许和很多人不同,我看这本书实际上并不是去学习一门编程语言,而是借此了解计算机底层,并为之后的操作系统和编译器学习和编写做点基础准备。 书上的习题大部分都没看,只是看了正文以及提到的一些例子。但是书的内容确实是不错的,推荐。
我自己对高级语言算是比较熟悉了,也写过了几个项目。想学汇编但是苦于一直无法下口(自学)。看了那些个经典的教材(《80x86汇编语言程序设计》等等),十页纸都几乎翻不过去,满页的ax,bx,cx,dx,ds,ss,es,然后出现的一个个解释……疯掉了,怎么都塞不进脑子里……问计算机系...
这本书由浅入深,一步步把枯燥的汇编语言解释的如此通俗易懂,非常适合初学者去当初学的教材,本人是计算机专业学生,学校教材是IBM汇编语言那本,非常晦涩难懂,感觉就是把一堆枯燥的东西灌输给你,而这本汇编语言让我感觉我是在学习而不是在被灌输
国人出版的书籍,总是感觉看起来像是读书笔记,总是从一个高手的角度来系统讲解一门课程——这本书除外。 这本书在知识的引入上,始终秉承一个原则“够用即可”,我们是为了完成一个功能,所以学习相关的语法,无关的东西则被放在一边。当然,作者是精心组织过文章内容的,不...
用户评价
这本书的装帧设计着实让人眼前一亮,封面那种深邃的蓝色调,配上烫金的字体,拿在手里沉甸甸的,很有分量感。我原本以为这种老牌的经典教材会是那种刻板的黑白印刷,但没想到内页的排版和图表的绘制都做了非常现代化的调整。特别是那些逻辑电路图和寄存器结构的示意图,色彩区分得非常到位,即便是初次接触汇编语言这种偏底层的概念,也能迅速抓住重点。翻开第一页,一股油墨的清香混合着纸张的质感扑面而来,这比很多追求廉价的教材要用心得多。不过,初看目录时,我有点小小的失落,因为我对某个特定处理器架构的深入探讨内容期待较高,但这本书的覆盖面似乎更偏向于基础概念的建立和通用指令集的讲解,这对于想快速上手特定硬件优化的工程师来说,可能需要后续再辅以更专业的技术手册。但从教材的普及性和入门友好度来看,这种取舍是合理的,它更像是一扇坚固的门,把你领进这个领域的大门,而不是直接把你推入最深的沼泽。整体来说,对实体书的品质我非常满意,这绝对是一本值得收藏的参考资料。
我非常欣赏作者在章节末尾设置的那些“思考题”和“扩展阅读建议”。这些部分往往不是直接给出答案,而是引导我们去思考更深层次的问题,比如指令流水线对代码执行效率的影响,或者在不同内存模型下栈帧的构建差异。这些问题迫使我放下书本,打开我的调试器,自己动手去验证和探索。这种从理论到实践的完美闭环设计,是这本书价值的集中体现。不过,有一点让我感到略微遗憾,那就是考虑到技术更新的速度,这本书在涉及新型的向量指令集(如SSE/AVX)或更现代CPU特性时的篇幅显得相对有限。虽然核心原理不变,但现代高性能计算对这些新指令集的依赖日益增加,如果能用更多篇幅专门讨论如何高效利用这些现代工具,这本书的实用性无疑会大大增强。总体而言,它是一部坚实可靠的基石,为我们理解计算的本质打下了最牢固的基础,后续的进阶学习,也大多需要回溯到这本书中寻找最原始的逻辑起点。
阅读这本书的过程,让我对“抽象层级”有了更深刻的理解。在现代编程中,我们习惯于直接使用高级语言提供的各种便捷函数,仿佛我们忘记了计算机底层到底在如何工作。这本书像一个“去魔术化”的过程,它毫不留情地剥开了那些高级语言的“糖衣”,让你直面CPU内部的真实运作。我记得有一章专门讲解了标志寄存器的每一位分别代表什么含义,以及它们是如何被算术逻辑单元(ALU)的运算结果实时更新的。这种对细节的执着,让我重新审视了自己以往写下的那些看似完美的循环和条件判断语句——原来每一个“if”背后,都隐藏着一系列复杂的标志位检查和跳转指令。虽然学习过程是痛苦的,因为需要时刻在指令集手册和书本之间来回对照,但那种豁然开朗的感觉是无与伦比的。如果说这本书有什么遗憾,那就是它在某些特定的、特定于操作系统的底层交互部分描述得相对保守,可能需要读者自行去查阅操作系统的内核文档才能完全打通关节。
这本书的语言风格有一种老派学者的严谨和精确,几乎找不到任何模棱两可的表述。每一个术语的定义都经过了反复的推敲,力求达到语义上的绝对清晰。对于追求知识的纯粹性和准确性的读者来说,这简直是福音。例如,作者在区分“立即寻址”和“直接寻址”时,用了好几段文字,通过对内存访问时序的细致剖析,彻底消除了我过去长期以来对此二者模糊不清的认知。这种精确性在处理汇编这种对“位”和“地址”零容忍的领域至关重要。但坦白讲,这种极端的严谨性也带来了一定的阅读门槛。对于非计算机专业背景的读者,一开始可能会感到有些枯燥和晦涩,大量的术语堆砌需要时间和耐心去消化。它不适合那种“速成”的心态,更像是一部需要慢炖的浓汤,需要你细嚼慢咽,才能品出其中蕴含的深厚内功。我个人认为,这本书更像是为那些已经知道自己想探究计算机真相的求知者准备的“武功秘籍”。
这本书的叙事逻辑简直是教科书级别的教科书。作者在引言中就清晰地勾勒出了整个学习路径:从最基础的二进制和十六进制转换开始,逐步过渡到指令集的结构,然后是流程控制和内存寻址,最后才触及到更复杂的子程序调用和中断处理。这种循序渐进的方式,极大地缓解了初学者面对底层编程时的畏惧感。我尤其欣赏作者在解释“为什么”而不是仅仅“怎么做”上下功夫的讲解方式。比如,在讲解段寄存器和堆栈操作时,作者没有直接给出代码示例,而是先用一个非常形象的仓库管理员比喻,说明了为什么需要这些特殊的寄存器来管理有限的内存空间,这个比喻直到我现在写更高级的C++程序时还会时不时地蹦出来。然而,我必须指出,虽然理论讲解非常扎实,但实战案例的丰富度稍微欠缺了一点。对于那些已经有一定编程基础的读者,可能会觉得前几章的内容略显拖沓,恨不得快点跳到那些能直接操作硬件的激动人心的部分去。如果能在每个章节末尾增加一些富有挑战性的编程小任务,相信能进一步巩固读者的理解深度。
实验用
初学汇编必读教材
通俗易懂,极佳的入门书
嗯,今天开始看了,难得的一本国内作者所写的如此高评分的书籍,看了下目录和引言,目测4分以上update:0331//
最小的指令集5个指令:载入:将RAM的地址内容载入累加器;存储:将累加器内容存放到RAM的地址;清空累加器;累加器加1(重复-循环的原型;如果累加器为0,跳转到RAM中的X地址(分支-if的原型 -选择)。CPU对数据进行读写三个信息:地址,控制,数据信息。取指令,指令解码,执行指令,存储结果,循环.最终运行程序的是CPU,我们用汇编语言编程的时候,必须要从CPU的角度来考虑问题,对CPU来说,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受CPU寻址能力的限制,这个逻辑存储器就是我们所说的内存地址空间