第零章 简介 1
0.1 为什么学习汇编语言 1
0.2 我们使用的方法 2
0.3 本书编排 2
0.4 要使用书中举例需要什么 3
0.5 Dskpatch 3
第一部分 机器语言 7
第一章 学习调试和计算机算术操作 7
1.1 Intel微处理机介绍 7
1.2 计算机计数方式 8
1.3 用十六进制数计数 8
1.4 使用Debug程序 8
1.5 进行十六进制算术操作 9
1.6 位、字节、字和二进制数 16
1.7 二进制补码——负数的奇数排序 17
1.8 小结 18
第二章 用80X86作数学运算 20
2.1 使用寄存器变量 20
2.2 使用80X86内存 21
2.3 80X86方式加 23
2.4 80X86方式减 25
2.5 80X86中的负数 25
2.6 80X86的字节 25
2.7 80X86方式乘法和除法 26
2.8 小结 28
第三章 打印字符 29
3.1 INT——用DOS功能 29
3.2 退出程序:INT 20h 31
3.3 组合各个部分:一个两行的程序 32
3.4 程序输入 32
3.5 给寄存器传送数据 33
3.6 写字符串 35
3.7 小结 36
第四章 打印二进制数值 37
4.1 运用进位标志使数值循环移位 37
4.2 在数值上加进位标志 39
4.3 循环:重复执行代码块 39
4.4 建立显示二进制数的程序 41
4.5 使用Proceed命令单步执行中断 42
4.6 小结 42
第五章 以十六进制形式打印数值 43
5.1 数值比较 43
5.2 打印十六进制数字 45
5.3 小结 50
第六章 读字符 51
6.1 读字符 51
6.2 读一位数字的十六进制数 52
6.3 读两位数字的十六进制数 52
6.4 小结 53
第七章 利用过程来编写重复使用的代码 54
7.1 编写过程 54
7.2 堆栈和返回地址的调用形式 56
7.3 数据的压入和弹出 58
7.4 读入多种类别的十六进制数值 59
7.5 小结 60
第二部分 汇编程序 65
第八章 欢迎使用汇编程序 65
8.1 脱离Debug建立程序 65
8.2 建立源文件 67
8.3 链接程序 68
8.4 Debug中的Writestr 69
8.5 使用注释 70
8.6 在代码中使用标号 70
8.7 小结 72
第九章 使用汇编语言编写过程 73
9.1 汇编程序过程 73
9.2 十六进制数输出过程 76
9.3 模块化设计的开始 78
9.4 一个程序骨架 78
9.5 小结 79
第十章 用十进制打印 80
10.1 回顾十进制转换 80
10.2 一些技巧 82
10.3 WRITE_DECIMAL的内部工作 84
10.4 小结 85
第十一章 段 86
11.1 内存划分为段的原则 86
11.2 堆栈 89
11.3 程序段前缀(PSP) 91
11.4 DOSSEG指令 91
11.5 NEAR和FAR调用 92
11.6 有关INT指令的许多知识 95
11.7 中断向量 96
11.8 小结 96
第十二章 建立Dskpatch及其修改过程 97
12.1 磁盘、扇区及其他 97
12.2 编写Dskpatch的实施方案 99
12.3 小结 100
第十三章 模块化设计-分块编写程序 101
13.1 分割汇编 101
13.2 模块化设计的三个准则 104
13.3 使用Programmer's Workbench 106
13.4 小结 111
第十四章 内存显示 112
14.1 利用寻址方式存取内存 112
14.2 使用数据段 114
14.3 基址相对寻址 115
14.4 设置DS指向数据段 117
14.5 添加字符显示 118
14.6 显示内存中256字节 119
14.7 小结 124
第十五章 显示一个磁盘扇区 125
15.1 简化工作 125
15.2 NMAKE文件格式 126
15.3 修改Disp_sec 127
15.4 读一个扇区 128
15.5 DATA?指令 132
15.6 小结 132
第十六章 扩展扇区显示 134
16.1 增加图形字符 134
16.2 增加地址显示 136
16.3 增加水平线 139
16.4 增加数值显示 144
16.5 小结 145
第三部分 IBM PC的ROM BIOS第十七章 ROM BIOS例程 149
17.1 ROM BIOS显示例程 149
17.2 清除屏幕 151
17.3 移动光标 153
17.4 变量用法 154
17.5 写标题 158
17.6 小结 160
第十八章 WRITE_CHAR的最终版本 162
18.1 新的WRITE_CHAR 162
18.2 清除到行尾 165
18.3 小结 167
第十九章 命令传送中心 168
19.1 建立一个传送中心 168
19.2 读其他扇区 173
19.3 学习后面章节的方法 176
第二十章 编程进阶 177
20.1 虚光标 177
20.2 简单编辑 178
20.3 Dskpatch的其他改变与附加内容 179
第二十一章 虚光标 180
21.1 虚光标 180
21.2 改变字符属性 185
21.3 小结 186
第二十二章 简单编辑 188
22.1 移动虚光标 188
22.2 简单编辑 191
22.3 小结 195
第二十三章 十六进制与十进制输入 196
23.1 十六进制输入 196
23.2 十进制输入 206
23.3 小结 206
第二十四章 改进的键盘输入 207
24.1 新的READ_STRING 207
24.2 用户友好性与程序员友好性 213
24.3 小结 216
第二十五章 搜索错误 217
25.1 解决DISPATCHER的问题 217
25.2 小结 219
第二十六章 写回修改的扇区 220
26.1 写磁盘 220
26.2 更多的调试技术 222
26.3 建立列表文件 223
26.4 跟踪错误 225
26.5 源程序级调试 226
26.6 Microsoft的CodeView 227
26.7 Borland的Turbo Debugger 229
26.8 小结 232
第二十七章 另外一半扇区 233
27.1 滚动半个扇区 233
27.2 小结 236
第四部分 高级课题 239
第二十八章 重定位 239
28.1 编写COM程序 239
28.2 使用完整的段定义 239
28.3 重定位 240
28.4 COM与EXE程序 243
第二十九章 关于段与ASSUME语句更多的知识 246
29.1 段超越 246
29.2 ASSUME的另外一瞥 248
29.3 小结 248
第三十章 快速的WRITE_CHAR 249
30.1 确定显示内存段 249
30.2 直接写显示内存 251
30.3 快速写屏 253
30.4 小结 259
第三十一章 在C和C++程序中使用汇编语言 260
31.1 为C语言编写的清屏程序 260
31.2 在C++中使用Clear_screen 264
31.3 传送一个参数 265
31.4 传送多个参数 269
31.5 返回函数值 270
31.6 使用其他内存模式 272
31.7 关于用汇编写C/C++过程的总结 277
31.8 编写嵌入汇编代码 278
31.9 小结 281
第三十二章 DISKLITE:一个RAM驻留程序 282
32.1 RAM驻留程序 282
32.2 截取中断 282
32.3 Disklite 284
第三十三章 保护模式和Windows的程序设计 290
33.1 什么是保护模式 290
33.2 在Windows下工作 293
33.3 小结 297
第三十四章 相关字和书目 303
34.1 80X86参考书 303
34.2 DOS和ROM BIOS程序设计 304
34.3 RAM驻留程序 304
34.4 高级DOS编程 304
34.5 Windows程序设计 305
34.6 软件设计 305
34.7 其他参考书 305
附录A 磁盘指南 306
A.1 各章节中的例子 306
A.2 Dskpatch的高级版本 307
A.3 DISKLITE程序 309
A.4 Windows代码 309
A.5 C/C++库 309
附录B Dskpatch清单 311
B.1 过程描述 311
B.2 Dskpatch制作文件 314
B.3 Dskpatch链接信息文件 314
B.4 Dskpatch程序清单 315
附录C 汇编语言编写的C/C++库 354
C.1 过程描述 354
C.2 制作文件 357
附录D 参考表 392