第一章 Pop-up和Pull-down菜单 1
1.1 什么是Pop-up和Pull-down菜单 1
目录 1
1.2 显示适配器简介 2
1.3 通过BIOS 对屏幕进行操作 3
1.3.1 使用INT86()函数 3
1.3.2 保存屏幕 4
1.3.3 恢复屏幕 5
1.4 建立Pop-up菜单 6
1.4.1 显示一个菜单 7
1.4.2 显示菜单的边框 8
1.4.3 接受用户的选择 8
1.4.4 Pop-up函数 12
1.4.5 一个完整的Pop-up菜单程序实例 13
1.5 直接存取显示RAM 21
1.5.2 修改save video和restore video函数 23
1.5.1 确定显示RAM的地址 23
1.5.3 改进后的完整的Pop-up菜单程序实例 25
1.6 建立Pull-down菜单 33
1.6.1 菜单框架 34
1.6.2 建立一个菜单框架 34
1.6.3 Pull-down函数 36
1.6.4 恢复屏幕 37
1.6.5 一个使用Pull__down菜单的完整示例程序 37
第二章 Pop-up窗口 50
2.1 Pop-up窗口原理 50
2.2 窗口数据结构及其建立 51
2.2.1 窗口框架 51
2.2.2 建立一个窗口框架 51
2.3 窗口的激活和撤消 53
2.4.1 窗口光标定位函数 55
2.4 窗口输入输出函数 55
2.4.2 window__getche函数 56
2.4.3 window__gets函数 57
2.4.4 window__putchar函数 58
2.4.5 window__puts函数 59
2.4.6 其它处理屏幕的函数 60
2.5 实时改变窗口的大小和位置 62
2.6 建立和使用Pop-up窗口的应用程序 66
2.6.1 十进制到十六进制的转换 66
2.6.2 四功能计算器 67
2.6.3 Pop-up记事卡 70
2.7 一个完整的Pop-up窗口软件 72
2.8 窗口程序的改进 98
3.3 中断与DOS和BIOS 100
3.2 8086系列处理器的中断 100
3.1 什么是常驻内存的程序 100
第三章 常驻内存的Pop-up程序 100
3.4 Turbo C的中断函数修饰符 101
3.5 常驻程序的一般设计方法 102
3.6 使用屏幕打印中断 102
3.6.1 初始化部分 102
3.6.2 常驻部分 104
3.7 使用热键中断 121
3.7.1 键盘缓冲区 121
3.7.2 初始化部分 122
3.7.3 常驻部分 123
3.8 中断28H的秘密 143
3.9 常驻内存程序的问题 144
第四章 图形 148
4.1 显示方式和调色板 148
4.2 画点 149
4.3 画线 151
4.4 画矩形和填充矩形 153
4.5 画圆和填充圆 153
4.6 一个示范图形程序 156
4.7 保存和装入图形映像文件 162
4.8 图象的拷贝和搬移 165
4.9 二维图形的旋转 166
4.9.1 旋转一个点 166
4.9.2 旋转一个目标 167
4.10 一个完整的综合画图程序 176
第五章 动画设计 200
5.1 “精灵”(Sprites) 200
5.2 动画场地 200
5.3 屏幕级的移动 201
5.4 “精灵”级的跑动 208
5.5.1 边界的识别 210
5.5 动画数据的组织 210
5.5.2 用颜色表示目标 211
5.5.3 计算机在动画游戏中的角色 211
5.6 一个完整的动画程序 211
5.6.1 定义一个动画游戏 211
5.6.2 凭颜色识别目标 211
5.6.3 定义“精灵人” 212
5.6.4 主循环 213
5.6.5 计算机“精灵人”的跑动 217
5.6.6 检查是否相撞 220
5.6.7 完整的“抓瞎子”游戏程序 220
第六章 文件传送和最简单的局域网LAN 236
6.1 数据的异步串行的发送和接收 236
6.2 RS-232标准 237
6.2.1 RS-232标准信号 237
6.2.2 硬件握手 237
6.4.1 串行口的初始化 238
6.3 通信问题 238
6.4 通过BIOS调用存取PC机的串行口 238
6.4.2 发送一个字节 240
6.4.3 检查串行口的状态 240
6.4.4 接收一个字节 241
6.5 在计算机之间传送文件 242
6.5.1 软件握手 242
6.5.2 7位数据位与8位数据位 243
6.5.3 发送一个文件 243
6.5.4 接收一个文件 245
6.5.5 完整的文件传送程序 247
6.5.6 文件传送程序的改进 252
6.6 简单的局域网 253
6.6.1 文件服务器 253
6.6.2 装入文件 263
6.6.3 保存文件 267
6.6.4 局域网程序的改进 271
第七章 彩色文本屏幕 273
7.1 在文本方式下使用颜色 273
7.1.1 文本方式下的属性字节 273
7.1.2 写彩色字符串 273
7.2 改变光标的大小 276
7.3 滚动一部分屏幕 276
7.4 一个简单的表演程序 277
7.5 保存屏幕到一个盘文件上 282
第八章 声音 284
8.1 可编程定时器8253 284
8.2 一个简单的听力测试程序 285
8.3 产生“警笛声” 286
8.4 产生“激光冲击波声音” 287
8.5 产生“天体”音乐 288
9.1 鼠标基础 290
第九章 鼠标(Mouse)接口 290
9.2 虚拟的与实际的屏幕 291
9.3 鼠标库函数 291
9.3.1 复位和取状态 291
9.3.2 点亮鼠标光标 291
9.4 高级鼠标函数 291
9.3.3 熄灭鼠标光标 292
9.3.4 读按钮状态和光标位置 292
9.3.5 设置光标位置 292
9.3.6 读鼠标移动方向和距离 292
9.4.1 复位鼠标 292
9.4.2 点亮和熄灭鼠标光标 293
9.4.3 确定是否按下了按钮 293
9.4.4 读取鼠标的移动 294
9.4.6 一个简单的表演程序 295
9.4.5 读和设置光标的位置 295
9.5 用鼠标来画图 300
9.5.1 两个预备函数 300
9.5.2 主循环 302
9.5.3 用鼠标画一个目标 309
9.5.4 修改后的完整的画图程序 313
10.1.2 判断排序算法优劣的原则 340
10.1.1 排序算法的分类 340
10.1 排序概述 340
第十章 排序和查找 340
10.2 冒泡排序法 341
10.2.1 冒泡排序法 341
10.2.2 “拉锯式”排序法 343
10.3 选择排序法 344
10.4 插入排序法 345
10.5 shell 排序法 346
10.6 uick sort排序法 348
10.7 字符串数组的排序 350
10.8 结构的排序 351
10.9 随机盘文件排序 353
10.10 顺序文件的排序 356
10.11 查找 359
10.11.1 顺序查找 359
10.11.2 折半查找 359
第十一章 队列、堆栈、链表和二叉树 361
11.1 队列 361
11.1.1 线性队列 361
11.1.2 环形队列 365
11.2 堆栈 368
11.3 链表 372
11.3.1 单向链表 372
11.3.2 双向链表 376
11.3.3 一个使用双向链表的通信地址管理程序 379
11.4 二叉树 386
第十二章 动态分配 395
12.1 动态分配和释放函数 395
12.2 稀疏矩阵 396
12.2.1 链表法 397
12.2.2 二叉树法 400
12.2.3 指针数组法 403
12.2.4 三种方法的比较 405
12.3 局部变量的动态分配 406
12.4 内存大小未知:一个文本编辑程序 408
12.5 内存的碎片化 416
12.6 动态分配与人工智能 416
第十三章 条形图 428
13.1 数据的规格化 428
13.2 条件图的工具函数 428
13.2.1 画一组条形块 428
13.2.3 写标号 430
13.2.2 画底线 430
13.2.4 画参考线 431
13.2.5 写图例 431
13.3 条形图表演程序 432
13.4 条形图实用程序 440
13.4.1 主函数main 440
13.4.2 接受输入的函数enter 442
13.4.3 找最小和最大值的函数min__max 443
13.4.4 完整的条形图实用程序 444
第十四章 统计分析 458
14.1 基本的统计方法 458
14.1.1 平均值 458
14.1.2 中间值 459
14.1.3 典型值(众数) 460
14.1.4 平均值、中间值和典型值的比较 461
14.2 方差和均方差 462
14.3 统计图 463
14.4 规划和预测 466
14.5 一个完整的统计程序 470
14.5.1 一个完整的统计程序 470
14.5.2 如何使用这个统计程序 480
第十五章 加密和数据压缩 481
15.1 概述 481
15.2 替代加密法 481
15.3 换位加密法 491
15.4 位操作法 497
15.5 破密 501
15.6 数据压缩 504
第十六章 模拟 508
16.1 模拟和随机数 508
16.2 超级市场收款台的模拟 508
17.1 表达式 516
第十七章 表达式的分析计算 516
17.2 表达式的分解 517
17.3 表达式的分析 520
17.4 一个简单的表达式分析程序 521
17.5 可以处理变量的表达式分析程序 528
17.6 递归下降分析的语法检查 537
第十八章 BASIC解释程序 539
18.1 一个小小的BASIC 539
18.2 main主循环 541
18.3 赋值语句 543
18.4 PRINT命令 544
18.5 INPUT命令 545
18.6 GOTO命令 546
18.7 IF命令 550
18.8 FOR循环命令 551
18.9 GOSUB命令 554
18.10 完整的小小BASIC解释程序 556
18.11 使用这个小小BASIC 577
第十九章 C语言和汇编语言的混合编程 579
19.1 C语言调用汇编语言子程序方法简单介绍 579
19.2 汇编语言中的段和组 581
19.3 指针NEAR,FAR和HUGE 583
19.4 C编译的内存模式 585
19.5 C语言中的段和组 588
19.6 C语言和汇编语言的混合编程 591
19.6.1 段的组合问题 591
19.6.2 定义变量和常数 592
19.6.3 变量和函数名的相互引用 592
19.6.4 参数传递原则 593
19.6.5 返回值 594
19.6.6 寄存器规则 594
19.7 汇编语言调用C语言示例 595