这本书的目的是为了让读者更好地理解计算机在相比于编程语言如Pascal的更底层如何工作。通过更深刻地了解计算机如何工作,读者通常可以更有能力用高级语言如C和C++来开发软件。学习用汇编语言来编程是达到这个目的的一个极好的方法。其它的PC汇编程序的书仍然在讲授着如何在1981年使用在初始的PC机上的8086处理器上进行编程!那时的8086处理器只支持实模式。在这种模式下,任何程序都可以寻址任意内存或访问计算机里的任意设备。这种模式不适合于安全,多任务操作系统。这本书改为叙述在80386和后来的处理器如何在保护模式(也就 是Windows和Linux运行的模式)下进行编程。这种模式支持现在操作系统所期望的特征,比如:虚拟内存和内存保护。 ### PC汇编语言知识点概述 #### 一、书籍目的与适用范围 本书旨在帮助读者深入理解计算机硬件层面的工作原理,并通过学习汇编语言这一低级编程语言,加深对计算机内部机制的理解。对于那些希望在高级语言(如C/C++)编程方面取得更大成就的学习者而言,这种基础层次的知识是不可或缺的。 #### 二、计算机架构与工作原理 1. **数制**: - **十进制**:人类最常用的计数系统,基于10个符号(0-9)。 - **二进制**:计算机内部使用的计数系统,仅包含两个数字(0和1),是电子电路中最自然的表示形式。 - **十六进制**:一种基于16个符号(0-9 和 A-F)的计数系统,用于简化二进制数的书写,尤其适用于计算机科学领域。 2. **计算机结构**: - **内存**:分为RAM(随机访问存储器)和ROM(只读存储器)。RAM是易失性存储器,用于存储临时数据;ROM是非易失性存储器,用于存储固件等数据。 - **CPU**:中央处理器,是计算机的大脑,负责执行指令集。 - **80x86系列**:Intel的x86架构是一种广泛使用的CPU架构。 - **8086**:16位微处理器,支持实模式,在早期PC中广泛使用。 - **80386**:32位微处理器,引入了保护模式,支持现代操作系统特性,如虚拟内存和内存保护。 - **实模式**:8086/8088 CPU的默认操作模式,提供对所有内存和设备的完全访问权限,不适用于现代安全和多任务操作系统。 - **保护模式**: - **16位保护模式**:不再使用,但为后续模式奠定了基础。 - **32位保护模式**:现代操作系统的运行模式,提供了更好的安全性、可靠性和性能。 - **中断**:外部事件触发的操作,允许CPU响应来自硬件的请求,从而实现同步和异步操作。 3. **汇编语言**: - **机器语言**:最低级别的计算机语言,由一系列二进制指令组成。 - **汇编语言**:一种低级编程语言,接近机器语言,但使用助记符代替二进制指令,提高可读性。 - **指令操作数**:汇编指令的操作对象,如寄存器、内存位置等。 - **基本指令**:如加载、存储、算术和逻辑运算等。 - **指示符**:汇编器用来控制程序结构的命令,如条件跳转、循环等。 - **输入和输出**:涉及与外部设备交互的操作。 - **调试**:检测和修正程序错误的过程。 #### 三、程序创建过程 - **创建程序**:从编写源代码到生成可执行文件的完整流程。 - **第一个程序**:介绍了编写和测试简单汇编语言程序的基本步骤。 - **编译器依赖**:讨论了不同编译器之间的差异及其对程序的影响。 - **汇编代码**:详细解释了汇编语言代码的结构和语法。 - **编译C代码**:如何将C语言代码与汇编代码结合使用。 - **连接目标文件**:将多个目标文件合并成一个可执行文件的过程。 - **理解一个汇编列表文件**:分析汇编器生成的中间文件,有助于调试和优化。 #### 四、控制结构 - **控制结构**:如条件语句、循环等,用于控制程序流。 - **比较**:判断两个值是否相等或满足某种条件。 - **分支指令**:根据条件决定程序执行路径。 - **循环指令**:重复执行一段代码直到满足特定条件。 #### 五、位操作 - **移位操作**:左移、右移等,改变位序列的位置。 - **布尔型按位运算**:AND、OR、XOR、NOT等,用于位级数据处理。 - **避免使用条件分支**:利用位操作优化程序,减少条件分支带来的开销。 - **在C中进行位操作**:如何在C语言中使用位操作来提高效率。 #### 六、子程序 - **子程序**:独立的代码段,可被多次调用,用于实现特定功能。 - **间接寻址**:通过变量或寄存器间接访问内存地址。 - **堆栈**:用于存储函数调用时的局部变量和返回地址的数据结构。 - **CALL和RET指令**:分别用于调用子程序和从子程序返回。 - **调用约定**:定义了函数调用时参数传递的方式以及清理调用现场的责任。 - **C与汇编的接口技术**:探讨了C语言与汇编语言之间的交互方式。 #### 七、数组与字符串处理 - **数组**:一组具有相同类型的元素集合。 - **定义数组**:声明数组的大小和类型。 - **访问数组中的元素**:通过索引访问数组元素。 - **更高级的间接寻址**:使用基址加偏移量的形式访问数组元素。 - **多维数组**:具有多个维度的数组,可用于表示矩阵或表格数据。 #### 八、总结 本书通过详尽的例子和实践指南,不仅提供了汇编语言的基础知识,还深入探讨了如何在32位保护模式下进行编程。这对于那些希望深入了解计算机硬件和操作系统内部机制的学习者来说是一本宝贵的资源。通过本书的学习,读者不仅可以掌握汇编语言编程技巧,还能提高自己在高级语言编程方面的能力。
剩余176页未读,继续阅读
- 血剑魔2012-07-08不错,刚学完王爽的8086汇编。。再加深下汇编认识
- 粉丝: 33
- 资源: 24
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助