x86汇编语言:从实模式到保护模式.pdf

x86汇编语言:从实模式到保护模式.pdf
 

书籍描述

编辑推荐
《x86汇编语言:从实模式到保护模式》主要讲述INTEL x86处理器的16位实模式、32位保护模式,至于虚拟8086模式,则是为了兼容传统的8086程序,现在看来已经完全过时,不再进行讲述。《x86汇编语言:从实模式到保护模式》的特色之一是提供了大量典型的源代码,这些代码以及相配套的工具程序可以到书中指定的网站,或者电子工业出版社华信教育资源网搜索下载。

目录
第1部分 预备知识
第1章 十六进制计数法
1.1 二进制计数法回顾
1.1.1 关于二进制计数法
1.1.2 二进制到十进制的转换
1.1.3 十进制到二进制的转换
1.2 十六进制计数法
1.2.1 十六进制计数法的原理
1.2.2 十六进制到十进制的转换
1.2.3 十进制到十六进制的转换
1.3 为什么需要十六进制
本章习题
第2章 处理器、内存和指令
2.1 最早的处理器
2.2 寄存器和算术逻辑部件
2.3 内存储器
2.4 指令和指令集
2.5 古老的Intel 8086处理器
2.5.18086的通用寄存器
2.5.2 程序的重定位难题
2.5.3 内存分段机制
2.5.48086的内存分段机制
本章习题
第3章 汇编语言和汇编软件
3.1 汇编语言简介
3.2 NASM编译器
3.2.1 NASM的下载和安装
3.2.2 代码的书写和编译过程
3.2.3 用HexView观察编译后的机器代码
本章习题
第4章 虚拟机的安装和使用
4.1 计算机的启动过程
4.1.1 如何将编译好的程序提交给处理器
4.1.2 计算机的加电和复位
4.1.3 基本输入输出系统
4.1.4 硬盘及其工作原理
4.1.5 一切从主引导扇区开始
4.2 创建和使用虚拟机
4.2.1 别害怕,虚拟机是软件
4.2.2 下载和安装Oracle VM VirtualBox
4.2.3 虚拟硬盘简介
4.2.4 练习使用FixVhdWr工具向虚拟硬盘写数据
第2部分 实模式
第5章 编写主引导扇区代码
5.1 本章代码清单
5.2 欢迎来到主引导扇区
5.3 注释
5.4 在屏幕上显示文字
5.4.1 显卡和显存
5.4.2 初始化段寄存器
5.4.3 显存的访问和ASCII代码
5.4.4 显示字符
5.4.5 MOV指令的格式
5.5 显示标号的汇编地址
5.5.1 标号
5.5.2 如何显示十进制数字
5.5.3 在程序中声明并初始化数据
5.5.4 分解数的各个数位
5.5.5 显示分解出来的各个数位
5.5 使程序进入无限循环状态
5.7 完成并编译主引导扇区代码
5.7.1 主引导扇区有效标志
5.7.2 代码的保存和编译
5.8 加载和运行主引导扇区代码
5.8.1 把编译后的指令写入主引导扇区
5.8.2 启动虚拟机观察运行结果
5.9 程序的调试技术
5.9.1 开源的Bochs虚拟机软件
5.9.2 Bochs下的程序调试入门
本章习题
第6章 相同的功能,不同的代码
6.1 代码清单6-1
6.2 跳过非指令的数据区
6.3 在数据声明中使用字面值
6.4 段地址的初始化
6.5 段之间的批量数据传送
6.6 使用循环分解数位
6.7 计算机中的负数
6.7.1 无符号数和有符号数
6.7.2 处理器视角中的数据类型
6.8 数位的显示
6.9 其他标志位和条件转移指令
6.9.1 奇偶标志位PF
6.9.2 进位标志CF
6.9.3 溢出标志OF
6.9.4 现有指令对标志位的影响
6.9.5 条件转移指令
6.10 NASM编译器的$和$$标记
6.11 观察运行结果
6.12 本章程序的调试
6.12.1 调试命令“n”的使用
6.12.2 调试命令“u”的使用
6.12.3 用调试命令“info”察看标志位
本章习题
第7章 比高斯更快的计算
7.1 从1加到100的故事
7.2 代码清单7-1
7.3 显示字符串
7.4 计算1到100的累加和
7.5 累加和各个数位的分解与显示
7.5.1 栈和栈段的初始化
7.5.2 分解各个数位并压栈
7.5.3 出栈并显示各个数位
7.5.4 进一步认识堆栈
7.6 程序的编译和运行
7.6.1 观察程序的运行结果
7.6.2 在调试过程中察看栈中内容
7.78086处理器的寻址方式
7.7.1 寄存器寻址
7.7.2 立即寻址
7.7.3 内存寻址
本章习题
第8章 硬盘和显卡的访问与控制
8.1 本章代码清单
8.2 用户程序的结构
8.2.1 分段、段的汇编地址和段内汇编地址
8.2.2 用户程序头部
8.3 加载程序(器)的工作流程
8.3.1 初始化和决定加载位置
8.3.2 准备加载用户程序
8.3.3 外围设备及其接口
8.3.4 I/O端口和端口访问
8.3.5 通过硬盘控制器端口读扇区数据
8.3.6 过程调用
8.3.7 加载用户程序
8.3.8 用户程序重定位
8.3.9 将控制权交给用户程序
8.3.10 处理器的无条件转移指令
8.4 用户程序的工作流程
8.4.1 初始化段寄存器和栈切换
8.4.2 调用字符串显示例程
8.4.3 过程的嵌套
8.4.4 屏幕光标控制
8.4.5 取当前光标位置
8.4.6 处理回车和换行字符
8.4.7 显示可打印字符
8.4.8 滚动屏幕内容
8.4.9 重置光标
8.4.10 切换到另一个代码段中执行
8.4.11 访问另一个数据段
8.5 编译和运行程序并观察结果
本章习题
第9章 中断和动态时钟显示
9.1 外部硬件中断
9.1.1 非屏蔽中断
9.1.2 可屏蔽中断
9.1.3 实模式下的中断向量表
9.1.4 实时时钟、CMOS RAM和BCD编码
9.1.5 代码清单9-1
9.1.6 初始化8259、RTC和中断向量表
9.1.7 使处理器进入低功耗状态
9.1.8 实时时钟中断的处理过程
9.1.9 代码清单9-1的编译和运行
9.2 内部中断
9.3 软中断
9.3.1 BIOS中断
9.3.2 代码清单9-2
9.3.3 从键盘读字符并显示
9.3.4 代码清单9-2的编译和运行
本章习题
……
第3部分 32位保护模式
附录1 本书用到的x86指令及其页码
附录2 本书用到的重要图表及其页码

文摘
版权页:

x86汇编语言:从实模式到保护模式

插图:

x86汇编语言:从实模式到保护模式

第13章 程序的动态加载和执行
像我一样,很多人在了解了保护模式的基本工作原理之后,会产生一个疑问。那就是,所有的段在使用之前,都必须以描述符的形式在描述符表中进行定义,那么,像操作系统这样的软件,又怎么能够加载和执行其他各种用户程序呢?毕竟,你并不知道这些程序都定义了哪些段,每个段是什么类型,有多长。
未必所有人都会产生这样的疑惑,但我确实算一个,可能我还不够聪明。事实上,这仅仅是一层窗户纸,一旦捅破了,才发现原来竟是那么简单。从某种意义上来说,保护模式的工作机制对用户程序的加载和执行非但没有增加困难,反而带来了很大的便利。
一套能够充分说明问题的例子需要很大的代码量,也许把本书的汉字都去掉,全部换成代码也不够。不过,只要能说明问题,也不一定非得完善周全、面面俱到。因此,本章中用于加载和处理用户程序的做法,不一定,甚至根本就不是操作系统采用的方法。这一点,务必明了。
计算机硬件之上是软件。软件分两个层次,一是操作系统,二是应用(用户)程序。通常,用户程序只关心问题的解,就是采用各种算法来解决实际问题。至于软件是怎么加载到内存的,怎么定位的,不是它所操心的事。但是,它有义务提供一些必要的信息,来帮助操作系统将自己加载到内存中。
相反,操作系统则必须考虑采用什么方法来加载用户程序,并在适当的时候将处理器的执行流转移到用户代码中去。同时,为了减轻用户程序的工作量,操作系统还应当管理硬件,并提供大量的例程供用户程序使用。比如,显示一个字符串,就不要让用户自己来写代码了,直接调用操作系统的代码即可。但操作系统和用户程序应当协商一种机制,让用户程序能够在使用这些例程时,不必考虑和关心它们的位置。
本章提供了一个小小的“操作系统”,因为当不起这么大的名称,所以叫“内核”或者“核心”。即使是这样,它依然当不起,因为它实在是太简单了。不过,也没有办法,就这么凑合着叫吧。
内核不能放到主引导扇区里,毕竟它都很大。所以,计算机首先从主引导程序开始执行,主引导程序负责加载内核,并转交控制权。然后,内核负责加载用户程序,并提供各种例程给用户程序调用。提供给用户程序调用的例程也叫应用程序接口(Application Programming Interface,API),本章用简单的方法来允许用户程序使用API工作。
本章学习目标:
1.了解保护模式是为操作系统提供的技术,并没有给普通应用程序的编程带来负担(这从本章的程序实例中就可以看出来)。
2.学习操作系统在保护模式下加载和重定位应用程序的一般原理,学习简单的内存动态分配,了解应用程序接口API的简单原理,学习字符串的比较算法。
3.学习若干x86处理器的新指令,包括bswap、cpuid、cmovcc、sgdt、movzx、movsx、cmpsb、cmpsw、cmpsd和xlat等。

内容简介
《x86汇编语言:从实模式到保护模式》采用开源的NASM汇编语言编译器和VirtualBox虚拟机软件,以个人计算机广泛采用的Intel处理器为基础,详细讲解了Intel处理器的指令系统和工作模式,以大量的代码演示了16/32/64位软件的开发方法,介绍了处理器的16位实模式和32位保护模式,以及基本的指令系统。
《x86汇编语言:从实模式到保护模式》是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于BIOS、DOS、Windows、Linux或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。《x86汇编语言:从实模式到保护模式》可作为大专院校相关专业学生和计算机编程爱好者的教程。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多