
汇编语言与程序设计是计算机类学科专业重要的专业技术基础课程,是以应用为主的工程技术基础类课程。作者以简单易懂、分步介绍的方式,讲授了x86 PC汇编语言程序设计及PC体系结构。全书包括两大部分内容:(1) 汇编语言程序设计;(2) IBM PC兼容计算机接口设计。在介绍汇编语言程序的章节中,以汇编方法为引导,逐步加入各种语句及指令,给出了很多程序实例,并通过Debug实用工具展示出程序指令执行的具体动作。在接口设计方面,从PC所应用的芯片到设备,从电路设计到编程都进行了详细的阐述。 读者对象:全书实例、复习题丰富,有利于读者深入理解,适合作为计算机相关专业的教材,也可供相关的程序设计人员参考使用。
前 言 编写目的 本书用于汇编语言程序设计和x86 PC接口的大学课程。它不仅为汇编语言程序设计的学习打下基础,同时也为从事工程与计算机学科的学生提供关于x86 PC设计与接口方面的综合训练。这本书旨在帮助读者对x86 PC的内部原理进行深入理解。它为现实世界中基于微处理器的系统中的设计与接口的理解奠定基础。此外,本书也适用于从事微机接口和数据采集的技术人员、硬件工程师、计算机研究人员以及业余爱好者。 阅读本书所需要的背景知识 阅读本书的读者应该具备初级的数字知识。虽然编程语言的知识也很有帮助,但不是必需的。尽管当前绝大多数PC使用奔腾等x86作为它们的微处理器,但是它们仍然是根据IBM PC/AT这个在1984年推出的80286微处理器系统而设计的。PC/AT既有可取之处,也有一些缺点,早在1981年推出基于8088微处理器的IBM PC的时候,这些优点和缺点就已经确定了。换句话说,只有先理解了80286 PC/AT及其子集PC/XT之后,才能充分理解x86 PC的组成和内部构成。因此,本书将在第9章讲述8088和80286微处理器。 内容介绍 汇编语言程序设计的学习往往采用系统的、渐进的方法。本书提供许多例子以及示例程序,以便澄清相关概念,并促使学生边学边做。每节的后面都设有测验题,以巩固该节主要知识点。我们认为,一本教科书的作用之一,是让学生熟悉文献及行业中的术语,本书的编写也遵循了同样的规则。 第0章叙述数字系统(二进制、十进制和十六进制)中相关概念及计算机结构。大多数学生可能在以前的课程中学过这些概念,但本章为那些没有学过这些概念的学生提供一个快速的教程。对那些已经学习了这些概念的学生而言,本章引领他们进行复习。 第1章简要介绍x86微处理器的发展史,讲解作为所有x86处理器基础的8086的内部工作情况。 第2章主要介绍如何使用汇编语言创建程序。尽管书中的程序是基于Microsoft MASM汇编器建立并测试的,但它们同样适用于Borland TASM等其他兼容的汇编器。 第3章介绍无符号逻辑运算和算术运算指令,以及如何用C语言进行位操作。 第4章介绍DOS和BIOS中断。汇编程序允许学生从键盘输入数据并发送到显示器上。此外,本章还将涉及宏汇编。 第5章介绍如何进行键盘和鼠标编程。 第6章介绍带符号数的算术运算和逻辑运算以及串操作。 第7章讨论模块化编程方法,以及如何将可以独立编程和调试的小程序模块合并成大程序。此外,还将介绍如何在C语言中嵌入汇编语句。 第8章介绍x86 32位程序设计的一些概念。尽管此书重点介绍的是16位编程,但是386的引入可帮助同学们体验32位处理器的强大功能。 第9章详细介绍8088和286微处理器及支撑芯片和它们在早期的IBM PC/XT/AT中的使用。同时介绍ISA扩展槽的地址、数据和控制信号的产生和功能。 第10章介绍各类RAM和ROM存储器、它们与微处理器的接口、x86 PC的存储映射、存储器接口的时序,以及为确保RAM和ROM中数据完整性而使用的校验字节和奇偶校验位技术。 第11章主要介绍I/O接口、x86中IN指令和OUT指令的使用,以及8255芯片的接口与编程。书中将用若干种语言对I/O编程进行描述。 第12章讲述PC与LCD、步进电机、ADC、DAC和传感器等数据采集设备的连接。 第13章讨论x86 PC中8253/54定时器的使用,音乐演奏和生成时序的方法。 第14章介绍硬件中断和软件中断、8259中断控制器的使用、ISA总线扩展槽上IRQ符号的产生和分配。 第15章介绍直接存储器访问(DMA)的概念及其在x86 PC中的应用、DMA 通道以及相关的ISA总线信号。 第16章介绍视频显示器的基本知识、PC的各种显示模式以及图形模式下显卡的存储器需求。 第17章讨论串行通信的原理和PC上COM端口的编程。 第18章介绍PC键盘、打印机的接口和编程,讨论EPP和 ECP等并行接口。 第19章讨论硬磁盘储器的组织和相关术语。 第20章介绍x87数字协处理器及编程、IEEE单精度和双精确浮点数据类型。 第21章探讨386处理器的硬件及编程,比较实模式和保护模式,讨论虚拟存储器的实现。 第22章讲述高速存储器的连接,描述各种类型的DRAM,包括EDO和SDRAM,并且详细解释高速缓存、高速缓存的组成及术语。 第23章介绍486、Pentium 和Pentium Pro的主要特征,并将它们同RISC处理器进行比较。同时,这一章还讨论了MMX技术,以及如何编写程序来检测CPU型号。 第24章讲解Intel和AMD的新一代64位处理器。 第25章概述集成电路工艺及故障分析,描述IC接口和系统设计问题,同时讲解错误检测和校正。 第26章讨论ISA 和PC104等各类PC总线、性能比较以及PCI总线的特征。 第27章详细介绍USB接口,说明如何使用C语言编程来访问连接到x86 PC上的USB设备。 实验指导书 实验指导书中提供了一些非常基本的实验操作,这些内容可以在www.MicroDigitalEd.com站点上找到。教师可根据教学目标、学生水平以及听课对象是研究生还是本科生等因素,设置一些更为高级的、有一定难度的实验。相关支撑材料和作者编写的其他书籍也可以在这个站点上找到。 习题解答/PowerPoint演示文稿 每章后面的习题涵盖了一些基本的概念。教师可根据具体情况设置一些难度较大的课后习题。习题解答是在Sepehr Naimi先生的帮助下完成的。习题解答和PowerPoint演示文稿只供教师从网上下载①。 在线教学资源 要想访问网上资源,教师需要申请一个密码。方法如下:进入www.prenhall.com网站、单击“Instructor Resource Center”(教学资源中心),接着单击“Register Today”(注册)来获取密码。48小时后你将收到带有密码的确认邮件。获得密码后可立即登录,按照提示下载你想要的材料。 致谢 此书是许多人士奉献、工作和爱的结晶。在此必须感谢诸多学生和教授,正是由于自1992年本书首次出版以来他们的精辟评论才造就了这本书。特别感谢Dimitri Moonen,他详细地阅读了此书并指出了其中的一些错误。感谢Pedran Mazidi重新制作了本书新版中的图表。还要感谢Prentice Hall的工作人员,尤其是Wyatt Morris编辑,他一直对本书的写作提供支持与鼓励。感谢项目经理Rex Davidson,使此书终成现实。我们很荣幸能请到世上最优秀的编辑Bret Workman,感谢你精妙的工作。最后,真诚地感谢德克萨斯大学计算机科学与工程学院的Roger S. Walker博士,感谢他的不断鼓励。我们为编写此书而感到无比高兴,希望你喜欢这本书,并在课程学习和项目开发中使用。如果您想对本书提出改进建议,或发现本书中存在错误,请及时与我们联系,以便我们不断改进和完善。 作者简介 Muhammad Ali Mazidi曾就读于美国大布里士大学,并获南卫理公会大学和德州大学达拉斯分校的硕士学位。现今他在南卫理公会大学的电气工程学院攻读博士学位。他曾经编写过《8051微控制器与嵌入式系统》、《PIC微控制器和嵌入式系统》、《HCS12微控制器和嵌入式系统》等多部教材,这些教材被广泛使用,并可从Prentice Hall出版公司购买。他在得克萨斯州达拉斯的德锐大学讲授微处理器设计课程。他是MicroDigitalEd.com网站的创始人,该网站为本书提供支持。 Janice Gillispie Mazidi获得北德克萨斯大学的计算机科学硕士学位。她具有在达拉斯从事软件工程工作的若干年经验。现今,她在当地的一所高中讲授计算机科学和数学课程。 Danny Causey毕业于德锐大学,并获计算机工程技术理学学士学位。他是《PIC微控制器和嵌入式系统》和《HCS12微控制器和嵌入式系统》的作者。他是MicroDigitalEd.com网站的合伙人之一。他致力于软件开发,研制旨在提高日常工作效率的软件工具。 如果您有评论和建议,或是发现了书中的错误,可通过以下方式与作者取得联系: mdebooks@yahoo.com mmazidi@microdigitaled.com dcausey@microdigitaled.com
目 录 第0章 计算导论 1 0.1 计数与编码系统 1 0.2 数字系统入门 6 0.3 进入计算机内部 9 本章习题 14 复习题答案 15 第1章 x86微处理器 17 1.1 x86系列演变的简要历史 17 1.2 走进8088/86的内部 20 1.3 汇编语言简介 22 1.4 程序段介绍 25 1.5 堆栈 31 1.6 标志寄存器 34 1.7 x86寻址模式 37 本章习题 40 复习题答案 43 第2章 汇编语言程序设计 45 2.1 伪指令和示例程序 45 2.2 程序的汇编、链接与执行 48 2.3 示例程序 51 2.4 控制转移指令 56 2.5 数据类型和数据定义 60 2.6 完整段定义 64 2.7 流程图和伪代码 69 本章习题 71 复习题答案 73 第3章 算术与逻辑运算指令及编程 76 3.1 无符号数的加减法 76 3.2 无符号数的乘法和除法 82 3.3 逻辑指令 85 3.4 BCD和ASCII的转换 94 3.5 循环移位指令 101 3.6 C语言的位操作 104 本章习题 106 复习题答案 109 第4章 INT 21H和INT 10H编程及宏指令 111 4.1 BIOS中INT 10H的编程 111 4.2 DOS中断21H 117 4.3 什么是宏以及如何使用宏 127 本章习题 137 复习题答案 139 第5章 键盘和鼠标编程 141 5.1 INT 16H键盘编程 141 5.2 利用INT 33H进行鼠标编程 145 本章习题 152 复习题答案 152 第6章 带符号数、字符串和表 153 6.1 带符号数的算术运算 153 6.2 字符串和表操作 163 本章习题 168 复习题答案 169 第7章 模块及模块化程序设计 170 7.1 编写和链接模块 170 7.2 一些非常有用的模块 179 7.3 在模块之间传递参数 184 本章习题 187 复习题答案 188 第8章 x86的32位程序设计 189 8.1 x86的32位编程 189 本章习题 196 复习题答案 197 第9章 8088、80286微处理器与ISA总线 198 9.1 8088 微处理器 198 9.2 8284和8288支撑芯片 203 9.3 ISA总线的8位区段 206 9.4 80286微处理器 210 9.5 16位ISA总线 213 本章习题 217 复习题答案 219 第10章 存储器及其接口 220 10.1 半导体存储器 220 10.2 存储器地址译码 228 10.3 IBM PC的内存映射 231 10.4 RAM和ROM的数据完整性 234 10.5 16位存储器的接口 238 本章习题 242 复习题答案 244 第11章 8255 I/O编程 246 11.1 8088输入/输出指令 246 11.2 I/O地址的译码和设计 248 11.3 x86 PC的I/O地址映射 251 11.4 8255编程与接口 254 本章习题 264 复习题答案 265 第12章 LCD、电动机、ADC及传感器接口 267 12.1 LCD接口 267 12.2 步进电动机接口 275 12.3 DAC接口 279 12.4 ADC芯片和传感器接口 283 本章习题 290 复习题答案 292 第13章 8253/54定时器 293 13.1 8253/54定时器简介 293 13.2 x86 PC中8253/54定时器的连接与编程 297 13.3 在x86 PC上播放音乐 301 本章习题 306 复习题答案 307 第14章 x86 PC的中断系统 308 14.1 8088/86中断 308 14.2 x86 PC及其中断分配 313 14.3 8259可编程中断控制器 316 14.4 8259芯片在x86 PC中的应用 323 14.5 x86 PC中断的进一步讨论 328 本章习题 331 复习题答案 333 第15章 x86 PC直接存储器存取和DMA通道 335 15.1 DMA的概念 335 15.2 8237 DMA芯片编程 336 15.3 IBM PC 8237 DMA接口 344 15.4 x86 PC DMA 347 本章习题 350 复习题答案 351 第16章 视频和视频适配器 353 16.1 显示器的原理和视频模式 353 16.2 文本模式编程及显存 359 16.3 图形和图形编程 366 本章习题 369 复习题答案 370 第17章 汇编语言和C#串口编程 371 17.1 串行通信的基本知识 371 17.2 x86 PC COM端口的汇编和C#编程 376 本章习题 381 复习题答案 381 第18章 键盘与打印机接口 383 18.1 键盘与主机的接口 383 18.2 PC键盘接口与编程 387 18.3 IBM PC打印机及接口 394 本章习题 402 复习题答案 403 第19章 硬盘 405 19.1 硬盘组织与性能 405 本章习题 412 复习题答案 412 第20章 IEEE浮点数和x87数字协处理器 413 20.1 数字协处理器和IEEE浮点标准 413 20.2 x87指令和编程 416 20.3 x87指令 428 本章习题 433 复习题答案 434 第21章 386微处理器:实模式与保护模式 435 21.1 实模式下的80386 435 21.2 80386硬件结构视图 442 21.3 80386保护模式 447 本章习题 454 复习题答案 456 第22章 高速存储器设计和缓存 458 22.1 x86的存储器周期时间 458 22.2 页式DRAM和静态列DRAM 460 22.3 高速缓存 466 22.4 SDRAM、DDR RAM和RAMBUS存储器 472 本章习题 477 复习题答案 480 第23章 奔腾和RISC处理器 482 23.1 80486微处理器 482 23.2 Intel奔腾处理器 486 23.3 RISC架构 491 23.4 Pentium Pro(高能奔腾)处理器 497 23.5 MMX技术 500 本章习题 505 复习题答案 508 第24章 x86的演化:从32位到64位 510 24.1 x86奔腾系列处理器的演化 510 24.2 x86的64位处理器和Vista 514 本章习题 518 复习题答案 519 第25章 系统设计与故障分析 520 25.1 集成电路技术概述 520 25.2 IC连接和系统设计问题 525 本章习题 534 复习题答案 535 第26章 ISA、PC104和PCI总线 537 26.1 ISA总线的内存访问信号 537 26.2 ISA的I/O总线时序 543 26.3 PCI总线 551 本章习题 557 复习题答案 558 第27章 USB编程 559 27.1 USB端口概要 559 27.2 USB口的扩展与电源管理 560 27.3 USB编程 563 本章习题 565 复习题答案 566
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0124410