1 / 95

现代微型计算机 与接口教程 (第二版)

杨文显 主编. 现代微型计算机 与接口教程 (第二版). 普通高等教育 “ 十一五 ” 国家级规划教材 普通高校本科计算机专业特色教材精选. 总 目 录. 第1章 微型计算机与微处理器 第2章 存储器 第 3 章 微型计算机输入输出接口 第 4 章 微型计算机的中断系统 第 5 章 可编程接口芯片 第 6 章 DMA 传输 第 7 章 数 / 模与模 / 数转换 第 8 章 现代微型计算机 第 9 章 PC 系列微型计算机外部设备接口 第1 0 章 微型计算机总线 第1 1 章 Windows 环境下输入输出程序设计.

vianca
Download Presentation

现代微型计算机 与接口教程 (第二版)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 杨文显 主编 现代微型计算机与接口教程(第二版) 普通高等教育“十一五”国家级规划教材 普通高校本科计算机专业特色教材精选

  2. 总 目 录 第1章 微型计算机与微处理器 第2章 存储器 第3章 微型计算机输入输出接口 第4章 微型计算机的中断系统 第5章 可编程接口芯片 第6章 DMA传输 第7章 数/模与模/数转换 第8章 现代微型计算机 第9章 PC系列微型计算机外部设备接口 第10章 微型计算机总线 第11章 Windows环境下输入输出程序设计

  3. 第1章 微型计算机与微处理器 1.1 微型计算机 1.2 8086/8088微处理器结构 1.3 8086/8088微处理器子系统 1.4 8086/8088 微处理器的工作时序

  4. 1.1 微型计算机 1.1.1 电子计算机的基本组成 电子计算机的基本结构特点: • 存储程序原理:把程序事先存储在计算机内部,计算机通过执行程序实现高速数据处理。 • 五大功能模块:电子数字计算机由运算器、控制器、存储器、输入设备、输出设备这些功能模块组成。

  5. 1.1.1 电子计算机的基本组成 图1-1 计算机的基本组成

  6. 存储器 运算器 控制器 输入设备 输出设备 主机 中央处理器 (CPU) 电子计算机 外部设备

  7. 1.1.2 微型计算机 • 微型计算机在基本结构和基本功能上与计算机大致相同。 • 由于微型计算机采用了大规模和超大规模集成电路组成的功能部件,使微型计算机在系统结构上有着简单、规范和易于扩展的特点。 • 微型计算机由微处理器、存储器、输入输出接口电路组成。 • 连接这些功能部件的是三组总线:数据总线、地址总线和控制总线。

  8. 图1-2 微型计算机的基本结构

  9. 1. 微处理器 微处理器(MPU):微型计算机的中央处理器,亦称CPU。 2. 存储器 • 微型计算机的存储器采用集成度高、容量大、体积小、功耗低的半导体存储器芯片构成。 • 根据能否写入信息,存储器分为RAM和ROM。

  10. 随机存取存储器(RAM)又称读写存储器: • 随机存取:可以根据需要读写任意位置上的内容,而不像磁盘一样必须成块地顺序读写。 • 可读可写:随机存储器中的信息可以读出,也可以写入。 • 易失性:断电后储存的信息自动消失,是易失性存储器。 • 用途:用于存放当前正在使用的程序和数据。 • 只读存储器(ROM): • 只读:信息在一般情况下只能读出,不能写入和修改 • 非易失性:断电后原信息不会丢失,是非易失性存储器, • 用途:用来存放固定的程序和数据表格。

  11. 3. 输入输出接口电路 • 介于计算机和外部设备之间的电路称为输入输出接口电路。 • 微型计算机的接口普遍采用大规模集成电路芯片,大多数接口芯片是可编程的。 4. 总线 • 总线是一组公共的信号传输线,用于连接计算机各个部件。 • 位于芯片内部的总线称为内部总线。 • 连接微处理器与存储器、输入输出接口,用以构成完整的微型计算机的总线称为系统总线(有时也称外部总线)。 • 微型计算机的系统总线分为数据总线、地址总线和控制总线三组。

  12. 数据总线:用于传送数据信息,数据总线是双向总线。数据总线:用于传送数据信息,数据总线是双向总线。 • 地址总线:用于发送内存地址和I/O接口的地址。 • 控制总线:传送各种控制信号和状态信号,使微型计算机各部件协调工作。 • 微型计算机采用标准总线结构,提高了微机系统的通用性和可扩展性。

  13. 1.2 8086/8088微处理器结构 1.2.1 8088/8086微处理器内部结构 8086 CPU由指令执行部件EU总线接口部件BIU两个部份组成。 • 指令执行部件EU主要功能是执行指令。 • 总线接口部件BIU主要功能是连接CPU内部总线和外部系统总线,访问存储器和外部接口。

  14. 图1-3 8086微处理器内部结构

  15. 物理地址 • 访问存储器的实际地址称为物理地址,用20位二进制表示。 • 物理地址的位数由地址总线的位数决定 • 物理地址的位数决定了该计算机能够连接的存储器的数量: • 例如:16根地址线最多能连接216=64KB内存储器; 20根地址线最多能连接220=1MB内存储器.

  16. 逻辑地址 • EU送来的存储器地址称为逻辑地址,由16位“段基址”和 16位 “偏移地址”(段内地址)组成。 • 段基址表示一个段的起始地址的高16位。 • 偏移地址表示段内的一个单元距离段开始位置的距离。因此,偏移地址也称为段内地址。 • 例如,2345H∶1100H表示: 段基址为2345H(这个段的起始地址是23450H), 段内偏移地址为1100H的存储单元地址。

  17. 地址转换 • 地址加法器用来完成逻辑地址向物理地址的变换: 物理地址=段基址×16 + 偏移地址 • 上例中,逻辑地址2345H:1100H对应的物理地址是24550H。 • 反之,物理地址24550H,它对应的逻辑地址可以是2455H:0000H,也可以是2400H:0550H等。 • 这说明一个存储单元的物理地址是惟一的,而它对应的逻辑地址是不惟一的。

  18. 图1-4 地址加法器

  19. 指令执行部件EU • EU的功能是执行指令。一般情况下, 指令按照它存放的先后次序顺序执行,EU从指令队列中源源不断地取得指令代码,满负荷地连续执行指令。 • EU中的算术逻辑运算单元ALU可完成16位或8位的二进制运算,运算结果通过内部总线送到通用寄存器,或者送往BIU的内部寄存器中,等待写入存储器。 • EU控制器负责从BIU的指令队列中取出指令,并对指令译码,根据指令要求向EU内部各部件发出控制命令以实现各条指令的功能。

  20. 总线接口部件BIU BIU的功能: • 形成访问存储器的物理地址(由地址加法器完成); • 访问存储器取得指令,暂存到指令队列中等待执行; • 访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果等; • 产生外部总线的各种控制信号。 • BIU内部有一个6字节的指令队列。一旦指令队列中空出2个字节,BIU将自动进行读指令的操作以填满指令队列。 • BIU内部总线控制电路将CPU的内部总线与CPU引脚所连接的外部总线相连。

  21. 8088 CPU与8086 CPU的区别: (1)8088与外部交换数据的数据总线宽度是8位,而EU内部总线和寄存器仍是16位,所以把8088称为准16位微处理器。 (2)8088 BIU中指令队列长度只有4字节,只要队列中出现一个空闲字节,BIU就会自动地访问存储器,取指令来填满指令队列。

  22. 1.2.2 8086/8088 微处理器的寄存器 8086/8088 CPU的内部寄存器如图1-5 • 通用数据寄存器:存放运算原始/中间结果 • 指针和变址寄存器:存放存储器地址 • 控制寄存器:存放程序地址和其他控制信息 • 段寄存器:存放各段的信息

  23. 图1-5 8086/8088 CPU内部寄存器

  24. 1. 通用寄存器组 8个16位通用寄存器可分成两组: • 一组由AX、BX、CX和DX构成,称作通用数据寄存器,用来存放16位的数据或地址。也可当作8个8位寄存器使用。8位寄存器只能存放数据。 • AX 称为累加器 • BX 称为基址寄存器 • CX 称为计数寄存器 • DX 称为数据寄存器

  25. 另一组4个16位寄存器,主要用来存放操作数的偏移地址(即操作数的段内地址)另一组4个16位寄存器,主要用来存放操作数的偏移地址(即操作数的段内地址) • SP 称为堆栈指针寄存器 • BP 称为基址指针寄存器 • SI 称为源变址寄存器 • DI 称为目的变址寄存器 (变址寄存器内存放的地址在数据传送完成后,具有自动修改的功能。例如:传送1字节数据后把地址加1,为下次传送做好准备,变址寄存器因此得名。)

  26. 2. 段寄存器 • 8086/8088 CPU总线接口部件BIU中设置有4个16位段寄存器:代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和堆栈段寄存器SS。 • 代码段:存放程序指令。CS中存放的是现在正在执行的程序段的段基址。程序代码超过64K时,需要分成几个段存放。 • 数据段用于存放当前使用的数据。需要第二个数据段时可以使用附加段。 • 堆栈段是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数,返回地址等,这些数据都按照“先进后出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。

  27. 3. 标志寄存器FLAGS 8086/8088 CPU中设置了一个16位标志寄存器FLAGS,用来存放运算结果的特征和控制标志,其格式如下:

  28. FLAGS中存放的9个标志位可分成两类: • 一类叫状态标志,用来表示运算结果的特征,包括CF、PF、AF、ZF、SF和OF; • 另一类叫控制标志,用来控制CPU的操作,包括IF、DF和TF。

  29. 状态标志位(1) (1)ZF(Zero Flag) 零标志位。 (2)SF(Sign Flag) 符号标志位。 (3)PF(Parity Flag) 奇偶标志位。PF=1,表示本次运算结果的低八位中有偶数个“1”;PF=0,表示有奇数“1”。PF可以用来进行奇偶校验,或者用来生成奇偶校验位。 (4)AF(Auxiliary Carry Flag) 辅助进位标志位。这个标志位只在BCD数运算中起作用。

  30. 状态标志位(2) (5)CF(Carry Flag) 进位标志位。 • 进行二个无符号数加法或减法运算后,如果CF=1,表示运算的结果超出了该字长能够表示的数据范围。例如,执行8位数据运算后,CF=1表示加法结果超过了255,或者是减法得到的差小于零。 • 进行有符号数运算时,CF对运算结果没有直接意义。 (6)OF(Overflow Flag) 溢出标志位。例如,进行8位运算时,OF=1表示运算结果大于+127 或小于-128。OF标志对无符号数的运算结果没有意义。

  31. (1)(AL)+( AH) 上述运算后: CF = C7 (D7位上的进位)= 0 (无进位); AF = C3 (D3位上的进位) = 1(有辅助进位); PF = 1(运算结果有4个1); SF = D7 = 1(运算结果符号位为1); OF = C7⊕C6 = 0⊕1 = 1 (有溢出); ZF = 0 (运算结果不为0)。

  32. (2)(AL)-( AH) 上述运算后: CF = 1 (有借位); AF = 1 (有辅助进位); PF = 1 (运算结果中有6个1); SF = 1 (符号位为1); OF = 0 (无溢出); ZF = 0 (运算结果不为0)。

  33. 运算产生的标志位由程序员根据需要选择使用:运算产生的标志位由程序员根据需要选择使用: • 如果参加运算的两个数是有符号数(用补码表示),可以用OF判断结果是否产生溢出,这时不必关心CF的状态; • 如果参加运算的两个数是无符号数,可以用CF判断结果是否超出范围,无需关心OF的状态。

  34. 控制标志 (1)IF(Interrupt Flag) 中断允许标志位。IF=1,表示允许CPU响应可屏蔽中断。 IF标志可通过STI指令置位(置1),通过CLI指令复位(清零)。 (2)DF(Direction Flag) 方向标志位。在串操作指令中,若DF=0,表示串操作指令执行后地址指针自动增量,串操作由低地址向高地址进行;DF=1,表示地址指针自动减量,串操作由高地址向低地址进行。 DF标志位可通过STD指令置位,通过CLD指令复位。 (3)TF(Trap Flag) 单步标志位。TF=1,每条指令执行结束都会发生“单步”中断,用于程序调试。

  35. 4. 指令指针寄存器IP • 8086/8088 CPU中有一个16位指令指针寄存器IP,用来存放将要执行的下一条指令在代码段中的偏移地址。 • 程序运行过程中,BIU自动修改IP中的内容,使它始终指向将要执行的下一条指令。 • 程序不能直接访问IP,但是可通过某些指令修改IP的内容。例如, 执行转移指令时,会将转移的目标地址送入IP中,实现程序的转移。

  36. 四种段的寻址方式

  37. 1.3 8086/8088 微处理器子系统 1.3.1 8086/8088 微处理器的引脚及功能 • 8086/8088 CPU是十六位的微处理器,它向外的信号包含16条数据线,20条地址线,以及若干控制信号。 • 为了减少芯片引脚数量,部分引脚采用分时复用的方式,构成40条引脚的双列直插式封装。

  38. 40 21 20 GND Vcc(+5V) 1 AD AD 15 14 AD A /S 13 16 3 AD A /S 12 17 4 AD A /S 11 18 5 AD A /S 10 19 6 AD BHE /S 9 7 AD MN/ MX 8086 8 AD RD 7 AD HOLD( RQ / GT ) 6 0 微处理器 AD HLDA( RQ / GT ) 5 1 AD WR ( LOCK ) 4 AD M/ IO ( S ) 3 2 AD DT/ R ( S ) 2 1 AD DEN ( S ) 1 0 AD ALE(QS ) 0 0 NMI INTA (QS ) 1 INTR TEST CLK READY RESET GND 图1-6 8086微处理器的封装外形

  39. 8086/8088 CPU有两种不同的工作模式(最小模式和最大模式)。8条引脚(24~31)在两种工作模式中,具有不同的功能,最大模式下被重新定义的控制信号写在括号中。 • 引脚信号的传输有以下几种类型: • 输出:信号从CPU向外部传送; • 输入:信号从外部送入CPU; • 双向:信号有时从外部送入CPU,有时从CPU向外部传送; • 三态:除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,称为“悬浮态”。

  40. 地址与数据信号引脚 (1)AD15~AD0(Address Data Bus) 分时复用的地址/数据线。 (2)A19/S6~A16/S3(Address/Status) 分时复用的地址/状态线。 用作地址线时,A19~A16与AD15~AD0一起构成访问存储器的20位物理地址。CPU访问I/O端口时,A19~A16保持为“0”。 用作状态线时,S6~S3用来输出状态信息,表示当前正在使用的段寄存器(表1-1)。

  41. 2. 读写控制信号引脚 读写控制信号用来控制CPU对存储器和IO设备的读写过程: • 数据传输方向(读/写); • 传输种类(存储器还是IO设备); • 读写方式(奇地址字节/偶地址字节/字); • 存储器/IO设备是否准备好的状态信号; • 分时总线上信号的类型等。

  42. (1)M/ (Memory/IO) 存储器或I/O端口访问选择信号,三态输出。 (2) (Read) 读信号。三态输出,低电平有效,表示当前CPU正在读存储器或I/O端口。 (3) (Write)写信号。三态输出,低电平有效,表示当前CPU正在写存储器或I/O端口。 (4)READY 准备就绪信号。由外部输入,高电平有效,表示CPU访问的存储器或I/O端口已准备好传送数据。当READY无效时,要求CPU插入一个或多个等待周期TW,直到READY信号有效为止。 (5) /S7(Bus High Enable/Status) 总线高字节有效信号。三态输出,低电平有效。非数据传送期间,该引脚用作S7,输出状态信息。

  43. 8086CPU有16根数据线: • 低8位数据线总是和偶地址的存储器或IO端口相连接, 这些存储器/IO端口称为偶体。 • 高8位的数据线与奇地址的存储器或IO端口相连接,这些存储器/IO端口称为奇体。 • 有效表示CPU正在使用高8位的数据线对奇体的存储单元或IO端口进行访问。它与最低位地址码A0配合起来表示当前总线使用情况,如表1-2。

  44. 表1-2 和AD0编码的含义

  45. (6)ALE(Address Latch Enable) 地址锁存允许信号,向外部输出,高电平有效。 (7) (Data Enable) 数据允许信号,三态输出,低电平有效。进行DMA传输时,被置为高阻态。 (8)DT/ (Data Transmit/Receive) 数据发送/接收控制信号,三态输出。CPU写数据到存储器或I/O端口时,输出高电平;CPU从存储器或I/O端口读取数据时,为低电平。

  46. 3. 中断控制信号引脚 这一组引脚传输中断的请求和应答信号。 (1)INTR(Interrupt Request) 可屏蔽中断请求信号 由外部输入,电平触发,高电平有效。 CPU在每条指令的最后一个时钟周期对INTR进行测试,一旦测试到中断请求,并且当前中断允许标志IF=1,则暂停执行下一条指令转入中断响应周期。

  47. (2) (Interrupt Acknowledge) 中断响应信号。 向外部输出,低电平有效。 该信号表示CPU已经收到并且响应外部发来的INTR信号,要求请求中断的设备向CPU发送中断类型(代表该中断的一个编号)。 (3)NMI(Non Maskable Interrupt Request) 不可屏蔽中断请求信号。 由外部输入,边沿触发,正跳沿有效,不受中断允许标志的限制。这是一种比INTR级别高的中断请求。

  48. 4. DMA控制信号引脚 DMA传输是一种不经过CPU,在内存储器和IO设备之间直接传输数据的方法。进行DMA传输之前要向CPU申请使用总线并取得认可。 (1)HOLD(Hold Request) 总线请求信号。由外部输入,高电平有效。 (2)HLDA(Hold Acknowledge) 总线请求响应信号。向外部输出,高电平有效。 CPU一旦测试到有HOLD请求,就在当前总线周期结束后,使HLDA有效,立即让出总线使用权(所有三态总线处于高阻态,从而不影响外部的存储器与IO设备交换数据)。 HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的控制权。

  49. 5. 其他引脚 (1)Vcc(电源) 8086 CPU只需要单一的+5V电源,由Vcc引脚输入。 (2)CLK(Clock) 主时钟信号,输入。由8284时钟发生器产生。 (3)MN/ (Minimum/Maximum) 工作模式选择信号。由外部输入,为高电平,CPU工作在最小模式,为低电平,CPU工作在最大模式。 (4)RESET 复位信号。由外部输入,高电平有效。 • RESET复位信号通常由计算机机箱上的复位按钮产生; • RESET信号至少要保持4个时钟周期才有效。 (5)TEST 测试信号。由外部输入,低电平有效。CPU执行WAIT指令时,每隔5个时钟周期对TEST进行一次测试,若测试无效,则CPU处于踏步等待状态。有效后,CPU执行WAIT指令后面的下一条指令。

  50. 6. 8088CPU的引脚 8088 CPU的大部分引脚名称及其功能与8086相同,所不同之处仅在于: (1) 由于8088的外部数据线只有8条,因此分时复用地址数据线只有AD7~AD0,AD15~AD8专门用来传送地址而成为A15~A8。 (2) 第34号引脚在8086中是BHE#,由于8088只有8根外部数据线,不再需要此信号,在8088中它被重新定义为SS0,它与DT/R#,IO/M#一起用作最小方式下的周期状态信号。 (3)第28号引脚在8086中是M/IO#,在8088中改为IO/M#,使用的信号极性相反。

More Related