丛书序
为什么开发深入浅出系列丛书?
目的是从读者角度写书,开发出高质量的、适合阅读的图书。
“不积跬步,无以至千里;不积小流,无以成江海。”知识的学习是一个逐渐积累的过程,只有坚持系统地学习知识,深入浅出,坚持不懈,持之以恒,才能把一类技术学习好。坚持的动力源于所学内容的趣味性和讲法的新颖性。
计算机课程的学习也有一条隐含的主线,那就是“提出问题→分析问题→建立数学模型→建立计算模型→通过各种平台和工具得到最终正确的结果”,培养计算机专业学生的核心能力是“面向问题求解的能力”。由于目前大学计算机本科生培养计划的特点,以及受教学计划和课程设置的原因,计算机科学与技术专业的本科生很难精通掌握一门程序设计语言或者相关课程。各门课程设置比较孤立,培养的学生综合运用各方面的知识能力方面有欠缺。传统的教学模式以传授知识为主要目的,能力培养没有得到充分的重视。很多教材受教学模式的影响,在编写过程中,偏重概念讲解比较多,而忽略了能力培养。为了突出内容的案例性、解惑性、可读性、自学性,本套书努力在以下方面做好工作。
1. 案例性
所举案例突出与本课程的关系,并且能恰当反映当前知识点。例如,在计算机专业中,很多高校都开设了高等数学、线性代数、概率论,不言而喻,这些课程对于计算机专业的学生来说是非常重要的,但就目前对不少高校而言,这些课程都是由数学系的老师讲授,教材也是由数学系的老师编写,由于学科背景不同和看待问题的角度不同,在这些教材中基本都是纯数学方面的案例,作为计算机系的学生来说,学习这样的教材缺少源动力并且比较乏味,究其原因,很多学生不清楚这些课程与计算机专业的关系是什么。基于此,在编写这方面的教材时,可以把计算机上的案例加入其中,例如,可以把计算机图形学中的三维空间物体图像在屏幕上的伸缩变换、平移变换和旋转变换在矩阵运算中进行举例;可以把双机热备份的案例融入马尔科夫链的讲解;把密码学的案例融入大数分解中等。
2. 解惑性
很多教材中的知识讲解注重定义的介绍,而忽略因果性、解释性介绍,往往造成知其然而不知其所以然。下面列举两个例子。
(1) 读者可能对OSI参考模型与TCP/IP参考模型的概念产生混淆,因为两种模型之间有很多相似之处。其实,OSI参考模型是在其协议开发之前设计出来的,也就是说,它不是针对某个协议族设计的,因而更具有通用性。而TCP/IP模型是在TCP/IP协议栈出现后出现的,也就是说,TCP/IP模型是针对TCP/IP协议栈的,并且与TCP/IP协议栈非常吻合。但是必须注意,TCP/IP模型描述其他协议栈并不合适,因为它具有很强的针对性。说到这里读者可能更迷惑了,既然OSI参考模型没有在数据通信中占有主导地位,那为什么还花费这么大的篇幅来描述它呢?其实,虽然OSI参考模型在协议实现方面存在很多不足,但是,OSI参考模型在计算机网络的发展过程中起到了非常重要的作用,并且,它对未来计算机网络的标准化、规范化的发展有很重要的指导意义。
[1]〖2〗深入浅出微机原理与接口技术(第2版)[1]丛书序〖2〗(2) 再例如,在介绍原码、反码和补码时,往往只给出其定义和举例表示,而对最后为什么在计算机中采取补码表示数值?浮点数在计算机中是如何表示的?字节类型、短整型、整型、长整型、浮点数的范围是如何确定的?下面我们来回答这些问题(以8位数为例),原码不能直接运算,并且0的原码有+0和-0两种形式,即00000000和10000000,这样肯定是不行的,如果根据原码计算设计相应的门电路,由于要判断符号位,设计的复杂度会大大增加,不合算;为了解决原码不能直接运算的缺点,人们提出了反码的概念,但是0的反码还是有+0和-0两种形式,即00000000和11111111,这样是不行的,因为计算机在计算过程中,不能判断遇到0是+0还是-0;而补码解决了0表示的唯一性问题,即不会存在+0和-0,因为+0是00000000,它的补码是00000000,-0是10000000,它的反码是11111111,再加1就得到其补码是100000000,舍去溢出量就是00000000。知道了计算机中数用补码表示和0的唯一性问题后,就可以确定数据类型表示的取值范围了,仍以字节类型为例,一个字节共8位,有00000000~11111111共256种结果,由于1位表示符号位,7位表示数据位,正数的补码好说,其范围从00000000~011111111,即0~127;负数的补码为10000000~11111111,其中,11111111为-1的补码,10000001为-127的补码,那么到底10000000表示什么最合适呢?8位二进制数中,最小数的补码形式为10000000;它的数值绝对值应该是各位取反再加1,即为01111111+1=10000000=128,又因为是负数,所以是-128,即其取值范围是-128~127。
3. 可读性
图书的内容要深入浅出,使人爱看、易懂。一本书要做到可读性好,必须做到“善用比喻,实例为王”。什么是深入浅出?就是把复杂的事物简单地描述明白。把简单事情复杂化的是哲学家,而把复杂的问题简单化的是科学家。编写教材时要以科学家的眼光去编写,把难懂的定义,要通过图形或者举例进行解释,这样能达到事半功倍的效果。例如,在数据库中,第一范式、第二范式、第三范式、BC范式的概念非常抽象,很难理解,但是,如果以一个教务系统中的学生表、课程表、教师表之间的关系为例进行讲解,从而引出范式的概念,学生会比较容易接受。再例如,在生物学中,如果纯粹地讲解各个器官的功能会比较乏味,但是如果提出一个问题,如人的体温为什么是37℃?以此为引子引出各个器官的功能效果要好得多。再例如,在讲解数据结构课程时,由于定义多,表示抽象,这样达不到很好的教学效果,可以考虑在讲解数据结构及其操作时用程序给予实现,让学生看到直接的操作结果,如压栈和出栈操作,可以把PUSH()和POP()操作实现,这样效果会好很多,并且会激发学生的学习兴趣。
4. 自学性
一本书如果适合自学学习,对其语言要求比较高。写作风格不能枯燥无味,让人看一眼就拒人千里之外,而应该是风趣、幽默,重要知识点多举实际应用的案例,说明它们在实际生活中的应用,应该有画龙点睛的说明和知识背景介绍,对其应用需要注意哪些问题等都要有提示等。
一书在手,从第一页开始的起点到最后一页的终点,如何使读者能快乐地阅读下去并获得知识?这是非常重要的问题。在数学上,两点之间的最短距离是直线。但在知识的传播中,使读者感到“阻力最小”的书才是好书。如同自然界中没有直流的河流一样,河水在重力的作用下一定沿着阻力最小的路径向前进。知识的传播与此相同,最有效的传播方式是传播起来损耗最小,阅读起来没有阻力。
欢迎联系清华大学出版社白立军老师投稿: bailj@tup.tsinghua.edu.cn。
2014年12月15日随着电子计算机科技的迅速普及和发展,微型计算机的性能已达到或超过以前的大中型机,并被广泛应用于科学计算、数据处理、办公自动化、工程控制、辅助系统、仿真,甚至日常通信等诸多领域。人类已进入到以计算机技术为主导的信息社会。
计算机科技几乎每隔一段时间就有一个重大变化,最近十年更是处于加速发展阶段。这一点也为编者带来了巨大的困难。计算机科学与技术发展到今天,单纯的微机操作技能已经在社会生活中得到普及,单纯的软件编程人才已不能满足社会的需求,而软硬件结合的计算机科学技术人才供不应求。
因此,微型计算机原理及接口技术为高等学校理工科众多学科类专业大学生必修的一门专业基础课。
本书按照本科的教学大纲的要求和教学特点进行编写。
学习本课程的目的在于让学生从理论与实际结合的基础上理解与掌握微型计算机的基本组成、工作原理、各类接口部件的功能,以及构建微机系统等方面的知识,使学生初步具有微机应用系统软硬件综合开发的能力。
为了给读者奉献一本高质量的教材,我们在编写中努力坚持以下几个原则。
(1) 努力追踪微机快速发展的历程,努力反映计算机科技的最新成果。读者可以从每一章中看到这一点。
(2) 以应用为目的,删繁就简,突出重点、内容少而精。加强基本概念、基本分析方法基本技术手段的阐述;密切结合计算机专业实际。
(3) 微型计算机原理及接口技术类的教材甚多,但鉴于计算机科技的深奥,本书为降低其难度,在语言描述上下了大工夫。本书努力贯彻启发式的教学原则,使逻辑线索简明、清晰、合理;物理概念清楚,深入浅出;语言生动流畅,通俗易懂。并注重典型电路和芯片的介绍。
(4) 注重实践技能的培养和分析问题解决问题能力的培养。
(5) 图表精选,说明性强。
本书共分为13章,主要内容如下。
第1章介绍计算机的分类及应用、微型计算机的基本组成、微型计算机中数制转换、数和字符的编码等内容。第2章介绍CPU。为了说明CPU的复杂结构和工作原理,我们从最简单、最容易说明问题的典型芯片8086/8088微处理器说起,叙述了CPU相关的基础知识,讨论了CPU的主流技术术语(诸如超标量流水线技术、指令分支预测技术、Pentium Pro的乱序执行、RISC、SIMD以及MMX、SSE(SSE2)、64位新体系等新理论和[1]〖2〗深入浅出微机原理与接口技术(第2版)[1]前言〖2〗新技术等),回顾了CPU发展的辉煌历程以及CPU发展的潮流和未来。第3章讨论微型计算机的寻址方式和指令系统。第4章讨论了汇编语言初步。第5章讨论了总线与主板,介绍了总线与主板结构的新变化和新技术。第6章讨论了存储器及管理模式,介绍了USB 2.0和移动存储等等新技术。第7章讨论了中断技术,介绍了PCI中断等新技术。第8章概述了微型计算机接口技术并讨论了直接存储器访问技术,并从实践的角度介绍了常用微机外部实用接口,讨论了USB接口、IEEE 1394串行接口、SCSI接口、SATA接口和PCI接口等等新技术。第9章讨论了并行通信及接口芯片。第10章讨论了串行数据接口。第11章讨论了8253可编程定时计数器。第12章讨论了数/模、模/数转换器及其与CPU的接口。
微型计算机原理及接口技术是一门实践性很强的课程。为了加强对学习的辅导和实践能力的培养,本书配有《深入浅出微机原理与接口技术(第2版)实验与解题指导》一书。
本书适合高等学校理工科电子类和电气自动化类以及信息类各专业,特别是涉及单片机、嵌入式等芯片级计算机应用各类专业大学生本科的学生使用,也可供相关专业的应用型本科生选用,还可供广大工程技术人员学习参考。
本书为任课教师配有电子教案,此教案用PowerPoint制作。
本书由何超教授主编,钟建、龙君芳、徐昊、孔令美、钟桂凤、张艳红、何翔等参编。
限于编者的水平,书中错误和不妥之处在所难免,敬请广大读者和专家批评指正。
编者
2016年10月
第1章概述1
1.1计算机及其基本组成1
1.1.1信息社会和计算机1
1.1.2计算机的分类2
1.1.3计算机的基本组成4
1.1.4微型计算机的硬件系统和软件系统5
1.2进位计数制7
1.2.1数制7
1.2.2数在不同进制之间的转换9
1.3微型计算机中数的编码和字符的表示12
1.3.1二进制数值数据的编码12
1.3.2十进制数值数据的编码——BCD码17
1.3.3定点数与浮点数在计算机中的表示19
1.3.4计算机中非数值数据的编码22
1.4计算机和微型计算机的发展概况24
1.4.1计算机的发展24
1.4.2微型计算机的发展27
1.4.3计算机的应用范围28
习题130
第2章微处理器34
2.1微处理器概述34
2.1.1CPU的基本概念34
2.1.28086 CPU的编程结构37
2.1.3通用CPU的组成42
2.1.4微型计算机的存储器组织44
2.1.58086的工作模式和引脚功能48
2.1.68086 CPU的总线时序55
2.1.78086的总线控制权60[1]〖2〗深入浅出微机原理与接口技术(第2版)[1]目录〖2〗2.1.8指令系统62
2.1.9CPU的架构和封装方式63
2.1.10CPU主流技术术语浅析66
2.2典型的CPU及其发展历程72
2.2.1Intel CPU73
2.2.2Intel CPU型号的标注法76
2.2.3AMD CPU76
2.2.4AMD CPU型号的编号78
2.2.5从CPU表面看其性能指标80
2.2.6龙芯CPU81
2.3CPU的潮流与未来82
2.3.1多核的发展82
2.3.2APU83
2.3.3向量机84
习题284
第3章微型计算机指令系统88
3.1汇编语言源程序的3种语句88
3.2指令语句的操作数的表现形式——寻址方式92
3.2.1与数据有关的寻址方式93
3.2.2程序转移地址的寻址方式之一——JMP无条件跳转指令98
3.38086/8088处理器的指令系统101
3.3.1数据传送指令101
3.3.2算术运算指令105
3.3.3逻辑运算指令110
3.3.4移位指令111
3.3.5串操作指令113
3.3.6控制转移指令115
3.3.7循环指令117
3.3.8过程调用和返回指令117
3.3.9中断指令118
3.3.10处理机控制指令119
3.3.1132位新增指令简介119
3.48086/8088微机系统的伪指令120
3.4.1段定义伪指令120
3.4.2ASSUME伪指令121
3.4.3数据定义伪指令123
3.4.4符号定义伪指令123
3.4.5用伪指令LABEL定义变量和标号125
3.4.6PTR操作符、LABEL伪指令与THIS操作符的区别126
3.4.7置汇编地址计数器伪指令127
3.4.8地址定位伪操作128
3.4.9基数控制伪指令130
3.4.10子程序定义伪指令PROC和ENDP130
习题3131
第4章汇编语言及汇编程序设计139
4.1汇编语言概述139
4.1.1从机器语言到汇编语言139
4.1.2汇编环境介绍140
4.1.3汇编语言上机过程140
4.2系统功能调用141
4.2.1系统功能调用概述141
4.2.2基本系统功能INT 21H调用142
4.3汇编语言源程序的设计的基本步骤146
4.3.1源程序的基本框架146
4.3.2汇编语言源程序设计的基本步骤148
4.4顺序结构的汇编语言源程序的编写149
4.5分支结构的汇编语言源程序的编写153
4.5.1条件转移指令153
4.5.2汇编语言分支结构程序的编写155
4.6循环结构的汇编语言源程序的编写162
4.6.1循环控制指令162
4.6.2程序的循环结构163
4.6.3控制程序循环的方法164
4.6.4多重循环173
4.7汇编与C/C++接口175
4.7.1高级语言与汇编语言的接口需要解决的问题176
4.7.2C语言与汇编语言的接口176
习题4176
第5章总线和主板179
5.1总线基本概念179
5.1.1总线和微机系统的总线结构179
5.1.2总线分类和性能指标182
5.2总线工作原理185
5.2.1总线的控制与总线仲裁185
5.2.2数据传送188
5.3微机的系统总线标准190
5.3.1系统总线标准190
5.3.2芯片级总线191
5.3.3常见系统总线标准193
5.3.4外部总线204
5.4主板结构规范215
5.4.1主板结构规范215
5.4.2主板上的芯片217
5.4.3主板的插槽218
5.4.4主板对外接口部分219
5.5主板控制芯片组220
5.5.1概念及结构220
5.5.2流行芯片组221
5.5.3BIOS与CMOS227
5.6主板发展趋势228
5.6.1主板总线速度的提升228
5.6.2主板超频稳定性能的成熟230
5.6.3主板安全稳定性能的增强230
5.6.4主板方便性能的提高231
5.6.5主板能源功能的改进231
5.6.6整合技术日新月异232
习题5233
第6章存储器237
6.1存储器的概念、分类和指标237
6.1.1计算机存储系统简介237
6.1.2半导体存储器的分类238
6.1.3存储器的工作时序240
6.1.4选择存储器件的指标242
6.2内存储器244
6.2.1随机读写存储器(RAM)基本结构244
6.2.2静态RAM(SRAM)245
6.2.3动态RAM(DRAM)249
6.2.4RAM技术的发展及芯片类型251
6.3高速缓冲存储器253
6.3.1高速缓冲存储器Cache的由来254
6.3.2Cache的命中率255
6.3.3Cache与主存的地址映射255
6.4只读存储器(ROM)259
6.4.1掩膜式ROM(Mask ROM)259
6.4.2可编程的ROM(Programmable ROM,PROM)260
6.4.3可擦除可编程的ROM(EPROM)261
6.4.4电可擦可编程的ROM(EEPROM)263
6.4.5闪速存储器(Flash Memory)263
6.5通用微机中的存储器、扩展存储器及其管理269
6.5.1内存条的构成和空间的分配269
6.5.2ROM子系统272
6.5.3RAM子系统275
6.5.4双通道内存技术276
6.5.5存储器的管理277
6.6CPU与存储器的连接280
6.6.1CPU与存储器连接时应注意的问题280
6.6.2存储器片选信号的产生方式和译码电路281
6.6.3CPU与存储器的连接282
6.7外存储器288
6.7.1早期的外存储器设备发展概况288
6.7.2磁盘存储器289
6.7.3光盘存储器292
6.7.4纳米存储器296
6.7.5电子硬盘297
6.7.6移动存储器297
6.7.7网络存储与云存储298
习题6299
第7章中断系统303
7.1中断系统基本概念303
7.1.1中断的概念和作用303
7.1.2中断的分类304
7.2中断的全过程306
7.2.1中断请求与中断屏蔽307
7.2.2中断源识别与中断优先级的管理308
7.2.3中断服务的过程312
7.3中断向量及其操作314
7.3.1中断向量的设置314
7.3.2中断向量的修改315
7.3.3中断类型号的获取316
7.4Intel 8259A可编程中断控制器316
7.4.18259A的框图和引脚317
7.4.28259A中断响应过程319
7.4.38259A中断触发方式321
7.4.48259A工作方式322
7.4.5屏蔽中断源的方式323
7.4.6结束中断处理的方式324
7.4.7中断级联方式325
7.4.88259A初始化命令字和操作方式命令字326
7.4.98259A在以80x86为CPU的计算机中的应用333
习题7336
第8章微型计算机接口技术概述和直接存储器访问339
8.1微机接口的基础知识339
8.1.1微机接口概念、类型及功能339
8.1.2输入/输出接口的编址方式341
8.2CPU和外部设备的数据传输方式及汇编语言指令格式344
8.2.1程序控制方式344
8.2.2中断传送方式348
8.2.3直接存储器访问(DMA)方式349
8.2.4I/O处理机方式349
8.3输入/输出接口逻辑电路的地址译码349
8.3.1I/O端口地址译码349
8.3.2Intel CPU的输入输出时序353
8.3.3I/O保护354
8.4DMA传送和DMA控制器8237356
8.4.1概述DMA主要用于需要大批量高速度数据传输的场合356
8.4.2可编程DMA控制器Intel 8237358
8.5硬盘接口和常见微机外部接口372
8.5.1常见微机外部实用接口372
8.5.2硬盘接口376
习题8380
第9章并行通信及接口芯片384
9.1并行通信的概念与简单并行接口384
9.1.1并行通信的概念384
9.1.2简单并行接口384
9.1.3简单并行口芯片8212385
9.2可编程并行接口芯片8255A388
9.2.18255A的结构框图388
9.2.28255A的控制字389
9.3并行接口芯片8255A应用举例396
9.3.1PC系统板上的8255A396
9.3.2PC/XT中的并行打印机接口电路399
9.3.3PC/XT中的微机与键盘的接口404
9.3.48255A与32位CPU连接408
习题9410
第10章串行数据接口413
10.1串行通信概述413
10.1.1串行通信的概念413
10.1.2串行通信的连接方式415
10.1.3同步通信和异步通信416
10.2串行接口标准RS232C和可编程串行接口芯片8251A419
10.2.1串行接口标准RS232C419
10.2.2一般串行通信接口常见的几种连接方式424
10.3串行接口芯片426
10.3.1串行接口芯片UART和USART426
10.3.2可编程串行接口芯片8251A426
习题10438
第11章8253可编程定时计数器440
11.1概述440
11.1.18253的结构框图440
11.1.28253的引脚441
11.28253的编程控制字和工作方式443
11.2.18253的控制字443
11.2.28253的工作方式444
11.2.38253的读操作449
11.2.4PC/XT中8253的应用449
习题11450
第12章数/模、模/数转换器及其与CPU的接口452
12.1数/模转换器及其与CPU的接口452
12.1.1D/A转换器(DAC)的基本原理及其转换特性452
12.1.2D/A芯片的性能参数和术语453
12.1.3DAC和微处理器接口中需要考虑的问题454
12.1.4D/A芯片简介455
12.1.5DAC与微处理器接口实例455
12.2模/数转换器及其与CPU的接口458
12.2.1采样、量化和编码459
12.2.2A/D芯片460
习题12463
附录A虚地址保护方式详述466
附录BASCII字符码表500
附录CPentium指令系统一览表501
附录DDOS功能调用508
参考文献516