内容简介 · · · · · ·
本书采用开源的 NASM 汇编语言编译器和 Virtual Box 虚拟机软件,以个人计算机广泛采用的 Intel 处理器为基础,详细讲解了 Intel 处理器的指令系统和工作模式,以大量的代码演示了16/32/64位软件的开发方法,介绍了处理器的16位实模式和32位保护模式,以及基本的指令系统。
这是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于 BIOS、DOS、Windows、Linux 或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。
本书可作为大专院校相关专业学生和计算机编程爱好者的教程。
x86汇编语言的创作者
· · · · · ·
-
王晓波 作者
目录 · · · · · ·
前言
第一部分 预备知识
第1章 十六进制计数法
1.1 二进制计数法回顾
1.2 十六进制计数法
1.3 使用Windows计算器方便你的学习过程
本章习题
第2章 处理器、内存和指令
2.1 最早的处理器
2.2 寄存器和算术逻辑部件
2.3 内存储器
2.4 指令和指令集
2.5 古老的Intel 8086处理器
本章习题
第3章 汇编语言和汇编软件
3.1 汇编语言简介
3.2 NASM编译器
本章习题
第4章 虚拟机的安装和使用
4.1 计算机的启动过程
4.2 创建和使用虚拟机
第二部分 实模式
第5章 编写主引导扇区代码
5.1 本章代码清单
5.2 欢迎来到主引导扇区
5.3 注释
5.4 在屏幕上显示文字
5.5 显示标号的汇编地址
5.6 使程序进入无限循环状态
5.7 完成并编译主引导扇区代码
5.8 加载和运行主引导扇区代码
5.9 程序的调试技术
本章习题
第6章 相同的功能,不同的代码
6.1 代码清单6-1
6.2 跳过非指令的数据区
6.3 在数据声明中使用字面值
6.4 段地址的初始化
6.5 段之间的批量数据传送
6.6 使用循环分解数位
6.7 计算机中的负数
6.8 数位的显示
6.9 其他标志位和条件转移指令
6.10 NASM编译器的$和$$标记
6.11 观察运行结果
6.12 本章程序的调试
本章习题
第7章 比高斯更快的计算
7.1 从1加到100的故事
7.2 代码清单7-1
7.3 显示字符串
7.4 计算1到100的累加和
7.5 累加和各个数位的分解与显示
7.6 程序的编译和运行
7.7 8086处理器的寻址方式
本章习题
第8章 硬盘和显卡的访问与控制
8.1 本章代码清单
8.2 用户程序的结构
8.3 加载程序(器)的工作流程
8.4 用户程序的工作流程
8.5 编译和运行程序并观察结果
本章习题
第9章 中断和动态时钟显示
9.1 外部硬件中断
9.2 内部中断
9.3 软中断
本章习题
第三部分 32位保护模式
第10章 32位x86处理器编程架构
10.1 IA-32架构的基本执行环境
10.2 现代处理器的结构和特点
10.3 32位模式的指令系统
本章习题
第11章 进入保护模式
11.1 代码清单11-1
11.2 全局描述符表
11.3 存储器的段描述符
11.4 安装存储器的段描述符并加载GDTR
11.5 关于第21条地址线A20的问题
11.6 保护模式下的内存访问
11.7 清空流水线并串行化处理器
11.8 保护模式下的栈
11.9 程序的运行和调试
本章习题
第12章 存储器的保护
12.1 代码清单12-1
12.2 进入32位保护模式
12.3 修改段寄存器时的保护
12.4 地址变换时的保护
12.5 使用别名访问代码段对字符排序
12.6 程序的编译和运行
本章习题
第13章 程序的动态加载和执行
13.1 本章代码清单
13.2 内核的结构、功能和加载
13.3 在内核中执行
13.4 用户程序的加载和重定位
13.5 执行用户程序
13.6 代码的编译、运行和调试
本章习题
第14章 任务和特权级保护
14.1 任务的隔离和特权级保护
14.2 代码清单14-1
14.3 内核程序的初始化
14.4 加载用户程序并创建任务
14.5 用户程序的执行
本章习题
第15章 任务切换
15.1 本章代码清单
15.2 任务切换前的设置
15.3 任务切换的方法
15.4 用call/jmp/iret指令发起任务切换的实例
15.5 处理器在实施任务切换时的操作
15.6 程序的编译和运行
本章习题
第16章 分页机制和动态页面分配
16.1 分页机制概述
16.2 本章代码清单
16.3 使内核在分页机制下工作
16.4 创建内核任务
16.5 用户任务的创建和切换
16.6 程序的编译、执行和调试
本章习题
第17章 中断和异常的处理与抢占式多任务
17.1 中断和异常
17.2 本章代码清单
17.3 内核的加载和初始化
17.4 内核任务的创建
17.5 用户任务的创建
本章习题
附录Ⅰ 本书用到的x86指令及其页码
附录Ⅱ 本书用到的重要图表及其页码
· · · · · · (收起)
第一部分 预备知识
第1章 十六进制计数法
1.1 二进制计数法回顾
1.2 十六进制计数法
1.3 使用Windows计算器方便你的学习过程
本章习题
第2章 处理器、内存和指令
2.1 最早的处理器
2.2 寄存器和算术逻辑部件
2.3 内存储器
2.4 指令和指令集
2.5 古老的Intel 8086处理器
本章习题
第3章 汇编语言和汇编软件
3.1 汇编语言简介
3.2 NASM编译器
本章习题
第4章 虚拟机的安装和使用
4.1 计算机的启动过程
4.2 创建和使用虚拟机
第二部分 实模式
第5章 编写主引导扇区代码
5.1 本章代码清单
5.2 欢迎来到主引导扇区
5.3 注释
5.4 在屏幕上显示文字
5.5 显示标号的汇编地址
5.6 使程序进入无限循环状态
5.7 完成并编译主引导扇区代码
5.8 加载和运行主引导扇区代码
5.9 程序的调试技术
本章习题
第6章 相同的功能,不同的代码
6.1 代码清单6-1
6.2 跳过非指令的数据区
6.3 在数据声明中使用字面值
6.4 段地址的初始化
6.5 段之间的批量数据传送
6.6 使用循环分解数位
6.7 计算机中的负数
6.8 数位的显示
6.9 其他标志位和条件转移指令
6.10 NASM编译器的$和$$标记
6.11 观察运行结果
6.12 本章程序的调试
本章习题
第7章 比高斯更快的计算
7.1 从1加到100的故事
7.2 代码清单7-1
7.3 显示字符串
7.4 计算1到100的累加和
7.5 累加和各个数位的分解与显示
7.6 程序的编译和运行
7.7 8086处理器的寻址方式
本章习题
第8章 硬盘和显卡的访问与控制
8.1 本章代码清单
8.2 用户程序的结构
8.3 加载程序(器)的工作流程
8.4 用户程序的工作流程
8.5 编译和运行程序并观察结果
本章习题
第9章 中断和动态时钟显示
9.1 外部硬件中断
9.2 内部中断
9.3 软中断
本章习题
第三部分 32位保护模式
第10章 32位x86处理器编程架构
10.1 IA-32架构的基本执行环境
10.2 现代处理器的结构和特点
10.3 32位模式的指令系统
本章习题
第11章 进入保护模式
11.1 代码清单11-1
11.2 全局描述符表
11.3 存储器的段描述符
11.4 安装存储器的段描述符并加载GDTR
11.5 关于第21条地址线A20的问题
11.6 保护模式下的内存访问
11.7 清空流水线并串行化处理器
11.8 保护模式下的栈
11.9 程序的运行和调试
本章习题
第12章 存储器的保护
12.1 代码清单12-1
12.2 进入32位保护模式
12.3 修改段寄存器时的保护
12.4 地址变换时的保护
12.5 使用别名访问代码段对字符排序
12.6 程序的编译和运行
本章习题
第13章 程序的动态加载和执行
13.1 本章代码清单
13.2 内核的结构、功能和加载
13.3 在内核中执行
13.4 用户程序的加载和重定位
13.5 执行用户程序
13.6 代码的编译、运行和调试
本章习题
第14章 任务和特权级保护
14.1 任务的隔离和特权级保护
14.2 代码清单14-1
14.3 内核程序的初始化
14.4 加载用户程序并创建任务
14.5 用户程序的执行
本章习题
第15章 任务切换
15.1 本章代码清单
15.2 任务切换前的设置
15.3 任务切换的方法
15.4 用call/jmp/iret指令发起任务切换的实例
15.5 处理器在实施任务切换时的操作
15.6 程序的编译和运行
本章习题
第16章 分页机制和动态页面分配
16.1 分页机制概述
16.2 本章代码清单
16.3 使内核在分页机制下工作
16.4 创建内核任务
16.5 用户任务的创建和切换
16.6 程序的编译、执行和调试
本章习题
第17章 中断和异常的处理与抢占式多任务
17.1 中断和异常
17.2 本章代码清单
17.3 内核的加载和初始化
17.4 内核任务的创建
17.5 用户任务的创建
本章习题
附录Ⅰ 本书用到的x86指令及其页码
附录Ⅱ 本书用到的重要图表及其页码
· · · · · · (收起)
喜欢读"x86汇编语言"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"x86汇编语言"的人也喜欢 · · · · · ·
-
- 潘登尼斯 (下) 8.6
-
- 计算机系统要素 9.2
-
- 编译器设计 8.4
-
- 自制编译器 8.2
-
- Linux多线程服务端编程 8.8
-
- 逆向工程核心原理 9.4
-
- 垃圾回收的算法与实现 8.5
-
- 编程语言实现模式 8.3
-
- 程序设计语言 8.4
x86汇编语言的书评 · · · · · · ( 全部 9 条 )
学习x86架构保护模式的好书
这篇书评可能有关键情节透露
整体给8分。 读过该书的第一和第二版。总体来说,是把x86架构从实模式引导一直到进入保护模式的过程讲的比较清晰,并且把分段、分页、权限这些内容有涉及。如果做x86系统编程,或者操作系统这块的工作,该书很值得阅读。 再说一下值得改进的地方(以第二版为基准): 1. 关于从... (展开)作者虽然不善于讲解知识,但知识渊博、技术高超,4星。
后四分之一,读得很糙。 本书需要安装的 VirtualBox 和 Bochs 跟 王爽老师的《汇编语言》需要安装的 DOSBox 差不多。 作者后面写了一个微型操作系统内核,让人受益匪浅。 另外,读这本书的时候,不要过分拘泥于每一行代码。 缺点: 第一,把 "保护模式相关知识" 、 "汇编语言语...
(展开)
很好的讲述了 x86 体系的演化
为什么引入段寄存器? 1. 8086实模式下,16位寄存器不足以访问 1MB 的内存,因而采用 段+偏移地址 来访问 2. 方便程序重定位 为什么需要保护模式? 1. 避免应用程序使用内核段选择子来破坏系统 2. 多任务环境下,GDT+LDT 的搭配使任务既能调用内核代码,又能实现程序之间的彼此...
(展开)
> 更多书评 9篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部2 )
-
电子工业出版社 (2023)8.7分 52人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 豆瓣9分以上计算机图书 (晚安,本杰明)
- 计算机 (徐永冰)
- 微机与接口教材 (流浪地球)
- 评分9分以上的计算机图书 (子苓)
- 计算机 统计类 【书】 (幽篁坐啸)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于x86汇编语言的评论:
feed: rss 2.0

1 有用 天行 2013-10-13 14:13:39
看王爽的书后,想了解下保护模式,实模式的。 电子版网上有下不过不全,代码和工具相关的网上也能找到
0 有用 ^waves 2022-09-14 10:06:20
视频+书 非常好
7 有用 夜默 2021-09-23 19:10:18
2021.9.23 读完 4分 可能是评分太高了,导致我对这本书期望太高。 前面几章确实不错,可能是因为读过王爽那本,读起来还是很轻松的。 从第十一章开始,难度陡增,阅读体验极差。 首先,过于“硬核”了,洋洋洒洒几百行汇编代码,再加上我读的是电子书,pdf和代码来回切屏,阅读效率骤降,几个小时下来才读了不到十页。 有一些地方的表达也很乱,本来清楚的概念,读完以后反而被搞乱了。 第十三章读了一个星期... 2021.9.23 读完 4分 可能是评分太高了,导致我对这本书期望太高。 前面几章确实不错,可能是因为读过王爽那本,读起来还是很轻松的。 从第十一章开始,难度陡增,阅读体验极差。 首先,过于“硬核”了,洋洋洒洒几百行汇编代码,再加上我读的是电子书,pdf和代码来回切屏,阅读效率骤降,几个小时下来才读了不到十页。 有一些地方的表达也很乱,本来清楚的概念,读完以后反而被搞乱了。 第十三章读了一个星期了都没读完,实在是读不下去了,大部分的代码分析部分都跳了,今天一口气把剩下的一百来页过了。 本来只是想了解了解保护模式的概念的,才发现其实这个概念早就已经接触了。 不想再浪费时间看书了,接下来就该动手写内核了。 (展开)
22 有用 skywalker 2018-03-11 22:40:49
有了《汇编语言》一书的基础,实模式部分可以跳读,但是要注意此书用的是nasm编译器,与masm的语法不同。到这里汇编基础打完了,下一步便开始真正的操作系统的学习:《操作系统:真象还原》,我的实验方法以及部分章节的练习: https://github.com/seaswalker/X86_ASM
1 有用 fanchaoo 2021-07-18 00:41:05
不知道自己大学的时候都学了点啥,工作四年了又来补基础