目 录 5第1部分 预备知识 12
第一章 十六进制计数法 13
1.1 二进制计数法回顾 13
1.1.1 关于二进制计数法 13
1.1.2 二进制到十进制的转换 13
1.1.3 十进制到二进制的转换 14
1.2 十六进制计数法 14
1.2.1 十六进制计数法的原理 14
1.2.2 十六进制到十进制的转换 15
1.2.3 十进制到十六进制的转换 15
1.3 为什么需要十六进制 16
本章习题 2
第二章 处理器、内存和指令 3
2.1 最早的处理器 3
2.2 寄存器和算术逻辑部件 3
2.3 内存储器 5
2.4 指令和指令集 6
2.5 古老的INTEL 8086处理器 8
2.5.1 8086的通用寄存器 8
2.5.2 程序的重定位难题 9
2.5.3 内存分段机制 13
2.5.4 8086的内存分段机制 15
本章习题 17
第三章 汇编语言和汇编软件 18
3.1 汇编语言简介 18
3.2 NASM编译器 20
3.2.1 从网上下载NASM安装程序 20
3.2.2 安装NASM编译器 22
3.2.3 下载配书源码和工具 23
3.2.4 用nasmide体验代码的书写和编译过程 25
3.2.5 用HexView观察编译后的机器代码 27
本章习题 29
第四章 虚拟机的安装和使用 30
4.1 计算机的启动过程 30
4.1.1 如何将编译好的程序提交给处理器 30
4.1.2 计算机的加电和复位 30
4.1.3 基本输入输出系统BIOS 31
4.1.4 硬盘及其工作原理 32
4.1.5 一切从主引导扇区开始 34
4.2 创建和使用虚拟机 35
4.2.1 别害怕,虚拟机是软件 35
4.2.2 下载Oracle VM VirtualBox 35
4.2.3 安装Oracle VM VirtualBox 36
4.2.4 创建一台虚拟PC(个人计算机) 37
4.2.5 虚拟硬盘(VHD)简介 45
4.2.6 练习使用FixVhdWr工具向虚拟硬盘写数据 46
第2部分 16位处理器下的实模式 51
第五章 编写主引导扇区代码 52
5.1 欢迎来到主引导扇区 52
5.1.1 本章意图 52
5.1.2 代码清单5-1(主引导程序) 52
5.2 注释 55
5.3 在屏幕上显示文字 55
5.3.1 显卡和显存 55
5.3.2 初始化段寄存器 57
5.3.3 显存的访问和ASCII代码 58
5.3.4 在屏幕上显示字符 60
5.4 显示标号的汇编地址 61
5.4.1 标号 61
5.4.2 如何显示十进制数字 64
5.4.3 在程序中声明并初始化数据(伪指令db/dw/dd/dq) 65
5.4.4 分解数的各个数位(div/and/xor) 66
5.4.5 显示分解出来的各个数位(add) 70
5.5 使程序进入无限循环状态 70
5.6 完成并编译主引导扇区代码 71
5.6.1 主引导扇区有效标志(伪指令times) 71
5.6.2 代码的保存和编译 72
5.7 加载和运行主引导扇区代码 72
5.7.1 把编译后的指令写入主引导扇区 72
5.7.2 启动虚拟机观察运行结果 74
5.7.3 程序的调试 76
本章习题 76
第六章 相同的功能,不同的代码 78
6.1 代码清单6-1 78