第一章 IBM PC/XT与长城0520概述 1
1.1 IBM PC及IBM PC/XT的组成 1
目录 1
1.1.1IBM PC/XT系统板 2
1.1.2电源系统 7
1.1.3扩充部件 8
1.2 系统软件 9
1.2.1操作系统 9
1.2.2 PC—DOS结构 10
1.2.3DOS的启动 13
1.2.4行编辑程序EDLIN 14
1.2.5调试程序DEBUG 16
1.3长城0520微机系统简介 20
2.2 8088的内部寄存器 24
第二章 8088微处理器 24
2.1 8088的内部结构 24
2.3存贮器的分段与物理地址的形成 29
2.4 8088的引脚信号 29
2.5 8088的指令系统 32
2.5.1寻址方式 33
2.5.2数据传送指令 34
2.5.3算术运算指令 37
2.5.4逻辑运算指令 41
2.5.5字符串操作指令 43
2.5.6转移指令 45
2.5.7处理器控制指令 48
3.1扩充插槽引脚 50
第三章 扩充插槽信号及系统总线操作 50
3.1.1扩充插槽信号 51
3.1.2扩充插槽供电引脚及地线 54
3.2系统总线操作时序 55
3.2.1存贮器读总线周期 56
3.2.2存贮器写总线周期 57
3.2.3 I/O读总线周期 57
3.2.4 I/O写总线周期 58
3.2.5 DMA操作下存贮器读和I/O写总线周期 59
3.2.6 DMA操作下I/O读和存贮器写总线周期 60
3.3总线周期的延长 61
3.3.1等待状态控制电路 62
3.3.2存贮器读或写总线周期的延长 64
3.3.4 DMA存贮器读和I/O写及I/O读存贮器写总线周期的延长 67
3.3.3 I/O读或写总线周期的延长 67
第四章 逻辑电路与接口 71
4.1 TTL电路 71
4.1.1集电极开路TTL 72
4.1.2三态门 72
4.1.3 TTL电路参数 73
4.1.4 TTL电路的噪声容限 75
4.1.5标准的54/74TTL改进电路 75
4.2 MOS电路 78
4.2.1 CMOS电路 79
4.2.2 CMOS电路的主要参数 80
4.2.3国外CMOS电路主要生产公司及产品型号 81
4.3.1 TTL系列间的连接 82
4.3各系列逻辑电路之间接口 82
4.3.2 TTL到CMOS的接口 82
4.2.54HC/74HC系列高速CMOS电路简介 82
4.2.4 国产CMOS集成电路命名规定 82
4.3.3 CMOS到TTL接口 85
4.3.4双极型晶体管到TTL或CMOS接口 85
4.3.5 TTL到双极晶体管 86
4.3.6 CMOS到双极性晶体管 86
4.4PAL(Programmable Array Logic)电路 86
4.4.1 PLD逻辑图画法 88
4.4.2四种PLD的结构特点 89
4.4.3 PAL器件的类型 90
4.4.4 PAL器件号的命名规定 91
4.4.5 PAL器件的使用和设计编程 93
4.4.6 PAL的编程写入 97
4.5.1 GAL的基本原理 98
4.5 GAL(Generic Array Logic)电路 98
4.5.2 GAL16V8 100
4.5.3 GAL20V8 101
4.5.4 GAL器件的使用和编程 102
第五章 I/O接口地址译码技术 106
5.1 I/O接口的寻址方式 106
5.2 PC/XT I/O口地址分配图 107
5.3 口地址译码方法 108
5.3.1用门电路进行口地址译码 108
5.3.2用译码器进行口地址译码 110
5.3.3用比较器进行口地址译码 112
第六章 汇编语言 115
6.1汇编语言的语句 115
6.1.1常数 116
6.1.2伪指令 117
6.1.3汇编语言的运算符 125
6.2汇编语言源程序结构 127
6.3源程序的编辑、汇编、连接过程 129
6.3.1源程序的编辑 129
6.3.2源程序的汇编 131
6.3.3目标文件的连接 133
6.4汇编程序的执行 134
6.4.1程序段前缀PSP(Program Segment Prefix) 135
6.4.2 EXE文件和COM文件 136
6.4.3用DEBUG控制程序的执行 138
6.5对磁盘文件进行存取的程序设计 139
6.5.1顺序存取方式 142
6.5.2随机存取方式 145
6.5.3随机块存取方式 147
6.5.4文件代号式存取方式 153
6.6模块化程序设计 163
第七章 BASIC用于接口编程 167
7.1 BASIC对文件操作的几个命令 167
7.1.1调用BASIC的命令及几个文件操作命令 167
7.1.2程序的保存格式及命令 169
7.1.3程序的链接和合并命令 169
7.2菜单程序的编程方法 172
7.2.1屏幕信息显示 172
7.2.2键盘输入方法 173
7.3数据文件的存取 178
7.3.1顺序文件 178
7.3.2随机存取文件 180
7.4 BASIC调用汇编语言程序的方法 183
7.4.1内存分配 183
7.4.2汇编语言程序的装入方法 184
7.4.3汇编语言程序的调用 186
7.5 BASIC编译程序 193
7.5.1 BASIC程序编译 194
7.5.2 BASIC编译目标文件同汇编语言程序的连接 195
第八章 True BASIC简介 196
8.1 True BASIC程序的编辑 196
8.2 True BASIC常用的几个命令 198
8.3 True BASIC和其它BASIC的异同 198
8.4函数和子程序及库文件 200
8.5控制转移的结构 202
8.5.1 SELECT CASE语句 202
8.5.2 IF语句 203
8.6循环结构 204
8.6.1 DO循环 204
8.6.2带WHILE和UNTIL条件的DO循环 204
8.7.1 MATREAD语句 205
8.6.3 MORE DATA和END DATA的使用 205
8.7 MAT语句 205
8.7.2 MAT PRINT语句 206
8.7.3 MAT INPUT和MAT LINE INPUT 206
8.7.4 MAT赋值语句 206
8.7.5矩阵运算 206
8.8 CHAIN语句和PROGRAM语句 206
8.9 画图 207
8.9.1设置图形窗口和坐标的语句 207
8.9.2画点语句 208
8.9.3画线语句 209
8.9.4 BOX语句 209
8.9.6 区域着色语句PLOT AREA 210
8.10定义一个图象 210
8.9.5 图中写标记语句PLOT TEXT 210
8.10图象的变换 211
8.10.2图象的嵌套 212
8.11屏幕工作方式 213
8.11.1设置方式语句和设置颜色语句 213
8.11.2工作方式 214
8.12多窗口的设置 216
8.12.1打开窗口 216
8.12.2窗口间的转换 217
8.12.3在窗口内设置光标 217
8.13系统库文件 218
8.13.1数学函数库文件 218
8.13.2图形子程序库文件 220
8.13.3菜单子程序库文件 220
8.14.2 EXTYPE函数 222
8.14错误处理 222
8.14.1错误处理程序结构 222
8.14.3 EXTEXT?函数 223
8.14.4 EXLINE?函数 223
8.14.5 CAUSE ERROR语句 223
8.15文件的存取 223
8.15.1通道 224
8.15.2 OPEN语句 224
8.15.3 CLOSE语句 225
8.15.4 ERASE语句 225
8.15.5 UNSAVE语句 225
8.15.6 SET语句 225
8.15.7 ASK语句 225
8.16.2 INPUT语句 226
8.16.1 PRINT语句 226
8.16文本文件 226
8.16.3文本文件应用例 227
8.16.4打印机输出 228
8.17记录文件 228
8.17.1记录长度 228
8.17.2 WRITE语句 228
8.17.3 READ语句 229
8.17.4复合记录 229
8.18字节 文件 230
8.18.1字节 文件的写入 230
8.18.2字节 文件的读出 231
8.19汇编语言程序的调用 231
8.19.1汇编语言程序的要求 232
8.19.4字符串变量存放格式 233
8.19.5数组变量存放格式 233
8.19.3变量值的存放格式 233
8.19.2程序间变量的传递 233
8.19.6字符串数组变量存放格式 234
8.19.7 True BASIC调用汇编程序的例子 234
8.19.8 PEEK和POKE命令 238
8.20源程序编译文件的生成 238
第九章 TURBO PASCAL语言 239
9.1 TURBO PASCAL的使用要求 239
9.2 TURBO PASCAL的各种工具箱 240
9.3 TURBO PASCAL的启动 241
9.4语法单位 246
9.4.1专用符号 246
9.4.5标识符 247
9.4.4保留字 247
9.4.3编译开关 247
9.4.2 注释 247
9.4.6数字 248
9.4.7字符串 249
9.5程序结构 249
9.5.1程序首部 249
9.5.2说明部分 249
9.5.3语句部分 251
9.6纯量数据类型 251
9.6.1标准纯量类型 251
9.6.2自定义纯量类型 251
9.6.3子界类型 253
9.7表达式 253
9.7.1运算符 253
9.7.2函数调用 254
9.8语句 255
9.8.1简单语句 255
9.8.2结构化语句 255
9.9字符串类型 258
9.9.1字符串类型定义 259
9.9.2字符串表达式 259
9.9.3字符串赋值 259
9.9.4字符串和字符 259
9.10数组类型 260
9.10.1数组定义 260
9.10.2多维数组 260
9.10.3字符数组 261
9.11集合类型和记录类型 261
9.11.1集合类型 261
9.11.2集合的运算 262
9.11.3记录类型 263
9.11.4 WITH语句 264
9.11.5变体记录 264
9.12类型常数 266
9.12.1非结构类型常数 266
9.12.2结构类型常数 266
9.13文件类型 268
9.13.1文件类型定义 268
9.13.2文件的操作 269
9.13.3文件标识函数 270
9.13.4文件操作示例 271
9.13.5文本文件 273
9.13.6文本文件操作的各种过程 273
9.13.7标准文件 275
9.13.8文本文件的输入和输出操作 276
9.13.9重定向标准输入输出设备 278
9.13.10无类型文件 279
9.13.11 I/O检查 281
9.14指针和动态数据结构 282
9.14.1指针的使用 283
9.14.2用于堆管理的几个标准过程 284
9.15程序中文件的嵌入 285
9.16函数和过程 286
9.16.1自定义函数 286
9.16.2标准函数 287
9.16.3自定义过程 290
9.16.4标准过程 292
9.17.1建立覆盖 295
9.17覆盖技术 295
9.17.2覆盖文件的管理 296
9.17.3覆盖技术的限制 296
9.17.4 Chain和Execute过程 296
9.18图形功能 297
9.18.1文本方式 297
9.18.2图形方式 298
9.18.3窗口的设置 299
9.18.4基本图形功能 301
9.18.5扩充的图形功能 301
9.18.6海龟作图 303
9.18.7发声过程 303
9.19绝对地址操作 304
9.19.2绝对地址函数 305
9.19.1绝对地址变量 305
9.19.3预定义数组 306
9.19.4 DOS调用、中断、嵌入机器码的标准过程 306
9.19.5用户定义I/O驱动程序 308
9.20 TURBO PASCAL程序调用汇编子程序 309
9.20.1汇编子程序的调用 309
9.20.2 TURBO PASCAL程序中嵌入汇编子程序 312
本章 附录一编译开关 313
本章 附录二 出错信息 315
本章 附录三I/O错误信息 317
第十章 中断系统 320
10.1 PC机的中断类型 320
10.1.1软中断 320
10.1.2硬中断 320
10.1.3中断向量表 321
10.2 8259可编程中断控制器 323
10.1.4软中断的执行过程 323
10.3 8259的引脚功能 324
10.3.1 8259中断控制器的引脚 324
10.3.2 8259的编程 325
10.3.3 PC/XT机对8259编程的有关程序段 333
10.3.4 8259中断控制器在系统中的连接 334
10.4硬中断的执行过程 335
10.5中断服务程序 337
10.5.1 中断向量表中断入口地址的填入 337
10.5.2编写中断服务程序 340
10.5.3用TURDO PASCAL语言编写中断服务程序 340
10.5.4应用中断服务程序的一个实例 342
10.6 PC/XT系统中断请求线的扩充 347
10.7 中断请求线的接口电路 352
第十一章 8253—5定时器/计数器 353
11.1 8253—5的基本结构及功能 353
11.1.1内部结构 353
11.1.2 8253—5各引脚介绍 354
11.1.3功能 355
11.2 8253—5的编程 355
11.2.1写控制字 355
11.2.2赋初值 356
11.3工作方式说明 356
11.4对8253—5的读写操作 360
11.4.1写操作 360
11.5.1计数器0 361
11.5.2计数器1 361
11.4.2读操作 361
11.5 8253—5在系统中的使用 361
11.5.3计数器2 362
11.6 BIOS对8253的编程 362
11.7计数器0的应用 364
11.7.1 扩展时钟中断处理程序的例子——百分秒表 364
11.7.2时钟中断扩展程序清单 365
11.7.3重新编写时钟中断处理程序的例子——日时钟 370
11.7.4 INT ICH中断的使用例—窗口显示 373
11.7.5使用定时中断调用(1AH)测时间 374
11.8计数器2的应用 376
11.9附加的定时/计数器接口电路 378
11.9.1硬件说明 379
11.9.2电路的编程 381
12.1.1 8237的基本结构及功能 386
第十二章 直接存贮器存取(DMA) 386
12.1 8237A—5 DMA控制器的结构及功能 386
12.1.2 8237的时序 393
12.1.3 8237的初始化 394
12.2 8237A—5在系统中的使用 397
12.2.1硬件线路 397
12.2.2 PC机中DMA操作过程 400
12.2.3 BIOS对8237控制器的初始化 401
12.3系统DMA通道的用户使用 402
12.3.1 用户使用系统DMA通道的接口电路 403
12.3.2 DMA初始化的编程 404
12.4使用DMA通道的实例 407
12.4.1 8位A/D转换的DMA传递 408
12.4.2 12位A/D转换的DMA传递 409
13.1 简单的并行输入输出接口 410
13.1.1并行输入 410
第十三章 并行输入输出接口方法 410
13.1.2并行输出 412
13.1.3脉冲式输出 413
13.1.4双向式输入输出 414
13.1.5带有联络信号的输入输出 415
13.1.6中断式输入 417
13.2 8255A—5可编程并行接口芯片 417
13.2.1内部结构 418
13.2.2 8255引脚介绍 419
13.2.3工作方式控制字 420
13.2.4三种工作方式 423
13.2.5 8255的编程 426
13.2.6应用实例 427
13.3 IEEE—488总线 435
13.3.1 IEEE—488总线各信号线的功能 436
13.3.2 IEEE—488的规定 438
13.3.3 IEEE—488的接口功能 439
13.3.4 IEEE—488数据传送的时序 440
13.3.5 IEEE—488地址和命令的形成 440
13.3.6 IEEE—488的组成 443
13.3.7简易IEEE—488接口应用例 445
13.4 GPIB—PC接口卡的使用 446
13.4.1 GPIB—PC卡的安装 446
13.4.2 GPIB—PC卡的编程方法 447
13.4.3 GPIB—PC卡的示范程序 450
13.4.4 GPIB—PC卡的应用实例 452
第十四章 异步串行通讯 456
14.1 异步串行通讯接口方式 456
14.1.1 RS—232—C 457
14.1.2 20mA电流环 458
14.2异步通讯芯片8250 459
14.2.1信号引脚 460
14.2.2可存取的8250内部寄存器 463
14.3异步通讯适配器的硬件逻辑 468
14.3.1地址译码电路 468
14.3.2 8250控制罗辑电路 468
14.3.3异步通讯接口电路 470
14.4 8250的编程 470
14.4.1 8250的初始化 470
14.4.2通讯程序的编制 472
14.4.3用BASIC实现异步串行通讯的方法 483
14.4.4用TURBO PASCAL实现异步串行通讯的方法 487
14.5 RS—232—C接口应用实例 490
14.5.1与Z80微处理器间的半双工异步通讯 490
14.5.2与APPLEⅡ微机间的半双工异步通讯 496
14.5.3使用出售的APPLEⅡ异步串行卡实现通讯 499
14.5.4与PC—1500袖珍机间的半双工异步通讯 503
14.5.5接收数字仪表的测量数据 508
14.5.6接收模拟仪表输出的测量值 509
第十五章 模拟输入输出技术 514
15.1运算放大器 514
15.1.1反相放大器 516
15.1.2同相放大器 516
15.1.3加法器 516
15.1.4减法器 517
15.1.5积分放大器 517
15.2电压比较器 518
15.2.1 电压比较器的基本特性 518
15.3模拟输入输出系统 519
15.2.2电压比较器的应用 519
15.4 D/A转换器 522
15.4.1 D/A转换器的输出 525
15.4.2 D/A转换器的主要参数 527
15.4.3常用D/A转换芯片 528
15.5 D/A转换器与PC机的接口与应用例 532
15.6多通道模拟开关 542
15.6.1常用的模拟开关器件 543
15.6.2模拟开关主要参数 544
15.6.3双向多通道模拟开关 546
15.7采样保持电路 548
15.7.1采样保持电路主要参数 548
15.7.2常用的采样保持器器件 549
15.8 A/D转换器 551
15.8.2积分法 552
15.8.1二进制斜坡法 552
15.8.3逐次比较法 553
15.8.4 A/D转换电路的主要参数 554
15.8.5常用A/D转换芯片 555
15.8.6二个使用AD574A的12位模数转换电路 560
15.8.7 ADC1210,ADC1211 567
15.8.8一个使用ADC1210的12位模数转换电路 569
15.8.9低价格的12位A/D、D/A转换电路卡 572
15.8.10实用的8位A/D、D/A转换电路卡的编程 582
15.9 8位A/D、D/A转换电路卡的编程 586
15.9.1 A/D与D/A转换的BASIC程序 588
15.9.2 A/D电路转换的TURBO PASCAL程序 590
15.9.3采用汇编语言的A/D采样程序 592
15.9.4采用定时器中断的A/D采样程序 595
15.9.5采用中断方式的A/D采样汇编语言程序 600
15.9.6采用TURBO PASCAL语言的A/D中断采样程序 603
第十六章 印制电路板的设计 608
16.1电源噪声 608
16.2地线噪声 609
16.3电和磁的干扰 610
16.4印制板设计要点 611
16.5印制板的尺寸和器件布局 613
16.6信号线和集成电路一些引出端的处理 613
16.7 PC实验卡的设计 614
16.8印制电路板的绘制 618
17.1.1屏蔽线的使用 622
17.1.2同轴电缆的使用 622
17.1.3双绞线的使用 622
17.1各种传输线的使用 622
第十七章 传输线技术 622
17.1.4扁平带状电缆的使用 623
17.1.5光电隔离的使用 624
17.1.6光纤的使用 624
17.2用软件消除输入干扰的方法 625
17.3传输线对信号的反射 627
17.3.1信号沿传输线的运动 627
17.3.2传输线的终端反射 629
17.4传输线阻抗匹配的方法 634
17.5驱动器与接收器的选择 636
17.5.1三态门 636
17.5.2集电极开路驱动器 637
17.5.3大功率输出驱动器 638
附录1 ROM BIOS中断 640
附录2DOS的软件中断与系统功能调用 643