具体描述
本书以8086/8088为主介绍了汇编语言的基础知识和程序设计方法。全书共分10章,分别介绍了汇编语言的基础知识、IBM PC计算机组织、8086/8088 CPU的指令系统、汇编语言程序格式与程序调试方法、基本程序设计、子程序设计、输入输出程序设计和中断技术、系统功能调用和BIOS中断调用程序设计、汇编语言与高级语言的连接、TSR程序设计等内容。
本书深入浅出,循序渐进,系统性强。书中有较多的应用实例,并配有相应的习题。
本书是高职高专计算机专业的教材,同时也可作为非计算机类有关专业的本科教材,或作为从事微型机开发与应用人员的自学参考书。
作者简介
目录信息
前言
一、汇编语言基础知识
1.l计算机系统的组成
1.1.l计算机硬件的组成
1.1.2计算机的软件系统
1.2程序设计语言
1.2.血机器语言
1.2.2汇编语言
l.2.3高级语言
1.2.4汇编语言的应用
1.3数据信息的表示
1.3.1数制与转换
1.3.2数值数据的表示
1.3.3非数值数据的表示
习题一
二、IBM PC计算机组织
2.1INTEL808618088CPU微处理器
2.28088微处理器的寄存器
2.2.l通用寄存器
2.2.2专用寄存器
2.38088的存储器
2.3.l存储单元的地址和内容
2.3.2存储器地址的分段…
2.3.3逻辑地址和物理地址
2.3.4分段结构的使用
2.4端口与外部设备
习题二
8086/8088的寻址方式和指令系统
3.1寻址方式
3.1.1指令结构
3.1.2操作数寻址方式(operand-addressingmodes)
3.l.3段跨越(segment ovemding)
3.2808618088的指令系统
3.2.l数据传送指令
3.2.2转换指令
3.2.3算术指令
3.2.4十进制调整指令
3.2.5逻辑运算和移位指令
3.2.6字符串操作指令
3.2.7控制转移指令
习题
四、汇编程序格式与程序调试
4.1汇编语言程序的格式
4.1.l汇编语言程序的基本结构及编译步骤
4.1.2段的定义、假设与引用
4.1.3程序的结束
4.1.4汇编语言的语句
4.2汇编程序调试
4.2.1汇编程序的查错方法
4.2.2汇编程序的调试工具
4.2.3DEBUG的使用方法
4.2.4用Turbo Debugger调试汇编程序
4.2.5用Soft-ICE调试汇编程序
习题四
五、基本程序设计
5.1概述
5.1.1汇编语言程序设计的步骤
5.1.2三种基本结构
5.2顺序程序设计
5.2.1加减运算
5.2.2乘除运算
5.2.3屏蔽、组合、求反码、求补
5.2.4二进制数、BCD数及ASCII码的转换
5.3分支程序设计
5.3.1单重分支结构的程序设计
5.3.2多重分支结构的程序设计
5.4循环程序设计
5.4.1循环程序的结构
5.4.2单重循环程序设计
5.4.3多重循环程序设计
习题五
六、子序设计
6.1子程序与主程序
6.1.l子程序与主程序
6.1.2子程序调用与返回的方法
6.2子程序设计方法
6.2.l主调程序与子程序间的参数传递
6.2.2寄存器内容的保护与恢复
6.2.3子程序的嵌套与递归调用
6.2.4子程序文件
习题六
七、输入输出程序设计与中断技术
7.1输入输出概述
7.1.1I/O接口
7.1.2输入、输出过程
7.2输入输出的控制方式
7.2.1程序直接控制方式
7.2.2程序中断传送方式
7.2.3直接存储器存取(DMA)方式
7.3中断
7.3.1中断的基本概念
7.3.2中断处理过程
7.3.3 8086/8088CPU中断系统
7.3.4中断控制器8259A
7.3.5中断程序设计
习题七
八、系统调用及程序设计
8.1DOS系统功能调用
8.1.1系统调用的方法
8.1.2设备管理系统功能调用
8.1.3文件管理系统功能调用
8.1.4内存管理系统功能调用
8.2常用的BIOS功能调用
8.2.1键盘驱动程序(INT16H)
8.2.2显示器输出控制中断调用(INT10H)
8.2.3打印机驱动程序(INT17H)
8.2.4磁盘驱动程序(INTI3H)
8.2.5时钟中断调用(INTIAH)
习题八
九、TSR程序设计
9.1TSR程序与DOS内存使用
9.2活跃TSR与被动TSR
9.3DOS的重入问题
9.4TSR程序设计要点与实例
9.4.ITSR程序设计要点
9.4.2TSR程序实例
习题九
十、汇编语言与高级语言的连接
10.1C语言与汇编语言的连接
10.1.1C语言与汇编语言连接的基本技术
10.1.2C语言与汇编语言连接的实例程序
10.1.3自动生成汇编语言程序框架
10.1.4C语言的内部汇编
10.2FOXPro 语言与汇编语言的连接
10.2.1FoxPro与汇编语言连接的一般方法
10.2.2FoxPro与汇编语言的连接编程
10.3QBASIC语言与汇编语言的连接
10.3.1QBASIC语言调用汇编语言的基本方法
10.3.2QBASIC语言与汇编语言的连接实例
习题十
附录1中断向量地址表
附录2DOS系统功能调用表
参考文献
· · · · · · (收起)
读后感
用户评价
这本书的排版和示例代码的清晰度,是作为一个资深程序员我极为看重的方面。很多技术书籍,尤其是涉及底层逻辑的,往往因为排版拥挤或者示例代码注释不足而令人望而却步。《汇编语言程序设计》在这方面做得相当不错。它的代码块通常都配有详细的行间注释,并且作者很聪明地将复杂的逻辑拆分成若干个小步骤,每一步都用伪代码和实际的汇编指令交替解释。我特别赞赏它在讲解浮点运算和向量指令集(SSE/AVX)时所采取的策略。这些高级特性在现代编程中越来越重要,但以往的教材往往一带而过。这本书不仅介绍了它们,还结合实际性能优化的案例进行了说明,这对于希望进行高性能计算或嵌入式开发的读者来说,价值极高。读完后,我对现代CPU的流水线和缓存机制有了更直观的认识,感觉自己对“快”这个概念的理解提升到了一个新的维度。
这本《汇编语言程序设计》的教材,老实说,我是抱着一种既期待又忐忑的心情开始阅读的。我之前接触过一些高级语言的编程,比如Python和Java,感觉代码写起来逻辑清晰,抽象层次也高,阅读起来相对顺畅。但是一翻开这本汇编的书,那种直面底层硬件的感觉一下子就扑面而来,各种寄存器、内存地址、操作码,看得我一开始是有点发懵的。不过,作者在讲解基础概念时,确实花了很多心思,特别是对于那些晦涩难懂的指令集架构的描述,用了很多形象的比喻,让我这个初学者也能勉强抓住一些门道。比如,他把CPU比作一个非常勤奋但又极其死板的工人,只能听懂最细枝末节的指令,这一下子就让我理解了为什么汇编代码需要写得如此冗长和精确。虽然学习过程如同攀登陡峭的山峰,每一步都需要小心翼翼地确认自己没有走错方向,但每当成功调试运行一个小小的程序,那种“一切尽在掌握”的成就感,是其他语言难以比拟的。我发现,要真正理解计算机是如何工作的,这本书提供了一条绕不开的必经之路。
我是在校学习计算机科学专业大三时接触到这本书的,当时课程安排要求我们必须掌握汇编语言作为基础。坦率地说,这本书的内容深度和广度都超出了我原先的预期。它不仅仅停留在介绍 MOV、ADD 这些基本指令层面,还深入探讨了内存管理、堆栈帧的构建,甚至是编译器在背后是如何将高级语言翻译成机器码的整个过程。特别是关于中断处理和系统调用的那几章,简直是宝典级别的存在。我印象最深的是作者对不同寻址模式的详细剖析,那种层层递进的逻辑推演,让人不得不佩服作者对这门“古老”但核心技术的深刻理解。唯一让我觉得有些吃力的地方在于,书中为了保持通用性,涉及了多个体系结构(如x86和ARM的部分概念),虽然拓宽了视野,但在初期学习时,偶尔会因为指令集的差异而产生一些混淆。总的来说,这本书更像是一本“武功秘籍”,需要读者付出大量的时间去消化和练习,才能真正领悟其中的精髓,而不是走马观花地翻阅。
作为一名自学者,我必须承认,这本书的学习曲线相当陡峭,但它的反馈机制设计得非常巧妙。作者在每章末尾设置的思考题和实验项目,绝不是那种简单的“填空题”或者“背诵题”。它们往往要求读者设计一个小型的程序模块,比如实现一个自定义的字符串拷贝函数,或者编写一个简单的内存校验程序。这些实践环节是检验学习成果的试金石。我刚开始尝试做实验时,光是调试一个简单的循环结构就能耗费我整个晚上,因为汇编语言不允许任何细微的错误存在,一个错误的偏移量或者一个错误的标志位操作都会导致程序崩溃或者结果错误。这种高强度的调试训练,极大地磨练了我的细心和逻辑严谨性。虽然过程很痛苦,但它强迫你深入到细节中去思考,一旦你成功运行了自己编写的、能与操作系统底层交互的程序,那种成就感是无以复加的,这远比写一个高级语言的Web应用要来得扎实和有底气。
这本书的理论深度和历史视角也是它的一大亮点。它并未将汇编语言视为一个孤立的技术栈,而是将其置于整个计算机体系结构的演进历程中进行阐述。例如,作者在讲解段寄存器和保护模式的转换时,清晰地梳理了从实模式到保护模式的历史沿革,这使得读者能够理解为什么现在的架构会有如此多看似冗余的设计——它们是历史的产物。对于那些对操作系统内核、编译器前端或者固件开发感兴趣的读者来说,这本书提供了一个坚实的基础平台。它不仅仅教你“怎么写”,更重要的是解释了“为什么这样设计”。我个人认为,这本书最大的价值在于培养了读者一种“自底向上”的思维习惯,当你再去看高级语言的编译器是如何工作的,或者操作系统如何管理内存时,你脑海中会立刻浮现出对应的机器指令和硬件操作。这本教材的厚重感,正来源于它对底层真相的深刻揭示。