第1章 组合语言简介 1
1.1 组合语言的主要优点:速度与控制 2
1.2 80286/80386的族谱 3
1.3 学习本书後的预期效果 5
1.4 学习本书的必备基础 5
1.5 数字系统 6
1.5.1 二进位数 6
1.5.1.1 二进位数的加法与减法 8
1.5.1.2 位元组 9
1.5.1.4 有号数 10
1.5.1.3 字元 10
1.5.1.5 2’补数 11
1.6 符号延伸 13
1.6.1 十六进位数 13
1.7 位元组以上的位元组织 16
1.7.1 字组 16
1.7.2 双字组 17
1.7.3 四字组 18
1.7.5 80386的资料型态 19
1.7.6 非标准位元栏位 19
1.7.4 十字组 19
1.8 逻辑运算 20
1.9 定址方式 22
1.9.1 立即式定址 23
1.9.2 暂存器定址 24
1.9.3 直接式定址 24
1.9.4 暂存器间接式定址 25
1.9.5 基底式定址 26
1.9.6 直接注标式定址 27
1.9.7 基底注标式定址 28
1.9.8 80386之延伸 29
1.10 程式设计格式 30
1.10.1 名称栏 30
1.10.1.1 变数名称 31
1.10.1.2 标记名称 31
1.10.1.3 常数名称 32
1.10.2 运算栏 33
1.10.3 运算元栏 34
1.10.4 注释栏 35
1.11 组合语言的兴起 35
1.12 组合语言范例 35
第2章 组译器简介 37
2.1 组合语言与机器码 38
2.2 典型的组合过程 39
2.2.1 第一步:建立原始程式 40
2.2.1.1 程式赘余 42
2.2.2 第二步:产生目的程式 44
2.2.3 第三步:链结 45
第3章 80286/80386微处理器的结构:暂存器、旗帜与指令 47
3.1 80286微处理器 47
3.1.1 基本结构 47
3.1.1.1 区段暂存器 49
3.1.1.2 注标、指标及基底等暂存器 50
3.1.1.3 状况暨控制暂存器 50
3.1.1.4 指令指标 52
3.1.1.5 机器状况字组 52
3.2 80386微处理器 52
3.2.1 资料型态 53
3.2.2 运算元定址方式 53
3.2.2.1 有效位址之计算 53
3.2.3 8086程式执行 54
3.2.4 基本结构 54
3.2.4.1 多用途暂存器 55
3.2.4.2 区段暂存器 56
3.2.4.3 指令指标与EFLAGS 57
3.2.4.4 控制暂存器 58
3.2.4.5 系统位址暂存器 59
3.2.4.6 侦错与测试暂存器 60
3.3 80286/80386指令集 61
3.4 80386指令集 124
第4章 80287/80387数值型共同处理器 133
4.1 80287/80387的运作 133
4.1.1 浮点堆叠 134
4.1.2 状况字组 135
4.1.3 控制字组 136
4.1.3.1 例外类中断遮盖 136
4.1.4 标签字组 137
4.1.5 例外类中断指标 138
4.1.6 资料型态 139
4.1.6.1 二进位整数 139
4.1.6.2 聚集十进位数 140
4.1.6.3 短实数、长实数及暂时实数 140
4.2 80287/80387指令集 141
4.1.6.4 特殊数值 141
第5章 程式设计基本技巧 181
5.1 算术程式 182
5.1.1 立即式定址的十六进位数加法 183
5.1.2 直接式定址的十六进位数减法 185
5.1.3 直接式定址的多重准度加法 188
5.1.4 注标式定址的多重准度加法 192
5.1.5 暂存器间接式定址的十六位加法 195
5.1.6 用连加法来模拟乘法运算 198
5.1.7 用乘法指令做乘法、平方及立方运算 201
5.1.8 除法运算 205
5.1.9 平方根运算 207
5.2 逻辑运算 210
5.2.1 模拟硬体逻辑闸 210
5.3 查表法 213
5.3.1 查对数表 215
5.3.2 数码转换 217
5.3.3 ASCII转数换成十六进位数 220
5.4 80386的32位元运算 223
5.5 使用BIOS及DOS中断 228
5.5.1 使用BIOS中断清除萤幕 229
5.5.2 使用BIOS中断印标语 235
5.5.3 使用BIOS中断程式资料 237
5.5.4 使用BIOS中断从键盘读入字元 243
5.5.5 使用BIOS中断从键盘读入字串 244
5.5.6 使用BIOS中断查询时间及日期 247
5.5.7 使用BIOS中断查询IBM AT记忆体大小 250
5.5.8 使用BIOS中断查询系统装备 251
5.5.9 使用BIOS中断从列表机印出字串 253
5.5.10 使用BIOS中断在中解像度萤幕描点 255
5.5.11 使用BIOS中断在高解像度萤幕画缐 258
5.6 高级字串指令 259
5.6.1 字串扫瞄 260
5.6.2 字串搬运 262
第6章 组译器的辅助命令 265
6.1 IBM、MICROSOFT和SPEEDWARE等组译器之辅助命令 266
第7章 巨集、程序和库集 297
7.1 巨集 297
7.1.1 巨集使用法 299
7.1.2 巨集库 303
7.2 程序 307
7.2.1 程序使用法 308
7.2.2 程序库 313
7.3 库集 318
7.4 巨集、程序库及库集之比较 319
第8章 高等程式设计技巧 323
8.1 彩色萤幕绘图 324
8.2 读秒 329
8.3 简易“菜单”型程式 334
8.4 比较复杂的“菜单”型程式 337
8.5 使用高级字串指令 344
8.6 档案处理 348
8.7 实际模式与虚拟保护模式程式设计:范例 361
第9章 80287/80387共同处理器程式设计 369
9.1 晶片规格 370
9.2 整数运算 372
9.3 整数列印巨集 377
9.4 整数相乘 379
9.5 开根号 381
9.6 实数运算 385
9.6.1 IEEE实数格式 386
9.6.2 简易的实数运算 389
9.6.3 IBM MACRO ASSEMBLER资料转换常式 391
9.6.4 IBM常式库使用范例 394
9.6.5 实数角度的正切函数值 402
9.6.6 求正弦函数值 406
9.6.7 正弦函数值表 411
9.6.8 描绘正弦波形 415
9.7 利用傅立业(Fourler)级数绘图 419
第10章 联结高阶语言 435
10.1 STSC的APL 436
10.2 BORLAND的TURBO PASCAL 441
10.3 MICROSOFT的BASIC编译器 445
10.4 MICROSOFT的C编译器 448
10.5 IBM的FORTRAN编译器 452
10.6 IBM的PASCAL编译器 456
附录A IBM Macro Assembler 461
附录B MICROSOFT Macro Assembler 477
附录C TURBO EDITASM 493
附录D ASCII字元表 507
附录E 库集管理器 511
中英名词对照 519