第一部分 PC的硬件和软件,以及它们如何协同工作 3
第1章 历史回顾 3
PC之前 3
IBM的5150 5
克隆 7
PC/AT 9
PS/2 10
现代PC 12
第2章 PC结构 17
处理器和支持结构“核心” 18
系统定时器 31
内存映射 34
卡总线(ISA、EISA和PCI) 36
大容量存储器 42
外围设备 50
配置信息 54
视频输出 57
PC电源 61
第3章 PC处理器 64
Intel 8086 65
8087和浮点计算 95
Intel 80386和80486 100
奔腾和对速度的需求 104
其他处理器 110
固件与软件 111
第4章 PC软件 111
操作系统 113
图形用户界面(GUI) 115
第5章 PC设备寻址 117
PC内存映射 117
PCI/ISA总线 123
中断分配 126
保护模式硬件特性 127
汇编语言指令 131
第二部分 PC接口软件 131
第6章 基本汇编程序编程 131
8080段分配 135
定义变量 137
源代码格式化 138
浮点编程 141
实地址模式编程 143
保护模式编程 143
宏指令与条件代码 146
汇编程序与高级语言程序的对比 148
第7章 中断编程 150
中断执行 150
软件中断 154
硬件中断 155
中断捕获 161
中断共享 163
处理程序框架 164
向中断处理程序传递参数 166
应用程序调试中断 167
第8章 PC引导过程 170
硬件引导 170
操作系统引导 176
第9章 BIOS接口 178
BIOS中断接口 179
控制台接口 179
何时使用BIOS功能 184
系统变量 185
多路复用中断 186
第10章 MS-DOS 187
DOS程序段前缀(PSP) 187
环境信息 193
DOS中断接口 195
实用图形编程 196
AUTOEXEC.BAT 206
CONFIG.SYS 207
第11章 MS-DOS命令行编程 208
批处理文件与解释程序 208
“微型”(.COM)内存模式程序 212
FINDCURS:世界上最小的一个有用的应用程序 221
可执行(.EXE)程序 222
设备驱动程序 227
第12章 无操作系统运行 229
ROM扩展 229
无操作系统软盘操作 230
第13章 MS-DOS编程语言与应用程序开发工具 240
批处理文件 241
汇编程序 244
BASIC 245
Pascal 246
C/C++ 247
链接目标文件 251
调试程序 257
编辑程序 261
第14章 实用PC编程 263
解析命令行参数 263
I/0接口代码 266
内存组织 270
读取和写入文件数据 271
数据排序及格式化 276
用户接口 279
格式化数据输出 281
第15章 事件驱动编程 282
用户接口 283
系统资源 286
第16章 Microsoft Windows 289
Windows的图形用户界面 290
Win16和Win32 293
WIN.INI和Windows注册表 294
安装程序 297
Windows应用程序 297
DOS保护模式接口 302
第17章 Windows编程语言与开发工具 304
Visual Basic 304
Visual C++ 305
Java 306
LabView 307
Microsoft设备驱动程序开发包 309
其他语言与开发工具 311
第18章 针对错误的编程 313
突发事件应用程序/PC崩溃/重置 314
处理用户输入 316
文件输入或输出 319
硬件 322
用户反馈 326
第19章 一台用于实验的PC 331
第三部 硬件接口 331
硬件要求 332
软件要求 333
复位控制 334
测试设备的装置 336
第20章 PC的精确定时 337
实时时钟的定时 337
总线时钟策略 338
微秒精度定时器的使用 341
第21章 键盘和鼠标端口 344
键盘同步通信协议 345
键盘端口的软件接口 347
键盘控制器 349
键盘端口共享 350
鼠标端口 352
键盘监控器 355
第22章 键盘接口 355
第23章 非标准的RS-232 358
异步串行通信和RS-232介绍 359
PC的RS-232端口 365
连接的制作 372
把RS-232逻辑电平转化成TTL/CMOS电平 376
为接口应用选择RS-232 381
微控制器的“Bit-Banging”串行接口软件 385
第24章 实用RS-232接口 390
在两台PC间进行串行数据传送 391
串行控制的起重机 394
第25章 Centronics并行端口 400
硬件配置 400
接口方式 405
并行端口的使用 408
第26章 实用并行端口连接 410
软件保护狗 411
第27章 ISA总线 417
总线信号 417
第28章 ISAI/0端口和RAM/ROM原型卡 433
I/0端口读写 436
存储器读写 437
扩充ROM和RAM引导程序 438
ISA NTSC合成视频帧抓取器 439
第29章 PCI总线 445
I/0总线 445
配置和PnP 451
中断 453
DMA 454
第30章 游戏杆接口 455
PC如何读取模拟量输入 456
数字控制在游戏杆的应用 460
寄存器接口 465
第31章 声霸卡 465
通过DMA存储器的WAV文件输出程序 484
第四部分 Windows编程 493
第32章 Windows结构 493
圆区与环 493
虚拟机 496
COM/OLE/ActiveX 502
第33章 Windows编程 504
程序开发 504
资源文件 506
实用Windows接口 512
第34章 Visual Basic编程 517
Visual Basic的特点 518
学用Visual Basic 522
开发和调试Visual Basic应用程序 524
第35章 Visual Basic控件 526
标准控件 527
自定义控件 533
MSComm串行控件 536
第36章 Visual C++ 549
“从3万英尺的高度看下来” 550
Visual C++语言 551
Microsoft开发工作室 555
Microsoft基本类(MFC) 560
调试Visual C++程序 561
Tic-Tac-Toe:第一个Visual C++程序 563
第五部分 Windows设备驱动程序 573
第37章 设备驱动程序类型 573
动态链接库(.DLL) 574
虚拟设备驱动程序(.VxD) 574
Win32设备模型(.WDM) 575
第38章 创建DLL 577
创建.DLL文件 577
DLL操作 579
第39章 虚拟设备驱动程序 582
虚拟设备驱动程序操作 583
事件处理 587
请求同步 589
虚拟设备驱动程序调试 590
VtoolsD 591
第40章 Win32设备模型 597
设备对象 598
输入输出请求对象 600
容件 601
请求控制和同步对象 603
中断 605
Win32设备模型初始化和卸载 607
Driver∷Works 608
第六部分 USB接口 611
第41章 什么是USB 611
第42章 Cypress CY7C6XX 617
处理器结构 618
指令集 625
开发工具 647
硬件特性 648
第43章 USB接口工程 655
Cypress USB例子温度计应用 655
第七部分 结束语 661
第44章 结束语 661
第八部分 附录 665
附录A 术语表 665
附录B 资源 684
联系作者 684
参考读物 685
爱好者网站 691
新闻组 696
附录C ASCII字符表 697
ASCII控制字符 697
IBM PC扩展ASCII字符 699
ANSI显示控制序列 701
Windows ASCII字符 703
附录D 键盘代码 706
附录E 标准设备地址 710
内存映射图 710
寄存器输入/输出地址 711
附录F BIOS变量 724
附录G 中断函数号 732
附录H BIOS函数中断 735
中断10h:视频 735
中断11h:设备确定 744
中断12h:得到存储器大小 745
中断13h:磁盘BIOS 745
中断14h:RS-232通信 750
中断15h:系统服务 752
中断16h:键盘接口 757
中断17h:打印机接口 759
中断19h:引导程序装载器 760
中断1Ah:系统定时器和RTC服务 760
中断33h:鼠标中断 762
附录I MS-DOS中断函数 769
中断20h——程序终止 769
中断21h——函数请求 770
中断22h——终止地址 786
中断23h——Ctrl-Break退出地址 787
中断24h——关键错误处理程序向量 787
中断25h&26h——绝对磁盘访问 790
中断27h——终止但保持驻留 791
中断2Fh——多路复用中断 792
中断28h~2Eh、30h~32h&34h~3Fh 795
附录J Windows扩展和按编号的DPMI中断函数 796
附录K 软件基本类分层图 805
附录L CD-ROM内容 807