这是一本将微型计算机原理、汇编语言程序设计和PC机接口通信技术有机整合在一起的著作,可作为高等院校计算机、通信和自动控制专业的教材,也可供工程技术人员参考。
本书主要内容:
●开发软件,控制应用系统与微处理器接口。
●用嵌入汇编语言的Microsoft Visual C++程序设计环境编写微处理器程序,控制PC机。
●开发软件,控制键盘、显示器及其他各种计算机部件。
●编写算术协处理器程序、MMX程序、SSE部件程序,求解复杂方程式。
●解释Intel系列各种处理器的区别,明确每一型号的特性。
●描述微处理器实模式(DOS)和保护模式(Windows)的用途。
●说明存储器管理操作,控制保护模式和分页机制,分配存储器。
●设计存储器、I/O系统到处理器的接口。
●开发驱动硬件接口和应用系统的软件。
●解释嵌入式环境中实时操作系统(RTOS)的工作。
●解释磁盘及视频系统的操作。
●建立小型系统与PC机的ISA总线、PCI总线、并口或串口、USB总线之间的接口。
●详述Pentium4微处理器新的64位扩展(EMT-64)。
无
这本非常实用的参考书写给那些需要彻底掌握Intel系列微处理器程序设计和接口技术的大学生们。如今,任何在计算机应用领域里学习或工作的人都必须懂得汇编语言程序设计和接口技术,因为Intel系列微处理器已经在电子、通信、控制系统,特别是台式计算机系统等许多方面都得到了广泛而且一时独一无二的应用。第7版主要增加讲解在DOS和Windows环境下如何使C/C++与汇编语言接口。很多应用程序包含Visual C++作为用内嵌汇编程序学习汇编语言的基础。更新部分详细说明了在微处理器和微处理器接口方面出现的新成果。
组织结构和取材范围
为了培养综合的学习方法,每章开头都简明叙述了本章的目标。各章都包含了大量程序设计应用和实例,以阐明主题。每章末尾的数条小结对于指导学习事半功倍,并总结了前面讲解过的内容。习题部分则是对所学知识的进一步强化,并提供了实践机会,包括对读者从事进一步研究的一些建议。
本书大量地使用微软宏汇编(Microsoft Macro Assembler)程序和在Visual C++环境中的内嵌汇编程序作实例,为学习编写Intel系列微处理器的程序提供了机会。有关程序设计环境的操作,包括链接器、库、宏、DOS功能调用、BIOS功能调用和Visual C/C++程序开发等。对于各种版本Visual C++在16位和32位两种编程环境下的内嵌汇编器(C/C++)都做了详细说明。本书是用Visual Studio C++ NET 2003作为开发环境写的,但也可以几乎不作更改地使用Visual Studio 60。
本书还详尽说明了系列中每种微处理器、存储器系统和各种I/O系统,包括磁盘存储器、ADC和DAC、16550 UART、PIA、定时器、键盘/显示控制器、算术协处理器和视频显示系统,并讨论了PC机的各种总线(AGP、ISA、PCI、USB、串口和并口)。通过这些系统,可以学习到实用的微处理器接口技术。
学习方法
由于Intel系列微处理器各不相同,本书开头集中讨论实模式下的程序设计,它与Intel系列所有型号微处理器兼容。针对这些系列成员的指令,比较8086/8088微处理器和 80386、80486、Pentium、Pentium Pro、Pentium Ⅱ、Pentium Ⅲ及Pentium4的异同,会发现所有这些微处理器非常相似,因此一旦学懂了基本类型的8086/8088,就可以较容易地学习更高级的版本及其指令。注意,8086/8088及随后的升级产品80186/80188和80386EX嵌入式微处理器仍然用于嵌入式系统中。
本书还讲解了算术协处理器、MMX扩展和SIMD扩展的程序设计和操作,它们在系统中提供浮点计算的能力,这在控制系统、视频图像和计算机辅助设计(CAD)等应用领域是很重要的。算术协处理器允许程序完成复杂的算术运算,否则用普通微处理器编程方法是难以胜任的。MMX和SIMD指令可以使整数或者浮点数并行高速操作。
本书描述了808680486和所有Pentium微处理器的引脚及功能。在接口技术部分,首先讨论用于8086/8088的一些通用外围接口部件。说明基本部件后,再重点研究更先进的80186/80188、80386、80486、Pentium到Pentium4微处理器。对80286的叙述很少,因为它与8086和80386很相似。我们将重点放在尽可能详细地讲述80386、80486和各种Pentium版本的微处理器上。
通过首先考虑各种先进微处理器的操作和程序设计,进而学习所有系列成员的接口技术, 能够提供Intel系列微处理器的工作和实用背景。读者完成本书的学习后将能够:
1)开发软件,控制微处理器应用接口。通常,开发出的软件应能用于所有型号的微处理器,包括基于DOS的应用和基于Windows的应用。主要强调在Windows环境下开发内嵌汇编和C++混合语言程序。
2)使用MFC控件处理程序和函数调用编写汇编语言和C++程序,控制键盘、视频显示系统及磁盘存储器。
3)使用宏序列、过程、条件汇编、汇编器流程控制伪指令开发软件,并链接到一个Visual C++程序中。
4)使用查找表和算法开发代码变换软件。
5)对算术协处理器编程,求解复杂的方程式。
6)开发MMX和SIMD扩展软件。
7)解释Intel系列的各种处理器的区别,明确每一型号的特性。
8)描述并使用微处理器的实模式和保护模式操作。
9)设计存储器、I/O系统到微处理器的接口。
10)能对Intel系列中各微处理器及其软件和硬件接口进行详细且全面的比较。
11)解释嵌入式应用中实时操作系统的功能。
12)解释磁盘及视频系统的操作。
13)建立小型系统与PC系统的ISA、PCI、串口、并口和USB总线之间的接口。
内容概述
第1章以基于微处理器的计算机系统为重点,介绍了Intel微处理器系列,包括微处理器的历史、操作和基于微处理器系统中存储数据的方法,还包括数制及其变换。第2章介绍了微处理器程序设计模型和系统结构,解释了实模式和保护模式的工作原理。
当我们理解了基本的计算机后,第3章到第6章讲解了Intel微处理器系列每条指令的功能。介绍指令的同时,还提供了简单的应用程序来说明这些指令的操作,使读者建立程序设计的基本概念。
第7章介绍Visual C/C++如何与内嵌汇编程序及单独的汇编语言程序设计模块一起使用,并说明如何配置一个简单的带汇编应用程序的Visual C/C++程序。
有了程序设计基础之后,第8章提供了一些使用带内嵌汇编程序的Visual C++编写的应用程序,这些应用程序包括通过消息处理函数在Windows环境下使用键盘和鼠标进行程序设计。把磁盘文件解释成CFile,就像键盘和视频显示器一样通过Windows在PC机上操作。这一章提供了几乎可在PC机系统上开发任何程序的工具。
第9章介绍了8086/8088系列,作为学习后面章节中基本存储器和I/O接口的基础,本章还说明了系统缓冲和系统定时。
第10章解释存储器接口,包括使用集成译码器的接口和用VHDL的可编程逻辑器件的接口。提供了8位、16位、32位和64位存储器系统,因而808680486和PentiumPentium4微处理器可以接口到存储器。
第11章详细讨论了I/O接口技术,包括PIA、定时器、16550 UART和ADC/DAC。本章还说明了直流电机和步进电机的接口。
在理解了这些基本I/O部件及它们与微处理器的接口后,第12章和第13章提供了一些高级I/O技术,包括中断和直接存储器存取(DMA)及其应用(打印机接口、实时时钟、磁盘存储器和视频显示系统)。
第14章详细叙述了8087Pentium4系列算术协处理器的操作和程序设计技术,以及MMX和SIMD指令。今天,几乎没有不利用协处理器就能高效运行的应用程序。记住,自从80486以后,所有Intel微处理器都有了协处理器;自Pentium后都有一个MMX部件;自Pentium Ⅱ后都有一个SIMD部件。
第15章阐明了如何通过并口、串口、ISA和PCI总线使小型系统与PC机接口。
第16章和第17章涵盖80186/8018880486这些先进的微处理器,探讨了它们与8086/8088微处理器的区别,以及它们的增强功能和特性。讲述了用于80386和80486微处理器的高速缓冲存储器、交叉存储和猝发存储。第16章也包括实时操作系统(RTOS),第17章还讨论了内存管理和内存分页技术。
第18章详述Pentium和Pentium Pro微处理器,这些微处理器也基于最初的8086/8088微处理器。
第19章介绍了Pentium Ⅱ、Pentium Ⅲ和Pentium4微处理器,包括一些新特性、封装类型和增加到原指令系统中的指令集。
附录使本书更加充实。附录A列出了全部DOS INT 21H功能调用,还详细说明了汇编器程序和Windows Visual C++接口的使用。附录B给出所有 8086Pentium4指令的完整列表,包括许多指令示例和十六进制机器编码,以及时钟定时信息。附录C简要列出了改变标志位的所有指令。附录D提供了本书编号为偶数的习题的答案。
致谢
非常感谢下列专家的反馈意见:Brigham Young大学的James Archibald;Toledo大学的 William Evans;California 州立大学的Issac Ghansah和Broome社区学院的William Murray。
联络方式
我们可以通过Internet保持联络。我的网站包含本人全部教科书的信息和许多特定到PC机、微处理器、硬件和软件的重要链接。也可以获得每周一次详述PC机许多方面的讲座,许多话题给出了本书未涉及的特别有趣的“技术环节”。如果你需要任何帮助,请放心在bbrey@ee net上与我联系,我会在24个小时以内回答所有我的电子邮件。
我的网站http://members.ee.net/brey
DeVry 大学:http//199.218.238.2/facstaff/bbrey/
这是一本将微型计算机原理、汇编语言程序设计和PC机接口通信技术有机整合在一起的著作,可作为高等院校计算机、通信和自动控制专业的教材,也可供工程技术人员参考。 本书主要内容: ●开发软件,控制应用系统与微处理器接口。 ●用嵌入汇编语言的Microsoft Visual C++程序设计环境编写微处理器程序,控制PC机。 ●开发软件,控制键盘、显示器及其他各种计算机部件。 ●编写算术协处理器程序、MMX程序、SSE部件程序,求解复杂方程式。 ●解释Intel系列各种处理器的区别,明确每一型号的特性。 ●描述微处理器实模式(DOS)和保护模式(Windows)的用途。 ●说明存储器管理操作,控制保护模式和分页机制,分配存储器。 ●设计存储器、I/O系统到处理器的接口。 ●开发驱动硬件接口和应用系统的软件。 ●解释嵌入式环境中实时操作系统(RTOS)的工作。 ●解释磁盘及视频系统的操作。 ●建立小型系统与PC机的ISA总线、PCI总线、并口或串口、USB总线之间的接口。 ●详述Pentium4微处理器新的64位扩展(EMT-64)。
Barry B. Brey:Barry B. Brey: DeVry大学电子工程技术与计算机科学技术系高级教授。他是美国关于微处理器和汇编语言著作的主要作者之一,至今著有31部教材。他在DeVry大学获得BSEET学位,1999年在东南新星大学获得计算机科学硕士学位。其个人主页为http://members.ee.net/brey/index.html。
金惠华 艾明晶 尚利宏:暂无简介
这本讲述Intel系列微处理器程序设计和接口技术的参考书已经是第7版了。随着技术发展和进步,作者多次改编增补删减,与时俱进,吐故纳新。在选材、知识点配置和编程环境选择方面充分体现了先进性和实用性。与前几版相比,这一版除增加了多媒体支持、实时操作系统支持等新技术以外,重点突出了内嵌式汇编,将编程环境由DOS和汇编转移到了Windows和Visual C/C++,使读者可以在学习本书的基础上很容易跨进嵌入式应用领域。
本书的特点是:
1)取材涵盖微机原理、汇编语言和接口通信技术的教学要求和知识点,各部分有机整合,适合国内教学要求。
2)以Intel系列微处理器为背景,以DOS、Windows和Visual C/C++为编程环境,通过示例为读者深入揭示了微机工作原理和最新技术进步。许多示例都可能成为读者开发类似应用的样板或原型,指引读者开发新的应用。
3)每章开头提示本章学习目的,末尾概要总结知识要点,使学习由薄到厚;再由厚到薄,最后有大量习题检验学习成果。编排符合学习规律,适合读者自学。
读者会发现这是一本非常实用的教材。有助于读者彻底掌握Intel系列微处理器程序设计和接口技术,灵活自如地使用微机的各种资源,解决学习和开发工作中的实际问题。
本书由金惠华译第16章,艾明晶译第915章,尚利宏译第1619章,高洁译第7章,郝广奇译第8章,李雅倩译附录,崔代锐、尚利荣、邓媛、刘云峰、徐其志参与了部分章节初译、示例习题核对及文稿录入。全书由金惠华统稿审校。译稿对原书中的笔误和疏漏进行了更正。由于译审者水平有限,译文中难免有不妥之处,敬请读者批评指正。
译者
2007年10月
译者序
前言
第1章微处理器和计算机导论
11历史背景
111机械时代
112电子时代
113程序设计的进步
114微处理器时代
115现代微处理器
12基于微处理器的PC系统
121存储器和I/O系统
122微处理器
13数制
131数字
132按位计数法
133其他数制转换到十进制
134十进制转换成其他进制
135二进制编码的十六进制
136补码
14计算机数据格式
141ASCII和Unicode数据
142BCD数据
143字节数据
144字数据
145双字数据
146实数
15小结
16习题
第2章微处理器及其体系结构
21微处理器的内部体系结构
22实模式存储器寻址
221段和偏移
222默认段和偏移寄存器
223段和偏移寻址机制允许重定位
23保护模式存储器寻址简介
231选择子和描述符
232程序不可见寄存器
24内存分页
241分页寄存器
242页目录和页表
25小结
26习题
第3章寻址方式
31数据寻址方式
311寄存器寻址
312立即寻址
313直接数据寻址
314寄存器间接寻址
315基址加变址寻址
316寄存器相对寻址
317相对基址加变址寻址
318比例变址寻址
319数据结构
32程序存储器寻址
321直接程序存储器寻址
322相对程序存储器寻址
323间接程序存储器寻址
33堆栈存储器寻址
34小结
35习题
第4章数据传送指令
41MOV回顾
42PUSH/POP指令
421PUSH指令
422POP指令
423初始化堆栈
43装入有效地址
431LEA指令
432LDS、LES、LFS、LGS和LSS
指令
44数据串传送
441方向标志
442DI和SI
443LODS指令
444STOS指令
445MOVS指令
446INS指令
447OUTS指令
45其他数据传送指令
451XCHG指令
452LAHF和SAHF指令
453XLAT指令
454IN和OUT指令
455MOVSX和MOVZX指令
456BSWAP指令
457CMOV指令
46段超越前缀
47汇编程序详述
471伪指令
472存储器组织
473程序举例
48小结
49习题
第5章算术和逻辑运算指令
51加法、减法和比较指令
511加法指令
512减法指令
513比较指令
52乘法和除法指令
521乘法指令
522除法指令
53BCD码和ASCII码算术运算指令
531BCD算术运算指令
532ASCII算术运算指令
54基本逻辑运算指令
541AND指令
542OR指令
543XOR指令
544测试和位测试指令
545NOT指令和NEG指令
55移位指令和循环移位指令
551移位指令
552双精度移位指令
553循环移位指令
554位扫描指令
56串比较指令
561SCAS指令
562CMPS指令
57小结
58习题
第6章程序控制指令
61转移指令
611无条件转移指令
612条件转移和条件设置
613LOOP指令
62控制汇编语言程序的流程
621WHILE循环
622REPEATUNTIL循环
63过程
631CALL指令
632RET指令
64中断概述
641中断向量
642中断指令
643中断控制
644PC机的中断
65机器控制及其他指令
651控制进位标志位
652WAIT指令
653HLT指令
654NOP指令
655LOCK前缀
656ESC指令
657BOUND指令
658ENTER和LEAVE指令
66小结
67习题
第7章在C/C++中使用汇编语言
71在16位DOS应用程序中使用汇编
语言与C/C++语言
711基本规则和简单程序
712_asm块中不能使用的MASM
功能
713使用字符串
714使用数据结构
715混合语言编程的例子
72在32位应用程序中使用汇编语言
与Visual C/C++语言
721使用控制台I/O访问键盘和
显示器的例子
722直接访问I/O端口
723开发Windows的Visual C++
应用程序
73独立的汇编目标码
731用Visual C++链接汇编语言
732在C/C++程序中添加新的汇编
语言指令
74小结
75习题
第8章微处理器程序设计
81模块化程序设计
811汇编程序和链接程序
812PUBLIC和EXTRN
813库
814宏
82使用键盘和视频显示器
821读取键盘
822使用视频显示器
823在程序中使用ActiveX控件
824鼠标
83数据转换
831从二进制转换为ASCII码
832ASCII码转换为二进制
833显示和读入十六进制数
834使用查找表实现数据转换
835使用查找表的示例程序
84磁盘文件
841磁盘的组织
842文件名
843顺序存取文件
844随机存取文件
85程序举例
851时间/日期显示程序
852数字排序程序
853数据加密
86小结
87习题
第9章8086/8088硬件特性
91引脚和引脚功能
911引脚
912电源要求
913直流特性
914引脚定义
92时钟产生器8284A
9218284A时钟产生器
9228284A的操作
93总线缓冲及锁存
931多路分离总线
932缓冲系统
94总线时序
941基本的总线操作
942一般的时序
943读时序
944写时序
95就绪和等待状态
951READY输入
952RDY和8284A
96最小模式与最大模式
961最小模式操作
962最大模式操作
9638288总线控制器
97小结
98习题
第10章存储器接口
101存储器件
1011存储器引脚
1012ROM存储器
1013静态RAM(SRAM)器件
1014动态RAM(DRAM)存储器
102地址译码
1021为什么要进行存储器译码
1022简单的与非门译码器
102338线译码器(74LS138)
1024双24线译码器(74LS139)
1025PLD可编程译码器
1038088和80188(8位)存储器接口
1031基本的8088/80188存储器
接口
1032与快闪存储器接口
1033错误校正
1048086、80186、80286和80386SX
(16位)存储器接口
10580386DX和80486(32位)存储器
接口
1051存储体
105232位存储器接口
106PentiumPentium 4(64位)存储器
接口
107DRAM
1071DRAM回顾
1072EDO存储器
1073SDRAM
1074DDR
1075DRAM控制器
108小结
109习题
第11章基本I/O接口
111I/O接口概述
1111I/O指令
1112独立编址I/O与存储器
映像I/O
1113PC机I/O映像
1114基本输入输出接口
1115握手
1116关于接口电路的注释
112I/O端口地址译码
1121译码8位I/O地址
1122译码16位I/O地址
11238位与16位I/O端口
112432位I/O端口
113可编程外围设备接口
113182C55基本描述
1132编程82C55
1133方式0操作
1134与82C55接口的LCD显示器
1135方式1选通输入
1136方式1选通输出
1137方式2双向操作
113882C55方式小结
1148254可编程间隔定时器
11418254功能描述
1142编程8254
1143直流电机速度与方向控制
11516550可编程通信接口
1151异步串行数据
115216550功能描述
1153编程16550
116模/数转换器(ADC)与数/模
转换器(DAC)
1161DAC0830数/模转换器
1162ADC080X模/数转换器
1163使用ADC0804和DAC0830
的实例
117小结
118习题
第12章中断
121基本中断处理
1211中断的目的
1212中断
1213中断指令:BOUND、INTO、
INT、INT 3和IRET
1214实模式中断操作
1215保护模式中断操作
1216中断标志位
1217将一个中断向量存入向量表
122硬件中断
1221INTR和INTA
122282C55键盘中断
123扩展中断结构
1231使用74ALS244扩展
1232菊花链中断
1248259A可编程中断控制器
12418259A概述
1242连接单个8259A
1243级联多个8259A
1244编程8259A
12458259A编程实例
125中断实例
1251实时时钟
1252中断处理键盘
126小结
127习题
第13章直接存储器存取及DMA
控制I/O
131基本DMA操作
1328237 DMA控制器
1321软件命令
1322编程地址寄存器和计数寄存器
13238237与80X86微处理器相连
1324用8237进行存储器到存储器
传输
1325DMA处理的打印机接口
133共享总线操作
1331定义的总线类型
1332总线仲裁器
134磁盘存储器系统
1341软盘存储器
1342笔式驱动器
1343硬盘存储器
1344光盘存储器
135视频显示器
1351视频信号
1352TTL RGB显示器
1353模拟RGB显示器
136小结
137习题
第14章算术协处理器、MMX和
SIMD技术
141算术协处理器的数据格式
1411带符号的整数
1412二进制编码的十进制(BCD)
1413浮点数
14280X87的结构
143指令系统
1431数据传送指令
1432算术运算指令
1433比较指令
1434超越运算指令
1435常数操作
1436协处理器控制指令
1437协处理器指令
144算术协处理器编程
1441计算圆的面积
1442求谐振频率
1443使用一元二次方程求根
1444使用内存数组存储结果
1445将单精度浮点数转换为字符串
145MMX技术简介
1451数据类型
1452指令系统
146SSE技术概述
1461浮点数
1462指令集
1463控制/状态寄存器
1464编程实例
1465优化
147小结
148习题
第15章总线接口
151ISA总线
1511ISA总线的发展
15128位ISA总线输出接口
15138位ISA总线输入接口
151416位ISA总线
152外围部件互连(PCI)总线
1521PCI总线的引脚图
1522PCI总线的地址/数据线
1523配置空间
1524PCI总线的BIOS
1525PCI接口
1526PCI Express 总线
153并行打印机接口(LPT)
1531端口介绍
1532使用并行端口而不需要
ECP支持
154串行COM端口
155通用串行总线(USB)
1551连接器
1552USB数据
1553USB命令
1554USB总线节点
1555USBN9604/3编程
156高速图形端口(AGP)
157小结
158习题
第16章80186、80188及80286
微处理器
16180186/80188的结构
161180186/80188的型号
161280186基本结构框图
161380186/80188基本特征
1614引脚
1615直流工作特性
161680186/80188时序
16280186/80188增强功能编程
1621外设控制块(PCB)
162280186/80188的中断
1623中断控制器
1624定时器
1625DMA控制器
1626片选单元
16380C188EB接口举例
164实时操作系统(RTOS)
1641实时操作系统(RTOS)概述
1642实例系统
1643线程系统
16580286简介
1651硬件特性
1652新增指令
1653虚拟存储机
166小结
167习题
第17章80386和80486微处理器
17180386微处理器简介
1711存储系统
1712输入/输出系统
1713存储器和I/O控制信号
1714时序
1715等待状态
172特定的80386寄存器
1721控制寄存器
1722调试和测试寄存器
17380386存储管理
1731描述符和选择子
1732描述符表
1733任务状态段(TSS)
174向保护模式转换
175虚拟8086模式
176内存分页机制
1761页目录
1762页表
17780486微处理器简介
177180486DX和80486SX微处理器
的引脚
177280486的基本结构
177380486的存储系统
178小结
179习题
第18章Pentium和Pentium Pro
微处理器
181Pentium微处理器简介
1811存储器系统
1812输入/输出系统
1813系统时序
1814分支预测逻辑
1815高速缓存结构
1816超标量体系结构
182Pentium的特定寄存器
1821控制寄存器
1822EFLAG寄存器
1823内置自检(BIST)
183Pentium的存储器管理
1831分页单元
1832存储器管理模式
184Pentium的新指令
185Pentium Pro微处理器简介
1851Pentium Pro的内部结构
1852引脚连接
1853存储器系统
1854输入/输出系统
1855系统时序
186Pentium Pro的特性
187小结
188习题
第19章Pentium Ⅱ、Pentium Ⅲ和
Pentium 4微处理器
191Pentium Ⅱ微处理器简介
1911存储器系统
1912输入/输出系统
1913系统时序
192Pentium Ⅱ软件变化
1921CPUID指令
1922SYSENTER和SYSEXIT指令
1923FXSAVE和FXRSTOR指令
193Pentium Ⅲ
1931芯片组
1932总线
1933引脚
194Pentium 4
1941存储器接口
1942寄存器组
1943超线程技术
1944CPUID
1945特定模型寄存器
1946性能监视寄存器
194764位扩展技术
195小结
196习题
附录A汇编程序、Visual C++和
DOS
附录B指令系统一览
附录C标志位的变化
附录D偶数号习题的答案