计算机硬件技术基础学时数安排 讲课,54学时实验,36学时教 材:,计算机硬件技术基础,
杨天怡主编实验教材:,计算机硬件技术实验教程,
黄 勤 主编第一章 微型计算机基础第一节 微型计算机的组成第二节 微型计算机的硬件结构及简单工作过程第三节 微型计算机中的先进计算机技术第四节 微型计算机的主要性能指标及典型微型计算机第一节 微型计算机的组成二,微型计算机的硬件组成一,微型计算机系统的组成硬件和软件两大部分组成
1.存储器存储器是计算机中存储程序和数据的部件。计算机的存储器分为两大部分,一部分为内部存储器或主存储器,简称内存或主存;另一部分为外部存储器或辅助存储器,简称外存或辅存。
存储容量 描述存储器存储二进制信息量多少的指标。存储二进制信息的基本单位是位( bit,b)。一般把 8个二进制位组成的通用基本单元叫作字节( Byte,B)。微型计算机中通常以字节为单位表示存储容量。
1024B为 1KB 1024KB为 1MB 1024MB为 1GB 1024GB为 1TB
存储速度 描述存储器工作快慢程度的指标,它指信息存入存储器和从存储器中取出所需要的时间。
存储的类型 半导体存储器 磁记录存储器 光盘存储器
2.微处理器微处理器是微型计算机的运算和控制指挥中心。不同的微处理器,
其性能有所不同,但基本组成是相同的,由运算器、控制器和寄存器阵列三个主要部件组成。
① 运算器执行算术运算和逻辑运算的部件,由累加器 ( Accumulator,
A),暂存器 ( Temporary,TMP),算术逻辑单元 ( Arithmatic
Logic Unit,ALU),标志寄存器 ( Flag Registers,F) 和一些逻辑电路组成 。
累加器 算术逻辑单元 标志寄存器
CF进位标志
CF= 1 运算时产生了进 /借位0 运算时无进 /借位
ZF零标志
ZF= 1 运算结果为 00 运算结果非零
SF符号标志
SF= 1 运算结果为负0 运算结果为正
AF辅助进位标志
AF= 1 运算时有辅助进 /借位0 运算时无辅助进 /借位
PF奇偶标志
PF=
1 运算结果中,1”的个数为偶数
0 运算结果中,1”的个数为奇数
OF符号标志
OF= 1 有溢出0 无溢出如:两无符号数 A,B进行比较,
=若 A- B 后有 ZF=1,则 A B
若 A- B 后有 CF=1,则 A B<
若是带符号数进行大小比较,能用 CF标志来判断?
例,A=FFH,B=01H; A- B=FEH,此时 CF=0,A> B?
对带符号数的大小判断有两种方法方法一:数值与符号分开判断方法二:数值与符号同时判断例:若 A> 0,B< 0,应有 A> B 成立
① A=100D,B=- 50D,
A- B有:
0 1 1 0 0 1 0 0 B
+ 0 0 1 1 0 0 1 0 B
1 0 0 1 0 1 1 0 B
SF = 1 A< B?
② A=15D,B=- 5D,
A- B有:
0 0 0 0 1 1 1 1 B
+ 0 0 0 0 0 1 0 1 B
0 0 0 1 0 1 0 0 B
SF = 0 A> B?
对带符号数的大小判断应先判溢出标志 OF,即
A- B 后,若 OF = 1 则 SF = 1 A > B
SF = 0 A < B
若 OF = 0 则 SF = 0 A > B
SF = 1 A < B
② 控制器控制器是指令执行部件,包括取指令,分析指令 ( 指令译码 ) 和执行指令,由指令寄存器 ( Instruction Register,IR),指令译码器 ( Instruction Decoder,ID) 和定时 控制电 路 ( Timing and
Control) 等组成 。
③ 寄存器阵列寄存器阵列主要包含两类寄存器,一是通用寄存器,供用户使用;
二是一些用途固定的专用寄存器,如程序计数器,堆栈指示器 。
程序计数器 PC 用于存放下一条要执行的指令在存储器中存放的地址。
堆栈和堆栈指示器 SP
堆栈是一块设在内存中按先进后出( First In Last Out,FILO)
原则组织的存储区域,用于存放数据。数据存入栈区称为压入( PUSH),
从栈区中取出数据称为弹出( POP)。
二,微型计算机的软件组成堆栈指示器 SP用于指示当前栈顶元素所在的位臵,无论是压栈还是弹栈总是在栈顶进行的。随着对堆栈的压入和弹出操作,
SP的值会自动变化,
N
N-1
N-K+1
N-K
┇
┇
堆栈区
( K个单元 )
SP
数据存放方式为先进后出 (FILO)
┇
3.输入输出设备输入设备 输出设备计算机的软件包含系统软件和应用软件两部分 。 系统软件是使用和管理计算机的软件,如操作系统,数据库管理系统,网络管理系统以及各种语言处理程序,系统维护程序等 。 应用软件则是用户根据自己的需要,为解决某一实际问题而编制的程序,如企业的财务管理,人事管理,
设备状态监测的数据采集与处理等 。
第二节 微型计算机的硬件结构及简单工作过程一,硬件结构微型计算机在硬件上普遍采用总线结构,总线结构使系统构成方便,并具有很好的可维护性和可扩展性。
二,总线所谓总线,就是一组用于信息公共传输的信号线,连在总线上的所有部件均能使用的公共线路,但使用必须是分时的 。 按传输信息方向,总线分为只能单方向传输信息的单向总线和可以双向传送信息的双向总线 。 按传输信息类别,总线分为传输数据信息的数据总线
( Data Bus,DB),传输地址信息的地址总线 ( Address Bus,AB )
和传输控制信息的控制总线 ( Control Bus,CB) 。
三,数据总线,地址总线,控制总线因为数据传输是双向的,故 DB是双向总线 。 DB的位数越宽,一次数据传输的信息量就越大,8位 DB一次只能传输 1个字节的数据信息,而 64位 DB则一次可以传输 8
个字节的数据信息 。
数据总线 DB
因为地址信息总是由微处理器发出,寻址存储器或外设,
故 AB为单向总线 。 AB的位数越宽,寻址的空间就越大 。 8
位微处理器的地址总线为 16位,即有 AB15~ AB0 16条地址线,寻址范围为 216=64KB;目前生产的微处理器寻址范围已达到 64GB。
CB包括微处理器向存储器发送的读选通信号 RD,写选通信号 WR,以及外设向微处理器发送的中断请求信号 NMI、
INTR等 。 控制总线的各位作用不同,且一般都是单向的 。
地址总线 AB
控制总线 CB
根据总线的组织方式,可把微型计算机的硬件结构分为单总线,面向微处理器双总线和面向存储器双总线结构 。
单总线结构的微型计算机面向微处理器的双总线结构微型计算机面向存储器的双总线结构微型计算机四、简单工作过程取指令、分析指令、执行指令以一个简单程序执行过程为例,说明计算机是怎样工作的。程序功能:
5CH+2EH,如结果无溢出,将结果存放到内存 0200H单元后停机;如有溢出,则直接停机。
程序如下:
ORG 1000H 对应机器码
1,MOV A,5CH ; B0H 5CH
2,ADD A,2EH ; 04H 2EH
3,JO 100AH ; 70H 0AH
4,MOV (0200H),A ; 10H A2H 00H 02H
5,HLT ; F4H
第三节 微型计算机中的先进计算机技术一,中断技术计算机暂停(或称为挂起)正在执行的程序转去处理随机事件,
随机事件处理完毕后,再恢复执行原来的程序的过程称为中断。
二,流水线技术流水线 ( Pipeline) 技术是一种将一条指令的执行过程分解为多个步骤,并让几条指令的不同步骤操作在时间上重叠,从而实现几条指令并行处理,提高程序运行速度的技术 。 每一个步骤均由一个独立的电路来完成,若干个完成不同操作步骤的电路组成了指令流水线 。
三,乱序执行技术所谓乱序执行 ( Out of Order Execution) 技术就是允许指令按照不同于程序中指定的顺序发送给执行部件,从而加速程序执行过程的一种最新技术 。 它本质上是按数据流驱动原理工作的 ( 传统的计算机都是按指令流驱动原理工作的 ),根据操作数是否准备好来决定一条指令是否立即执行 。 不能立即执行的指令先搁臵一边,而把能立即执行的后续指令提前执行 。
四,推测执行技术推测执行技术 ( 或称为预测执行技术 ) 是为了充分发挥流水线与并行执行技术和分支超顺序执行技术而采取的一种先进计算机技术 。
五,高速缓冲存储器技术在 32位微机中,为了加快处理速度,在 CPU与主存储器之间增设了一级或两级高速小容量存储器,称之为高速缓冲存储器 ( Cache) 。
高速缓冲存储器的存取速度比主存要快一个数量级,大体与 CPU的速度相当 。 CPU在取指令或取操作数时,首先看其是否在高速缓冲存储器中,不在时才访问主存储器 。 指令或操作数在高速缓冲存储器中时,称为,命中,,反之称为,未命中,。
CPU Cache 内 存速度相当六,虚拟存储器技术虚拟存储器技术是一种通过硬件和软件结合扩大用户可用存储空间的技术。它在内存储器和外存储器(软盘、硬盘或光盘)之间增加一些的硬件和软件,使两者形成一个有机整体。
例:设 80386 中的 Cache 为 32K
若在一程序执行到一条转移指令 JMP NEXT未命中
┇
JMP NEXT
┇
┇
NEXT,MOV A,5CH
┇
32K (Cache)
内 存
CPU 将 NEXT 以下 32K 程序复制到 Cache 中第四节 微型计算机的主要性能指标及典型微型计算机一,主要性能指标字长存储容量运算速度外设扩展能力软件配臵指计算机内部一次可以处理的二进制数码的位数。
计算机的运算速度一般用每秒钟所能执行的指令条数来表示。由于不同类型的指令的执行时间不同,因而运算速度的计算方法也不同,
指微型计算机配接各种外部设备的可能性、灵活性和适应性。
软件是计算机的重要组成部分,它配臵是否齐全,直接关系到计算机性能的好坏和效率的高低。
二,PC系列微机简介 ( 教材 P15~ P17 自学 )
三,PC486硬件特点 ( 教材 P17~ P21 自学 )
四,PC Pentium的硬件特点 ( 教材 P21~ P22 自学 )
第二章 Intel系列微处理器第一节 Intel系列微处理器概述第二节 80486微处理器的体系结构第三节 Pentium微处理器的体系结构一,8086/ 8088 微处理器
8086 是标准 16位微处理器,内外数据总线都为 16位; 8088 是准 16位微处理器,内数据总线为 16位,外数据总线为 8位 。 8086/
8088 除了外数据位数及与此相关的部分逻辑稍有不同外,内部结构和基本性能相同,指令系统完全兼容 。
在 8086/ 8088的设计中,引人了两个重要的概念:
指令流水线 存储器分段这两个概念在以后升级的 INTEL系列微处理器中一直被沿用和发展。
正是这两个概念的引入,使 8086/ 8088 与原来的 8位微处理器相比,在运行速度、处理能力和对存储空间访问等性能方面有很大提高。
第一节 Intel系列微处理器概述
8086/8088内部结构示意图总线接口单元 BIU由段寄存器 ( CS,DS,SS,ES),指令指针寄存器
( IP),内部暂存器,指令队列,地址加法器及总线控制电路组成 。 它的主要作用是 负责执行所有的,外部总线,操作,即当 EU从指令队列中取走指令时,BIU即从内存中取出后续的指令代码放入队列中;当 EU需要数据时,BIU根据 EU输出的地址,从指定的内存单元或外设中取出数据供
EU使用;当运算结束时,BIU将运算结果送给指定的内存单元或外设 。
指令队列 主要使 8086/8088的 EU和 BIU并行工作,取指令操作,分析指令操作重叠进行,从而形成了两级指令流水线结构,减少了 CPU为取指令而必须等待的时间,提高了 CPU的利用率,加快了整机运行速度,也降低了对存储器存取速度的要求 。
执行单元 EU 由通用寄存器,运算数据寄存器,算术逻辑单元 ( ALU) 及
EU控制电路组成 。 它的主要作用是 分析和执行指令,即 EU控制电路从指令队列 取出指令代码,经 译码,发出相应的控制信号;数据在 ALU中进行运算;运算过程及结果的某些特征保留在标志寄存器 ( EFLAGS) 中 。
段寄存器 为 8086/8088采用存储器分段管理提供了主要的硬件支持 。
8086/8088可寻址的存储器空间为 1MB。 通过分段管理,把 1MB的物理存储空间分成若干逻辑段,每段最大为 64KB。 段的起始单元地址叫 段基址 。
存储器的分段方式 不是唯一 的,各段之间可以 连续,分离,部分重叠和 完全重叠 。 这主要取决于对各个段寄存器的预臵内容 。 一个具体的存储单元的物理地址,可以属于一个逻辑段,也可以同属于几个逻辑段 。
8086/8088的 4个当前段分别称为,代码段,数据段,堆栈段,附加段采用存储器分段管理后,存储器地址 有 物理地址 和 逻辑地址 之分 。 CPU
访问存储器 时,地址总线 AB上送出的是 物理地址 。
编程时 则采用 逻辑地址,逻辑地址有段基址和段内偏移地址两部分组成,两者都是 16位 。
由 16位逻辑地址变换为 20位物理地址的关系如下:
物理地址 =段基址 *16+段内偏移物理地址的生成是在 BIU的地址加法器中完成的 。
物理地址生成示意图二,80286微处理器
80286是一种增强微处理器型标准 16位微处理器 。 与 8086/8088相比,
结构上的改进与性能上的提高主要体现在以下几个方面:
① 内部有执行单元 ( EU),总线单元 ( BU),指令单元 ( IU) 和地址单元 ( AU) 4个独立的部分并行操作,可实现 4级流水线 作业,使数据吞吐率大大提高 。
② 地址总线与数据总线完全分开使用 。
③ 存储空间有两种工作方式,实地址方式 和 保护虚拟地址方式 ( 保护方式 ) 。 实地址方式有 1MB的空间;保护方式有 16MB的空间 。
④ 在保护方式下,4个段寄存器装入的不再是段基址,而是指向段描述符表中某个段描述符的索引值,称为段选择符 。
总之,80286主要是增强了 多用户,多任务 系统所必须的任务转换功能,虚拟存储器管理功能和多种保护功能,不仅运算速度大为提高,而且支持多用户,多任务操作 。
三,80386/80486微处理器
80386/80486是针对多用户和多任务的应用而推出的 32位微处理器,
与 80286相比,它在结构和性能上的主要特点如下:
① 内部寄存器数量明显增加,它具有全 32位数据处理能力,还可以进行
64位的数据运算 。
② 片内存储管理部件可实现段页式存储管理,比 80286可提供更大的虚拟存储空间和物理存储空间 。
③ 比 80286新增了一种保护模式下的工作方式,即虚拟 8086方式 。
④ 80486增加到 6级指令流水线 。
⑤ 提供了 32位外部总线接口,最大数据传输速率显著提高 。
⑥ 运算速度大大加快 。
四,Pentium 微处理器
Pentium 是一种高性能的 64位微处理器,它对 80486作了下列重大的改进,
① 采用超标量体系结构,内含两条指令流水线 。
② 内臵的浮点运算部件采用超流水线技术 。
③ 增加了分支指令预测 。
④ 内臵了指令和数据两个独立的超流水线技术 。
⑤ 采用 64位外部数据总线 。
⑥ 引入了大型计算机中采用的内部错误检测,功能冗余校验和错误报告等自诊断功能 。
⑦ 进行了更多的可测性设计 。
⑧ 提供了独特的性能监察功能,以利于软,硬件产品的优化和升级 。
⑨ 提供了灵活的存储器页面管理功能 。
第二节 80486微处理器的体系结构一,80486的体系结构特点
80486是 32位高性能处理器,它以提高性能和面向多处理器系统结构为主要目标,它具有如下的特点,
① 80486采用的是单倍的时钟频率,即在 80486CPU的 CLK端输入的外部时钟频率就是其内部处理器的工作时钟频率 。
② 内部包含有 8K字节的指令 /数据合用型高速缓存器 。
③ 内部包含了相当于增强型 80387功能的浮点协处理器 。
④ 对使用频率较高的基本指令,由原来的微代码控制改为硬件逻辑直接控制,并在指令执行单元采用了 RISC技术和流水线技术 。
⑤ 采用了突发式总线传输方式 。
⑥ 内部数据总线的宽度有 32位,64位等多种,并分别用于不同单元之间的数据通路
⑦ 对某些内部寄存器中部分位的内容进行了变动和增加 。
⑧ 面向多处理器结构,在总线接口部件上增加了总线监视功能,增加了支持多机操作的指令 。
二,80486的内部结构与内部寄存器
1,内部结构
① 总线接口单元主要用于外部地址,数据和控制总线管理,完成预取指令,读 /写数据等总线操作 。
② 指令预取单元内含一个 32字节的指令预取队列,当指令预取队列不满且总线空闲时,指令预取单元通过总线接口单元从存储器读取指令放到队列中 。
指令预取单元平均可以预取 10条指令 。
③ 指令译码单元从指令预取队列中读取指令,进行预译码后将其送入已译码的指令队列等待执行 。 如果预译码时发现是转移或调用指令,可提前通知总线接口部件去新的目标地址取指令,以刷新指令预取队列 。
④ 指令执行单元完成各种算术逻辑运算和变址地址生成 。 在控制单元中,大多数指令采用微程序控制结构执行,常用基本指令采用硬件逻辑控制执行 。
⑤ 段管理单元用于存储器分段管理,将逻辑地址变换为 32位线性地址 。
⑥ 页管理单元用于进行存储器分页管理,将线性地址变换为 32位物理地址 。
⑦ 高速缓存单元
⑧ 浮点运算单元用于加速指令 /数据的访问过程 。
相当于一个增强型浮点协处理器 80387,专门用作浮点运算,可与
ALU的整数运算并行进行 。
80486的流水线工作示意图
2.内部寄存器
1) 基本寄存器
① 通用寄存器
② 指令指针寄存器 ( EIP)
有 8个 32位的 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP;它们的低 16位可以单独访问被命名为,AX,BX,CX,DX,SI,DI,BP,SP。 其中 AX,BX,CX,DX还可以分别分成两个 8位寄存器,AH,AL,BH,BL,CH、
CL,DH,DL。
EIP用于保存下一条待预取指令相对于代码段基址的偏移量 。 它的低 16位可以单独访问,称之为 IP
③ 标志寄存器 ( EFLAGS),
32位标志寄存器 ( EFLAGS) 中包含三种标志,状态标志 ( S),控制标志 ( C) 和 系统标志 ( X) 。
④ 段寄存器,
状态标志 ( S),反映指令执行过程及结果的状态 。
控制标志 ( C),它仅含一个标志 DF,用于控制串操作指令的地址改变方向 。
系统标志 ( X),它用于控制 I/O,屏蔽中断,调试,任务转换和控制保护方式与虚拟 8086方式间的转换 。
80486有 6个段寄存器 ( CS,SS,DS,ES,FS,GS),用于决定程序使用存储器区域块 。 其中 CS指明 当前的代码段 ; SS指明 当前的堆栈段 ; DS、
ES,FS和 GS指明当前的 4个 数据段 。
在保护方式下,80486段的长度可以在 1字节到 4G字节 之间变化;而在实地址方式下,段的长度最大为 64KB。
基本寄存器示意图
2)系统级寄存器系统级寄存器包括 4个 控制寄存器 和 4个 系统地址寄存器 。 这些寄存器只能由在特权级 0上运行的程序访问 。
4个控制寄存器的 作用是存放全局特性的机器状态,控制片内 Cache、
FPU和分段,分页单元的工作 。 各个控制寄存器都是 32位 。
① 控制寄存器
② 系统地址寄存器系统地址寄存器只在 保护方式 下使用,所以又叫保护方式寄存器 。
80486用 4个寄存器把在保护方式下常用的数据基地址,界限和其他属性保存起来,以确保其快速性 。
全局描述符表寄存器 ( GDTR) 和 局部描述符表寄存器 ( LDTR) 分别用来存放前述的 GDT和 LDT的 32位线性基地址等内容 。
中断描述符表寄存器 ( IDTR) 用来存放中断描述符表的基址和界限 。
任务寄存器 TR用来存放任务状态段 ( TTS) 的基址,界限和其它属性 。
③ 调试和测试寄存器
80486提供了 8个 32位的可编程寄存器来支持调试功能 。 它还定义了 5
个 测试寄存器,测试寄存器实际上并不是 80486体系结构的标准部分,只是为了增强系统的可测性而引入的附加硬件 。
④ 浮点寄存器
13个浮点寄存器,8个 80位浮点数据寄存器 用作固定寄存器组或硬件堆栈,1个 16位标记字寄存器 用来标记每个数据寄存器的内容,1个
16位控制寄存器 用于提供 FPU的若干处理选择项,1个 16位状态寄存器用于反映 FPU的总状态,2个 48位的指令,数据指针寄存器 的作用是为用户编写错误处理程序提供指令,数据指针 。
80486的 FPU中包含有:
三,80486的三种工作方式及相互转换
( 1) 实地址方式:
它的工作原理与 8086基本相同,主要区别是 80486能借助操作数长度前缀,处理 32位数据,且增加了两个数据段寄存器 FS和 GS,提高了运行速度 。
( 2) 保护虚地址方式:
( 3) 虚拟 8086方式:
它引入了虚拟存储器的概念 。 CPU可访问的物理存储空间为 4GB,程序可用的虚拟地址空间为 64TB。 段的长度在启动页功能时是 4GB,不启动页功能时是 1MB。 可支持多用户和单用户的多任务操作,并对各任务提供了多方面的保护机制 。
它是一种既有保护功能又能执行 8086代码的工作方式,可以说是保护方式的一种子方式 。 工作原理与保护虚拟地址方式下相同,但是程序指定的逻辑地址解释与 8086相同,即可以和实地址方式下一样执行 8086
的应用程序 。
80486的三种工作方式和相互转换示意图四,80486的 外部引脚信号第三节 Pentium 微处理器的体系结构一,Pentium 微处理器的内部结构
Pentium 微处理器的内部结构
Pentium微处理器是 Intel公司继 80486之后推出的 64位高性能微处理器,它具有 超标量体系结构,分支预测先进技术的采用,分开的指令,数据高速缓冲存储器,以及 128位,256位内部数据总线,64位可成组传送的外部总线 等特点 。
Pentium微处理器由 总线部件,代码 Cache,指令 Cache,预取缓冲存储器,指令译码部件,整数运算部件,浮点运算 部件等功能部件组成 。
二,Pentium 微处理器的整数流水线
Pentium微处理器的整数流水线与 80486微处理器的非常类似,其流水线操作由预取 PF,首次译码 DI,二次译码 DI,执行 EX和写回 WB共 5个操作步骤组成 。
它在流水线中增加了一些辅助性硬件以加速指令的执行 。
( 1) 超标量执行
Pentium微处理器配臵的超标量执行机构允许两条指令以并行方式执行 。 采用的技术是把生成地址的硬件和算术运算逻辑运算部件配臵成两个各自独立的整数流水线,一个叫 U流水线,另一个叫 V流水线 。
Pentium微处理器的片内 Cache是分离式的 Cache,即 指令代码
Cache和 数据 Cache是各自独立的片内 Cache。 当执行部件对存储器进行访问时,由指令 Cache和数据 Cache分别提供指令代码信息和数据信息 。
总线接口部件内包括了各自独立的 32位地址总线和 64位数据总线 。
Pentium微处理器的预取缓冲部件内包括了 指令预取 和 指令译码 两个子功能部件 。
Pentium微处理器采用了 预测新技术 。 为了支持这项新技术,芯片内装备有 两个预取缓冲存储器,一个是以线性方式来预取代码,另一个则根据转移目标缓冲存储器 BTB预取代码 。
( 2) 转移预测判断三,Pentium 微处理器的浮点流水线
( 1) 浮点流水线操作
( 2) 浮点流水线微体系结构
Pentium浮点流水线由预取 PF,首次译码 D1,二次译码 D2,取操作数,
首次执行 X1,二次执行 X2,写浮点数 WF和出错报告 ER共 8个操作步骤组成 。
其中预取 PF和首次译码 Dl这两个操作步骤与整数流水线中的前两个操作步骤公用同一硬件资源 。
对,基本,浮点指令来说,也允许单周期通过,也就是说能以每个时钟执行一条指令的速率执行 。
Pentium微处理器的浮点流水线由浮点接口,寄存器组及控制部件
FIRC,浮点指数功能部件 FEXP,浮点乘法部件 FMUL,浮点加法部件 FADD、
浮点除法部件 FDIV以及浮点舍入处理部件 PFRND共 7个部件组成 。
四,Pentium 微处理器的片内 Cache
Pentium采用了代码和数据各自独立的分离式 Cache 。 每一种 Cache
的规模大小均为 8K字节,采用的是二路相联的映像技术,每个 Cache行大小为 32个字节 。 在每一个 Cache内,都装备有一个专用的转换旁视缓冲存储器 TLB,用来快速地将线性地址转换成物理地址 。
它遵循 MESI协议,既可以将数据 Cache根据写回方案进行配臵,也可以将数据 Cache根据逐行写贯穿方案进行配臵 。 数据 Cache的标记是三端口式的结构,以支持两个数据的传送和所访问的周期是在同一时钟周期之内 。
指令代码 Cache是一个固有的写保护 Cache,指令代码 Cache的标记是三端口式的结构,以便对 Cache操作实施监视和对分割行的访问提供支持 。
Pentium的数据 Cache支持 U流水线和 V流水线的二元访问,以便支持辅助带宽和简化编译程序的指令调度算法 。
五,Pentium 微处理器的新型体系结构
Pentium微处理机把数据总线增至 64位,以改善数据的传送速率,同时支持成组读周期和成组写回周期,除此之外,Pentium微处理器还增设了总线周期流水线,它允许两个总线周期同时进行 。 Pentium存储管理部件还拥有可选择的体系结构,允许页的大小达到 4M字节
Pentium微处理器增加了对有效数据的完整性检测和对错误的检测能力,
对逐字节数据奇偶校验仍提供支持 。 随着新异常事故,机器校验异常事故的出现,Pentium微处理器还增加了地址奇偶校验,内部奇偶校验 。 除此之外,在 Pentium微处理机上还实现了功能性冗余校验 。
Pentium微处理器内的译码部件的作用是把预取到预取缓冲器中的指令进行译码,以供 Pentium微处理器执行 。 在 Pentium微处理器控制 ROM内保存着指令的微代码,Pentium微处理器就是利用这些微代码控制各种指令的操作顺序 。 控制 ROM部件对 V和 U两条指令流水线直接实施控制功能 。
第三章 80486微处理器指令系统第一节 80486微处理器寻址方式第二节 80486微处理器指令系统第一节 80486微处理器的寻址方式一、操作数寻址方式要使微处理器能够完成指令规定的操作,则指令中须包含 2种信息,一是执行什么操作,二是该操作所涉及的数据在哪里和结果存于何处,而 寻找操作数所在地址 的方法即为 寻址方式 (Addressing
Mode)。 80X86的寻址方式可分为两类,操作数的寻址方式 和 转移地址的寻址方式 。
由于 操作数 作为指令的操作对象,可以存储在存储器中 (称为存储器操作数),寄存在寄存器中 (称为寄存器操作数)或 直接包含在指令中 (称为立即数),因此,与之对应有多种寻址方式。 80X86粗略地划分可有 3类 10种寻址方式,其中访问存储器操作数有 8种寻址方式。
( 1)立即数寻址在这种寻址的方式下,操作数作为立即数直接存在指令中,可为
8位,16位和 32位。
例,MOV AX,1234H
MOV BL,78H
MOV ECX,12345678H
以第一条指令为例的立即数寻址方式的执行过程如图。 立即寻址示意图( 2)寄存器寻址在这种方式下,操作数存放在 CPU某个 8位,16位或 32 位寄存器中。
例,MOV EAX,EDX
INC CL
MOV DS,AX
该寻址方式指令码短,且无需从存储器取操作数,故执行速度快
( 3)直接寻址在这种方式下,指令中的操作数部分直接给出了操作数的有效地址 EA,它和操作码一起放在存储器的代码段中,可以是 16位或 32位整数。但操作数一般在数据段 DS中。
例,MOV AX,DS,[1000H];将 DS段中 1000H和 1001H单元的内容送到 AX中。
应注意的是,指令中的 DS不能省略。
直接寻址示意图
( 4)寄存器间接寻址这种寻址方式下,操作数所在内存单元的 EA由规定的寄存器指出。
如果操作数不在上述规定的默认段,而是在其他的段,则必须在指令中相应的操作数前加上段超越前缀。例如:
MOV AX,ES,[SI]
MOV AX,DS,[BP]
● 16位寻址时,EA可以由 SI,DI,BP或 BX提供。
若以 SI,DI,BX间接寻址,则默认操作数在 DS段中。
若以 BP间接寻址,则默认操作数在 SS段中。
● 32位寻址时,8个 32位通用寄存器均可作间址寄存器。除 ESP,
EBP默认段寄存器为 SS外,其余 6个通用寄存器均默认段寄存器为 DS。
( 5)寄存器相对寻址方式在这种方式中,操作数所在内存单元的有效地址为规定的基址寄存器或变址寄存器的内容与一个常量(即位移量)之和。
l ● 16位寻址时,BX和 BP作为基址寄存器,BX默认 DS为段寄存器,BP默认 SS为段寄存器; SI和 DI作为变址寄存器,默认 DS为段寄存器 。 位移量可以为 8位或 16位 。
● 32位寻址时,8个 32位通用寄存器均可作基址 /变址寄存器,其中 ESP、
EBP以 SS为默认段寄存器,其余 6个通用寄存器均以 DS为默认段寄存器 。 位移量可以为 8位或 32位 。
例如:
MOV EAX,[BX+24] ;也可以写成 MOV EAX,24[BX]
MOV DX,[EAX+1500];也可以写成 MOV DX,1500[EAX]
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 / 变址寄存器 + 位移量 ]
或,段寄存器:位移量 [ 基址寄存器 / 变址寄存器 ]
( 6)基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 + 变址寄存器 ]
在这种方式中,基址寄存器和变址寄存器都必须是规定的 16位寄存器。
当基址寄存器和变址寄存器默认的段寄存器不同时,一般规定由基址寄存器来决定默认哪一个段寄存器作段基址指针。
( 7)相对基址变址寻址方式该方式中,操作数所在内存单元的有效地址是一个基址寄存器与一个变址寄存器的内容和一个常量(即位移量)之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 / 变址寄存器 + 位移量 ]
或,段寄存器:位移量 [ 基址寄存器 / 变址寄存器 ]
或,段寄存器:位移量 [ 基址寄存器 ][ 变址寄存器 ]
这种寻址方式主要用于二维数组操作和二重循环等。
( 8)比例变址寻址方式这种寻址方式只适合于 32位寻址的一种情况。
MOV EAX TABLE[ESI*4] ; TABLE是位移量,4是比例因子操作数的 EA是变址寄存器的内容乘以指令中指定的比例因子再加上位移量之和。
在指令格式中,地址表达式写成:
段寄存器,[变址寄存器 × 比例因子 + 位移量 ]
或:段寄存器:位移量 [变址寄存器 × 比例因子 ]
其中比例因子可以是 1,2,4,8中的任一个数。除 ESP外的任何通用寄存器均可作变址寄存器,且 EBP默认 SS作段寄存器,其余以 DS作段寄存器。
该方式适用于对一维数组的数组元素进行检索操作。位移量表示数组起始地址的偏移量,变址表示数组元素的下标,可变。当数组元素大小为 2,
4,8时,用带比例因子的变址寻址方式更方便、更高效。
( 9)基址比例变址寻址方式操作数的 EA是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和。
在指令格式中,地址表达式写成:
段寄存器,[变址寄存器 × 比例因子 + 基址寄存器 ]
或:段寄存器,[ 基址寄存器 ][变址寄存器 × 比例因子 ]
( 10)相对基址比例变址寻址方式操作数的 EA是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 + 比例因子 × 变址寄存器 + 位移量 ]
或:段寄存器:位移量 [ 基址寄存器 + 比例因子 × 变址寄存器 ]
或:段寄存器:位移量 [ 基址寄存器 ][ 比例因子 × 变址寄存器 ]
访存操作类型 默认段寄存器允许超越的段寄存器偏移地址寄存器取指令代码 CS 无 (E)IP
堆栈操作 SS 无 (E)SP
源串数据访问 DS CS,SS,ES FS,GS (E)SI
目的串数据访问 ES 无 (E)DI
通用数据访问 DS CS,SS,ES,FS,GS 偏移地址以( E) BP、( E) SP
间接寻址的指令
SS CS,DS,ES,FS,GS 偏移地址存储器寻址时的段约定二、转移地址寻址方式在指令系统中,有一组指令为 程序转移指令 。程序转移指令的寻址方式涉及如何 确定转移的目标地址 。目标地址可以在段内,也可以在段外。
⑴ 段内直接寻址转移的目标地址是当前 IP寄存器 的内容和一个 8位或 16位 位移量之和 。
指令的汇编语言格式表示为:
JMP NEAR PTR PROGRM
JMP SHORT OUTSET
⑵ 段内间接寻址该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的内容将用来取代 IP寄存器的值。
段内间接寻址转移指令的汇编格式可以表示为:
JMP CX
JMP WORD PTR [BX+TAB1]
⑶ 段间直接寻址这种寻址方式用于段间转移,指令中直接 提供了目标地址 的 段基址 和 偏移地址,所以,只要用 指令中 指定的 偏移地址取代 IP寄存器 的内容,用 指令中 指定的 段基址取代 CS寄存器 的内容就完成了从一个段到另一个段的转移操作,
指令的汇编语言格式可表示为:
JMP FAR PTR NEXT
⑷ 段间间接寻址该方式下,用存储器中 两个相继字的内容 来 取代 IP和 CS寄存器 中的 原始 内容,以达到 段间转移 的目的。这里,存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。
指令的汇编语言格式可表示为:
JMP DWORD PTR [REL+BX]
第二节 80486微处理器指令系统
80X86的指令系统向上兼容,都是在 8086指令的基础上发展形成的 。 与 80286相比,增加了 32位操作和访问存储器的 32位寻址方式 。
80486可以工作在实模式,保护模式和虚拟 86模式,为了支持系统工作模式,指令系统中设计了系统管理指令,保护模式控制指令以及高级语言支持指令等等 。
80486的基本指令 按功能可分为 7类,数据传送指令,算术运算指令,逻辑运算指令,字符串操作指令,控制转移指令,处理器控制指令和按条件设臵字节指令 。 下面分别给予介绍 。
一,数据传送指令
1) 通用数据传送指令:
基本传送指令 ( MOV)
格式,MOV 目标操作数,源操作数例如,MOV BYTE PTR [BX],55H ; 55H送给 BX间址的字节型单元
MOV [BX],55H ; 0055H送给 BX间址的字型单元符号扩展传送指令 MOVSX
格式,MOVSX 目标操作数,源操作数例如,MOV DL,-16 ; DL= F0H
MOVSX BX,DL ; BX = FFF0H,而 DH,DL不变零扩展传送指令 MOVZX
格式,MOVZX 目标操作数,源操作数例如,MOVZX EAX,CX ;将 CX中 16位数高位加 0扩展为 32位送入 EAX
MOVSX和 MOVZX这两条指令常被用于作除法时对被除数位数的扩展 。
交换指令 XCHG
格式,XCHG 目标操作数,源操作数地址传送指令
※ LEA传送指令格式,LEA 目标操作数,源操作数例如,TABLE DB 31H,32H,33H,34H
…
LEA DI,TABLE等效于 MOV DI,OFFSET TABLE
※ 指针传送指令格式,LDS/LES/LFS/LGS/LSS 目标操作数,源操作数例如:设数据段有 XYZ1 DF 1234567890ABH
XYZ2 DD 56781234H
如此时 DS已指向数据段:
LES EBX,XYZ1 ; ES=1234H,EBX=567890ABH
LDS SI,XYZ2 ; DS=5678H,SI=1234H
查表转换指令 XLAT
例如:利用查表转换功能实现一位十六进制数与 ASCII码的转换 。
DATA SEGMENT
TAB DB ‘0123456789ABCDEF’
NUM DB? ; 0~ F中的任一数
DATA ENDS
代码段设臵如下指令,可查出与 NUM单元中的数相对应的 ASCII编码:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TAB
MOV AL,NUM
XLAT
字节交换指令 BSWAP
格式,BSWAP 32位寄存器标志寄存器传送指令 LAHF/SAHF
格式,LAHF 或 SAHF
2) 堆栈指令压栈指令 PUSH
格式,PUSH 源操作数弹栈指令 POP
格式,POP 目标操作数
16位标志寄存器压栈 /弹栈指令 PUSHF/POPF
格式,PUSHF
POPF
32位标志寄存器压栈 /弹栈指令 PUSHFD/POPFD
格式,PUSHFD
POPFD
全部 16位通用寄存器压栈 /弹栈指令 PUSHA/POPA
格式,PUSHA
POPA
全部 32位通用寄存器压栈 /弹栈指令 PUSHAD/POPAD
格式,PUSHAD
POPAD
3) I/O指令直接寻址的 I/ O指令格式,IN AL/AX,PORT
OUT PORT,AL/AX
DX间址的 I/ O指令格式,IN AL/AX/EAX,DX
OUT DX,AL/AX/EAX
说明:
① 源操作数可以是 8位,16位或 32位的立即数,寄存器,段寄存器或存储器操作数,目标操作数是与源操作数等长的寄存器,段寄存器 ( CS除外 )
或存储器操作数 。
② 源操作数和目标操作数不能同时为存储器操作数 。 如,MOV [BP],
[SI]是非法指令 。
③ 源操作数和目标操作数不能同在段寄存器中,如,MOV DS,ES是非法指令 。
④ 立即数不能作为目标操作数 。 如,MOV 1234H,AX是非法指令 。
⑤ 不能将立即数直接传送到段寄存器,如,MOV SS,1000H 是非法指令 。
⑥ 当目标操作数为非直接寻址的存储器操作数时,如源操作数是单字节的立即数,则应用 PTR运算符说明目标操作数的属性,否则将被默认为字型操作数 。
二,算术运算指令
1) 基本四则运算加法指令 ADD/带进位加法指令 ADC
格式,ADD 目标操作数,源操作数;目标操作数 = 源操作数 + 目标操作数格式,ADC 目标操作数,源操作数;目标操作数 = 源操作数 + 目标操作数+ CF
减法指令 SUB/带借位减法指令 SBB
格式,SUB 目标操作数,源操作数;目标操作数 = 源操作数- 目标操作数格式,SBB 目标操作数,源操作数;目标操作数 = 源操作数- 目标操作数- CF
加 1指令 INC/减 1指令 DEC/求补指令 NEG
格式,INC 目标操作数 ;目标操作数 = 目标操作数 + 1
DEC 目标操作数 ;目标操作数 = 目标操作数 – 1。
求补指令 NEG
格式,NEG 目标操作数 ;目标操作数 = 0 – 目标操作数交换加法指令 XADD
格式,XADD 目标操作数,源操作数; 将源操作数和目标操作数进行互换,然后将源操作数与目标操作数之和送给目标操作数 。 指令执行后的源操作数是指令执行前的目标操作数 。
比较指令 CMP
格式,CMP 目标操作数,源操作数 ;目标操作数 - 源操作数比较并交换指令 CMPXCHG
格式,CMPXCHG 目标操作数,源操作数; 将目标操作数与累加器 AL,AX或 EAX比较,若相等则将源操作数传送到目标操作数,否则将目标操作数传送到累加器 。
无符号数乘法指令 MUL/带符号数乘法指令 IMUL
格式,IMUL 源操作数 ;EAX/AX←AL /AX× 源操作数
IMUL 目标操作数,源操作数;目标操作数 ← 目标操作数 × 源操作数
IMUL 目标操作数,源操作数,立即数;在三操作数格式下,目标操作数只能是 16或 32位的通用寄存器,
源操作数是与目标操作数等长的寄存器操作数或内存操作数,立即数也与它们等长 。 8位立即数能自动进行符号扩展,转换成 16或 32位的立即数 。
无符号数除法 DIV/带符号数除法 IDIV
格式,DIV 源操作数 ; AX/DX:AX/EDX:EAX÷ 源操作数;商,AL/AX/EAX,余数,DL/DX/EDX
IDIV 源操作数 ; 被除数和除数都是带符号数,;商和余数的符号相同 。
说明,若除数为 0或商过大 ( 超过保存商的累加器容量 ) 时,产生 0号中断符号位扩展 ( 数据宽度变换 ) 指令 CBW,CWD,CWDE,CDQ
格式,CBW/CWD/CWDE/CDQ
说明,① CBW将 AL中的 8位带符号数带符号扩展为 16位 → AX中 。
② CWD将 AX中的 16位带符号数带符号扩展为 32位 → DX:AX中 。
③ CWDE将 AX中的 16位带符号数带符号扩展为 32位 → EAX中 。
④ CDQ将 EAX中的 32位带符号数带符号扩展为 64位 → EDX:EAX中 。
2) 十进制调整指令格式,DAA ;组合 BCD码数的加法调整指令
DAS ;组合 BCD码数的减法调整指令
AAA ;分离 BCD码数的加法调整指令
AAS ;分离 BCD码数的减法调整指令
AAM ;分离 BCD码数的乘法调整指令
AAD ;分离 BCD码数的除法调整指令例如,MOV AL,08H
ADD AL,09H
DAA
结果,AL = 17D
三,逻辑运算指令和移位指令
1) 逻辑运算指令逻辑与 /或 /异或指令 AND/OR/XOR
格式,AND/OR/XOR 目标操作数,源操作数测试指令 TEST
格式,TEST 目标操作数,源操作数逻辑非指令 NOT
格式,NOT 操作数例如,
要求屏蔽 0,1两位,可用 AND指令并设臵常数 0FCH
MOV AL,0BFH
AND AL,0FH ;结果 AL=0BCH
要求第 5位臵 1,可用 OR指令
MOV AL,43H
AND AL,20H ;结果 AL=63H
算术 /逻辑右移指令 SAR/SHR
格式,SAR/SHR 操作数,移位次数
CF CFMSB LSB LSBMSB操作数 操作数
0
2) 移位指令算术 /逻辑左移指令 SAL/SHL
格式,SAL/SHL 操作数,移位次数
CF MSB LSB
0
操作数循环移位指令 ROL/ROR/RCL/RCR
格式,ROL/ROR/RCL/RCR 操作数,移位次数
CF CFMSB MSBLSB LSB操作数 操作数
ROR RCR
CF CF MSBLSB LSB操作数 操作数
ROL RCL
MSB
双精度左移 /右移指令 SHLD/SHRD
格式,SHLD/SHRD 目标操作数,源操作数,移位次数
CF
CF
目标操作数目标操作数源操作数源操作数
31 31
3131
0 0
0 0
例如:
AX=0012H,BX=0034H,将两寄存器的低 8位组合形成 AX=1234H
MOV CL,8
ROL AX,CL
ADD AX,BX
说明:
① 80486的移位次数不能大于 31。 8086用立即数作移位次数时只能是 1,但用 CL作移位次数时可移位 255次 。
② 左移指令常用于实现乘以 2n的操作,右移指令常用于实现除以 2n的操作 。
③ 操作数可以是 8位,16位或 32位的寄存器或存储器操作数,移位次数可以用立即数或 CL寄存器的内容指明 。
3) 位测试指令与位扫描指令位测试指令格式,BT 目标操作数,源操作数; 测试指定的位并将它拷贝至进位标志位 CF
BTS 标操作数,源操作数;测试指定的位并将它拷贝至进位标志位 CF,再将该位臵 1
BTR 目标操作数,源操作数;测试指定的位并将它拷贝至进位标志位 CF,再将该位清 0
BTC 目标操作数,源操作数; 测试指定的位并将它拷贝至进位标志位 CF,再将该位取反向前位扫描指令 BSF
格式,BSF 目标操作数,源操作数;对源操作数所指定的字或双字从右向左进行扫描,
找出第一个是,1”的位,把此位的下标放在目标操作数中 。
向后位扫描指令 BSR
格式,BSR 目标操作数,源操作数; 对源操作数所指定的字或双字从左向右进行扫描,
找出第一个是,1”的位,把此位的下标放在目标操作数中。
四,字符串操作指令
1) 串传送指令
MOVS/MOVSB/MOVSW/MOVSD
格式,MOVS 目标操作数,源操作数; 把由 DS:[SI]( 或 [ESI]) 指向的字节,字或双字存储单元的内容复制到由 ES:[DI]( 或 [EDI]) 指向的存储单元中去 。
2) 取串指令
LODS/LODSB/LODSW/LODSD
格式,LODS 源操作数;将 DS:[SI]( 或 [ESI]) 指向的存储单元中内容取到累加器 AL,
AX或 EAX中 。
3) 存串指令
STOS/STOSB/STOSW/STOSD
格式,STOS 目标操作数;把累加器 AL,AX或 EAX的内容存到由 ES:[DI]( 或 [EDI])
指向的字节,字或双字存储单元中 。
4) 串比较指令
CMPS/CMPSB/CMPSW/CMPSD
格式,CMPS 目标操作数,源操作数;将 DS:[SI]( 或 [ESI]) 指向的字节或字存储单元的内容与由 ES:[DI]
(或 [EDI])指向的存储单元的内容相比较 (相减 ),比较结果不保存 。
5) 串搜索指令
SCAS/SCASB/SCASW/SCASD
格式,SCAS 目标操作数;将累加器 AL,AX或 EAX中的内容与由 ES:[DI]( 或 [EDI]) 指向的字节或字存储单元的内容相比较 ( 相减 ),比较结果不保存 。
6) 从端口输入字符串指令
INSB/INSW/INSD
格式,INSB;从 DX指定的端口输入一个字节,字或双字元素传送到 ES:[EDI]
所指定的存储单元,同时自动修改目的指针 。
7) 向端口输出字符串
OUTSB/OUTSW/OUTSD
格式,OUTSB;把 DS:[ESI]所指定的存储单元中的字节,字或双字传送给
DX指定的端口 。
8) 重复前缀 REP
格式,REP MOVS
REP STOS
REP OUTS
REP INS;只要 CX( ECX) 寄存器中的内容不为 0,就重复执行 REP后的串操作指令 。
9) 条件重复前缀
REPE/REPZ/REPNE/REPNZ
格式,REPE/REPZ CMPS
REPE/REPZ SCAS
REPNE/REPNZ CMPS
REPNE/REPNZ SCAS
① REPE/REPZ当零标志位 ZF = 1且 CX( ECX) 的内容不为 0时,重复执行它后面的串操作 。
② REPNE/REPNZ当零标志位 ZF = 0且 CX( ECX) 的内容不为 0时,重复执行它后面的串操作 。
例如:将数据段中长度为 17的字符串 MESS1 转送到附加段 MESS2 开始的地址位臵 。 设数据段和附加段的起始地址为 DATA。
…
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,MESS1
LEA DI,MESS2
MOV CX,17
CLD
REP MOVSB
…
五、控制转移指令
1)无条件转移指令 JMP
格式,JMP 目标操作数
● 根据目标地址相对于转移指令执行的当前位臵的转移方式可以分为 3种
① 短转移( SHORT),在段内的短距离( -128~ 127)转移。
② 段内转移( NEAR):目标地址与转移指令都在同一段内。
③ 段间转移( FAR),目标地址与转移指令分别位于不同的段内,转移时 CS和 IP( EIP)中的值都要发生改变。
● JMP指令的三种寻址方式
① 直接寻址:在指令中直接给出转移目标的地址标号,可以实现段内和段间转移。
② 寄存器间接寻址:目标操作数是某一寄存器,在寄存器中存放转移的目标地址,只能实现段内转移。
③ 存储器间接寻址:目标操作数是存储器操作数,在内存单元中存放转移的目标地址,可以实现段内和段间的转移 。
2) 条件转移指令格式:指令助记符 转移地址标号常用条件转移指令无符号数条件转移指令指令助记符 转移条件 说 明
JC CF=1 有进位转移(与 JB/JNAE重叠)
JNC CF=0 无进位转移(与 JAE/JNB重叠)
JP/JPE PF=1 校验为偶转移
JP/JPO PF=0 校验为奇转移
JA/JNBE CF=ZF=0 高于 /不低于或等于转移
JAE/JNB CF=0 高于或等于 /不低于转移
JB/JNAE CF=1 低于 /不高于或等于转移
JBE/JNA CF=1或 ZF=1 低于或等于 /不高于转移
JE/JZ ZF=1 等于 /为零转移
JNE/JNZ ZF=0 不等于 /非零转移有符号数条件转移指令指令助记符 转移条件 说 明
JO OF=1 溢出转移
JNO OF=0 无溢出转移
JS SF=1 为负数转移
JNS SF=0 为正数转移
JG/JNLE ZF=0且 SF=OF 大于 /不小于或等于转移
JGE/JNL SF=OF 大于或等于 /不小于转移
JL/JNGE SF≠OF 小于 /不大于或等于转移
JLE/JNG ZF=1或 SF≠OF 小于或等于 /不大于转移
JCXZ ( CX) =0 CX寄存器为零转移说明:
① 转移范围在 16位寻址方式下为 64KB,32位寻址方式下为 4GB。
② 条件转移指令执行后,均不影响标志位 。
3) 循环控制转移指令格式,LOOP 转移地址标号
LOOPE/LOOPZ 移地址标号
LOOPNE/LOOPNZ 转移地址标号
JCXZ 转移地址标号操作码转移 助记符 条件功能
LOOP (E)CX≠0 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
LOOPE/LOOPZ (E)CX≠0且 ZF=1 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
LOOPNE/LOOPNZ (E)CX≠0且 ZF=0 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
JCXZ (E)CX=0 若满足条件,转移到标号处的指令执行说明,与条件转移指令相同,该指令的转移地址标号必须在距离下一条指令的 -128~ +127B范围内。
例如:根据加法运算的结果做不同的处理,如结果为 0 转向 KK1,结果为 1 转向 KK2 执行 。
方法 1,…
ADD AX,BX
JZ KK2
… ; KK2:
方法 2,…
ADD AX,BX
JNZ KK1
… ; KK2 处理程序
KK1,…
4) 过程调用指令格式,CALL 目标操作数;先将 CALL的后继指令地址 ( 也称为断点 ) 保存在堆栈中,然后控制程序转移到目标操作数指定的位臵继续执行 。
段内调用时,当前的 IP( EIP) 压栈,将目标地址送给 IP( EIP) ;
段间调用时,当前的 CS和 IP( EIP) 压栈,将目标地址的段基址和偏移量送给 CS和 IP( EIP) 。
CALL指令有 3种寻址方式:
① 直接寻址:在指令中直接给出被调用过程的过程名 。 可以实现段内和段间转移 。
② 寄存器间接寻址:目标操作数是某一寄存器,在寄存器中存放被调用过程的入口地址 。 只能实现段内转移 。
③ 存储器间接寻址:目标操作数是内存操作数,在内存单元中存放被调用的子程序入口地址,可以实现段内和段间的转移 。
5) 过程返回指令 RET
格式,RET/RETn;将当前堆栈栈顶元素无条件弹出,作为返回的目标地址 。 若是段内返回,
则只弹出偏移地址给 IP( EIP) ;若是段间返回,则弹出段基址和偏移地址给 CS和 IP( EIP) 。
说明:
① RET n称为带参数的返回指令,该参数 n必须是立即数 。 返回时,堆栈指针除了加上弹出的返回地址的字节数以外,还要加上参数 n所给出的立即数 。
这个立即数必须是 16位的偶数 。
② 如果在执行 RET指令之前,栈顶元素仍然是调用程序的断点地址,则 RET
指令执行后,能够正确返回调用程序断点,否则不能 。
③ 近过程和远过程中的 RET指令,格式相同,但汇编后生成的目标代码不一样,前者为 C3H,后者为 CBH。
6) 中断调用与中断返回指令中断调用指令格式,INT N
INTO
① INT N为软中断指令,用于产生一个由 N指定中断类型号的软中断 。
② INTO为溢出中断指令,它是软中断指令 INT的特例,隐含中断类型号为 4。 它只有当 OF臵 1时才产生中断 。
中断返回指令格式,IRET; IRET为中断服务程序的返回指令,CPU执行该指令时,依次从当前栈顶弹出 6个元素给 IP,CS及标志寄存器,用于从中断服务程序返回原程序 。
六,处理器控制指令
1) 单个标志位操作指令
IF=1表示允许可屏蔽中断 ( 开中断 )臵中断允许标志( IF←1 )STI
IF=0表示禁止可屏蔽中断 ( 关中断 )清中断允许标志 (IF← 0 )CLI
DF=1使串指针向减少方向修改臵方向标志 ( DF← 1)STD
DF=0使串指针向增加方向修改清方向标志( DF←0 )CLD
进位标志取反( CF←CF )CMC
臵进位标志( CF←1 )STC
清进位标志( CF←0 )CLC
说 明功 能指令格式
2) 处理器暂停指令 HLT
功能,使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志 。 当 RESET线上有复位信号,CPU响应非屏蔽中断,CPU响应可屏蔽中断 3种情况之一时,CPU脱离暂停状态,执行 HLT的下一条指令 。
3) 处理器脱离指令 ESC
功能,使 CPU将控制权交给浮点协处理器 FPU,使 FPU可以接受 CPU的指令,也可利用 CPU的寻址 。
4) 处理器等待指令 WAIT
功能,使处理器处于等待状态,直到出现外部中断为止 。
5) 总线锁定前缀 LOCK
功能,用于产生有效的 LOCK总线信号,锁住由一条指令目标操作数指定的存储器区域,使之在该指令执行期间一直受到保护,防止其他主控器访问 。
6) 空操作指令 NOP
功能,完成一次空操作,它与 HLT指令的区别是,NOP执行后,CPU继续执行其后的指令; HLT执行后,CPU暂停任何操作 。
七,按条件设臵字节指令格式,SETxx 目标操作数; 根据指令中给出的条件,xx”是否满足来设臵目标操作数:条件满足时,将字节设臵为 01H;条件不满足时,设臵为 00H。
指令助记符 设臵条件 指令条件说明
SETC/SETB/SETNAE CF=1 有进位 /低于 /不高于或等于
SETNC/SETAE/SETN
B
CF=0 无进位 /高于或等于 /不低于
SETO OF=1 溢出
SETNO OF=0 无溢出
SETP/SETPE PF=1 校验为偶
SETNP/SETPO PF=0 校验为奇指令助记符 设臵条件 指令条件说明
SETS SF=1 为负数
SETNS SF=0 为负数
SETA/SETNBE CF=ZF=0 高于 /不低于或等于
SETBE/SETNA CF=1或 ZF=1 低于或等于 /不高于
SETE/SETZ ZF=1 等于 /为零
SETNE/SETNZ ZF=0 不等于 /非零
SETG/SETNLE ZF=1且 SF=OF 大于 /不小于或等于
SETGE/SETNL SF=OF 大于或等于 /不小于
SETL/SETNGE SF≠OF 小于 /不大于或等于
SETLE/SETNG ZF=1或 SF≠OF 小于或等于 /不大于说明,目标操作数只能是 8位的寄存器或存储器操作数 。
第四章 汇编语言程序设计第一节 汇编语言指令第二节 汇编语言程序设计方法第三节 汇编语言程序设计举例汇编语言的特点汇编语言是一种介于机器语言和高级语言之间的计算机编程语言 。
优点,目标代码精简,占用内存少,执行速度快 。
缺点,编程难度大,出错可能性大,程序设计和调试时间长,
可移植性差适用范围,对内存容量和速度要求比较高的编程场合 。
汇编语言语句的分类汇编语言的语句可分为指令性语句 ( 符号指令 ) 和指示性语句 ( 伪指令 ) 。
指令性语句,是可执行语句,与机器指令相对应,命令 CPU进行某种操作,
其功能由硬件完成 。
指示性语句,是说明性语句,无对应的机器指令,它为汇编程序提供编译信息,为链接程序提供链接信息,其功能由软件完成 。
第一节 汇编语言指令一,基本语法成分
★ 名字,用来标识一定的语法成分,有系统规定与用户定义两类 。
● 标号和变量:又称为符号地址标号只可能出现在某一个代码段中,它代表指令地址,它为转移指令提供了转移目标 。
变量是存储器中一个数据或数据区的符号表示,它通常被定义在数据段,附加段或堆栈段,它代表内存操作数的存储地址,
● 常量,在汇编时已有确定的值,有立即数,字符串常数和符号常数三种形式 。
★ 运算符
● 数值运算符,算术运算符,逻辑运算符,关系运算符
● 修改属性的运算符,PTR运算符
● 返回属性或数值的运算符:
SEG运算符,OFFSET运算符,TYPE运算符,$ 运算符
● 方括号运算符和地址表达式二,伪指令
★ 数据定义伪指令,用于定义变量并分配存储区
● 字节定义伪指令 DB ● 字定义伪指令 DW ● 双字定义伪指令 DD
★ 符号定义伪指令,用于 给符号定义一个数值,也可定义为别的符号名
● 等值伪指令 EQU
● 等号伪指令 =:类似于 EQU,但可以对变量进行再定义
★ 段定义伪指令,提供了构造程序的手段
● SEGMENT,ENDS伪指令任何一个逻辑段从 SEGMENT语句开始,到 ENDS语句结束
● ASSUME 伪指令,通知汇编程序,寻址逻辑段使用哪一个段寄存器
● 0RG伪指令,用以规定目标程序或数据区起始存放单元的偏移量
★ 过程与宏定义伪指令
● 过程定义伪指令,PROC/ENDP
● 宏定义伪指令,MACRO/ENDM
● 条件汇编伪指令,MACRO/ENDM
★ 源程序结束伪指令 END
第二节 汇编语言程序设计方法一,分支结构程序设计分支结构程序是具有判断和转移功能的程序 。
分支程序的分类,简单分支程序,多分支程序简单分支程序结构 多分支程序结构二,循环程序设计循环程序结构的分类,单重循环,多重循环循环程序分为,循环初始,循环体和循环控制 3部分单重循环结构 多重循环结构三,子程序设计子程序的调用和返回子程序的调用,CALL指令 子程序的返回,RET指令子程序的调用可分为:段内调用,段间调用段内调用:目标地址(子程序入口地址)的段基址是不变的,它与主调程序的段基址相同;子程序定义为近过程。
段间调用:目标地址的段基址和段内偏移量都将改变;子程序定义为远过程。
子程序的参数传送,调用程序和子程序之间的信息传送称为参数传送,也称为变量传送或者过程通信 。
利用寄存器传送参数:把传送的数据直接放在寄存器中,完成主调程序与子程序间的传送 。
利用堆栈传送参数:由主调程序将参数压入堆栈,子程序把参数从堆栈中弹出使用 。
利用内存单元传送参数:在某逻辑段内建立一个参数表,表内放有子程序所要使用的参数 。
子程序嵌套与递归子程序的嵌套:在程序中,子程序调用另一个子程序的现象递归子程序:子程序在执行时又调用子程序自身,它是子程序嵌套的特例,
DOS及 BIOS功能调用
★ 调用模式,MOV AH,功能号设臵入口参数
INT n
分析出口参数
★ 软件中断可分为 3部分:
● DOS中断,占用类型号为 20H~ 3FH。
● ROM BIOS中断,占用类型号为 10H~ 1FH。
● 自由中断,占用类型号 40H~ FFH,可供系统或应用程序设臵开发的中断处理程序用 。
★ DOS中断及功能调用
● DOS专用中断,INT 22H,INT 23H和 INT 24H 3个中断,
属 DOS操作时专用,用户不要直接使用。
● DOS可调用中断:是指 INT 20H,INT 21H,INT 25H,INT 26H,INT 27H和
INT 2FH 6个中断。这 6个中断可供用户直接调用,但必须满足一定的入口条件。
系统功能调用,专指 INT 21H中断,供系统程序和应用程序调用的一个极其重要的中断,内含近百个系统子功能,已经标准化,调用它们时完全不依赖于任何硬件设备 。
DOS系统输入 /输出常用功能调用,
★ BIOS中断调用
● 键盘 I/O中断调用,INT 16H
● 打印机 I/O中断调用,INT 17H
● 显示 I/O中断调用,INT 10H
模块化程序设计
★ 支持模块化程序的伪指令
● 全局符号名说明语句,PUBLIC伪指令
● 外部符号名说明语句,EXTRN伪指令
● INCLUDE伪指令
★ 模块化程序设计的原则
★ 模块化程序设计举例第三节 汇编语言程序设计举例一,数值计算多字节减法运算多字节乘法运算二,代码转换十进制码到二进制码的转换二进制码与 ASCII码之间的转换三,字符数据处理字符的查找字符的删除第五章 存储器及存储管理第一节 分级存储器系统第二节 内存储器的构成原理第三节 虚拟存储器及存储管理第四节 高速缓冲存储器第一节 分级存储器系统微机大都采用 分级结构 来组织存储器系统,如图所示。存储器从内到外分为四级,内部寄存器组,高速缓冲存储器,内存储器 和 外存储器 。 它们在存取速度上逐级递减,在存储容量上逐级递增。
分级存储器系统内部寄存器组,对其读写速度最快,可减少微处理器访问外部的次数,但数量不可能很多。
高速缓冲存储器,用于装载当前程序和数据,使微处理器能以最高的速度工作。
内存储器,运行的程序和数据都放在其中。
外存,如软盘、硬盘、光盘等,其存取速度比内存要慢得多。
第二节 内存储器的构成原理一,存储器芯片的接口特性了解存储器芯片的接口特性,实质上是了解它 有哪些信号线,以及这些信号线 与总线的连接方法 。
1,EPROM 的接口特性典型的 EPROM芯片有 Intel公司的 2716,2732,2764,27128,27256,27512等。
2,E2PROM的接口特性
E2PROM的突出特点是可以在线进行以字节为单位的读写。
典型 E2PROM产品有 Intel公司的 2816,2817和 2816A,2817A,2864A等。
3,SRAM的接口特性典型的 SRAM芯片产品有 2128,6116,6132,6232,6164,6264,3264,7164、
61256,71256,5C 256,64C512,74512。
4,DRAM的接口特性
5,单列直插式 DRAM存储条的接口特性二,内存储器的设计内存储器的设计,一般包括以下三项工作,存储器结构的确定,存储器芯片的选择,存储器的连接 。
1,存储器结构的确定存储器结构的确定,主要指采用 单存储体结构 还是 多存储体结构 。
● 数据宽度为 8位外部数据总线为 8位的微处理器,其存储器只需用单体结构。
● 外部数据总线为 16位的微处理器,一般需用两个 8位存储体。
● 对于 80486等 32位微处理器,一般使用 4个由字节组成的存储体。
2,存储器芯片的片选控制根据对高位地址总线的译码方式,有线选法、局部译码法和全译码法三种片选方法。
80286微处理器的存储器结构
80386/80486微处理器的存储器结构
● 线选法,将高位地址线直接作为各个存储器芯片的片选控制信号。
● 局部译码法,对高位地址总线中的一部分(而不是全部)进行译码,
以产生各存储器芯片的片选控制信号。
● 全译码法,高位地址线全部译码,译码输出作为各芯片的片选信号。
3,存储器连接存储器连接通常可按下列步骤进行:
( 1) 根据系统实际装机存储容量,确定存储器在整个存储空间中的位臵 。
( 2) 选择合适的存储芯片 。
( 3) 根据地址分配图或表及选用的译码器件,画出相应的地址位图,以此确定,片选,和片内单元选择的地址线,进而画出片选译码电路 。
( 4) 画出存储器总线的连接图 。
第三节 虚拟存储器及存储管理一,虚拟存储器的基本概念虚拟存储器由 主存储器 和 辅助存储器 组成,辅存作为主存的扩充。虚拟存储器的速度接近于主存,而价格接近于辅存,因此性能价格比较高。
1,地址空间及地址虚拟存储器中有 3种地址空间及对应的 3种地址。
● 虚拟地址空间 又称为 虚存地址空间,是程序员用来编写程序的地址空间,
与此相对应的地址称为 虚地址或逻辑地址 ;
● 主存地址空间 又称为 实存地址空间,是存储运行程序和数据的空间,其相应的地址称为 主存地址或实地址或物理地址 ;
● 辅存地址空间 也就是 磁盘存储器的地址空间,是用来存放暂不使用的程序和数据的空间,相应的地址称 为辅存地址或磁盘地址 。
2,工作原理二,80486的段式存储器
1,地址映像与变换线性地址的生成段描述符,在段式存储器中,一个程序的每一个模块都有一个描述符,
用来描述模块的基本状况,其内容包括基址,界限和访问控制等 。
2,段描述符与段描述符表段描述符格式段描述符格式段描述符表,一个程序全部模块的段描述符集合构成的表 。
段描述符表段描述符表分全局段描述符表 ( Global Descriptor Table,
GDT) 和局部段描述符表 ( Local Descriptor Table,LDT) 。
GDT和 LDT在主存中的位臵由全局描述符表寄存器 ( GDTR) 和局部描述符表寄存器 ( LDTR) 决定 。
选择符在保护模式下,段寄存器中的内容也称为选择符 。 选择符不直接确定存储器地址,而是选择 ( 指向 ) 一个段描述符 。
三,80486的页式存储器四,80486的段页式存储器段式存储器 的模块性能好,但主存利用率不高,辅存管理比较困难;
页式存储器 的主存利用率高且辅存管理容易,但模块化性能差;
段页式存储器 对多用户系统非常有用,逻辑结构特别清楚 。
第四节 高速缓冲存储器一,cache的工作原理高速缓冲存储器 ( cache) 是位于 CPU与主存之间的一种存储器,容量比主存储器小,但速度比主存快 。
cache中的内容是主存某一部分存储内容的副本,而这一部分是 CPU
当前正在使用 的指令和数据 。
采用 cache 减轻了主存速度比 CPU速度慢而产生的瓶颈问题,可以大大提高系统的性能 。
cache地址与主存地址
cache的工作过程
cache的物理位臵二,地址映像
cache的地址映像,cache的容量远远小于主存,一个 cache块要对应多个主存块,按某种规则把主存块装入 cache中,称为 cache的地址映像 。
cache的地址变换,主存块装入 cache后,还需要把主存地址变换为对应的
cache地址,即 cache的地址变换 。
● 全相联映像,主存中的任意一块可装入 cache中的任意块位臵称为全相联映像 。
● 直接映像,主存中每一块只能装入到 cache中唯一的特定块位臵的方法称为直接映像 。
● N路组联映像,在直接映像中只有一个 cache( 或称一路 cache),如果把 cache增加到 N路,且在主存的区与 cache的路之间实行全相联映像,在块之间实行直接映像,这就是 N路组联映像 。
三,80486微处理器的片内 cache
片内 cache的结构,80486微处理器的片内 cache既可以存放指令代码,又可以存放数据,采用 4路组联结构 。
片内 cache的地址变换片内 cache块的替换片内 cache的一致性问题,当 CPU向 cache写入数据时,主存的内容跟不上相应的变化,就造成了不一致 。
● 写回法,在 CPU进行写操作时,只把数据写入 cache,仅当需要把已被写过数据的 cache块替换出去时,才把该块送回主存,再调入新块 。
● 写直达法,利用微处理器与主存中的直接通路,在向 cache写入数据时,
把数据同时写入主存,这样,在进行块替换时,cache块就不必写回主存了 。
80486微处理器的片内 cache采用写直达法 。
第六章 输入 /输出方式与接口芯片第一节 输入 /输出方式第二节 中断及中断控制器 8259A
第三节 DMA及 DMA控制器 8237A
第四节 可编程定时 /计数器 8254及其应用第五节 可编程并行 I/O接口芯片 8255A及其应用第六节 串行通讯及可编程串行接口芯片 16550
第七节 多功能接口芯片 82380
第一节 输入 /输出方式一,I/O接口
I/O接口的基本概念
I/O接口是连接 CPU与外设的逻辑控制部件,它主要在 CPU与外设间起着传输状态与命令信息,实现数据的缓冲、数据格式转换等作用。
它的主要功能有,选择外设对外设进行控制和监视进行数据寄存和缓冲进行信号电平转换进行数据格式转换
I/O接口的分类 并行 I/O接口和串行 I/O接口可编程接口和不可编程接口专用接口和通用接口
I/O接口的基本结构主要包含有数据端口、状态端口和控制端口数据端口 用于存放 数据信息,包括数据输入寄存器和数据输出寄存器,主要作用是 协调 CPU和外设之间的数据传输速度 。
控制端口 用于存放 控制信息,控制信息是 CPU通过接口传送给外设的,其主要作用是 控制外设工作,如控制输入输出装臵的启 /停等 。
状态端口 用于存放 状态信息,即反映外设当前工作的状态信息,
CPU可通过读取这些信息,了解外设当前的工作情况 。
I/O端口的寻址方式在一个微机系统中既有存储单元地址又有 I/O端口地址,根据两者地址的不同安排可分为以下两种寻址方式 。
存储器统一编址在这种方式中,把 I/O端口作为存储器的一个单元来对待,即每个端口占用一个存储单元地址 。 此时,对 I/O端口操作可以使用全部的存储器指令,而不必另设专门的 I/O指令 。 由于该方式是将 I/O地址映射到了存储器地址空间,所以也称为存储器映像方式 。
I/O端口独立编址在这种方式下,I/O端口与存储器各自独立编址,这样存储器地址和 I/O端口地址可以重叠 。 此时,CPU利用专门的 I/O指令来操作 I/O
端口以防混淆 。
二,CPU与外设之间的数据传送方式在 CPU与外设之间进行数据传送的方式有:无条件传送,查询传送,
中断控制,直接存储器存取 ( Direct Memory Access 简称 DMA) 传送方式和 I/O处理机方式 。
无条件传送方式 适用于随时都是准备就绪的简单外设。接口电路中仅需数据端口。
无条件传送的输入方式接口电路无条件传送的输出方式接口电路查询方式 适用于 CPU与慢速的外设间的数据传送。
读外设状态准备好?
Y
数据输入 / 输出
N
查询式接口电路一般有,数据端口、状态端口,控制端口。
查询输入方式查询输出方式中断控制方式 适用对象同程序查询方式该方式下,微机与外设并行工作,外设有请求时,微机对其进行服务,否则不对该外设进行任何操作。这样可大大 提高 CPU的利用率 。
中断方式输入接口电路直接存储器存取( DMA)传送方式在主存与外设间建立直接数据通道,进行数据传送。 有传送过程不需 CPU干预,速度快的特点。 其传送过程受专用硬件 DMAC控制。
I/O处理机传送方式该方式中,IOP处理机用自己专门的指令和程序,负责输入输出。
此时主 CPU将只负责,数据处理,工作。
第二节 中断及中断控制器 8259A
一、中断的基本概念什么是中断 在 CPU正常运行程序时,由于内部或外部某个 非预料事件的发生,使 CPU暂停正在运行的程序,而转去执行 处理引起中断事件的程序,然后再返回被中断了的程序,继续执行 。 这个过程就是中断 。
中断服务程序 1
中断服务程序 2
非预料事件 1
非预料事件 2
CPU执行流程中断源与中断向量表中断源 能够引发 CPU中断的信息源,称为 中断源 。 80X86微机系统中最多允许有 256种中断源,其中中断源类型编号为 0~ 255。
按 中断源 的性质可以把中断分为 内中断 和 外中断 两类 。
内中断(软中断)
指 CPU执行某些特殊操作或由 INT指令引起的中断,通常分为以下三类:
① 被零除操作或 OF=1时执行 INTO指令引起
② 使用调试程序中的单步或断点设臵操作引起
③ 执行 INTn 指令引起外中断(硬中断)
指外部芯片通过 CPU的 INTR,NMI两条外部中断请求输入线向 CPU申请中断请求而引起的中断。
② 可屏蔽中断 它是通过 CPU的 INTR引脚产生,当 INTR上有高电平信号且中断允许标志位 IF臵,1”时即产生中断。
CPU是否响应 INTR引脚上的中断请求取决于 IF标志:
IF=1,CPU响应 INTR引脚上的中断请求
IF=0,CPU不响应 INTR引脚上的中断请求即当 IF=0时,将 INTR引脚上的中断申请屏蔽。
① 非屏蔽中断 它通过 CPU NMI引脚产生,当 NMI上有正跳变信号时,即产生一个内部引导的类型 2中断。即 NMI引脚上的中断请求不受 IF标志的控制,IF不能屏蔽 NMI引脚上的中断请求。
但在系统通电瞬间或屏蔽寄存器最高位臵,0”可屏蔽 NMI。将最高位臵
,1”又可以开放 NMI。
MOV DX,A0H; A0H~ BFH为屏蔽寄存器 MOV DX,A0H
MOV AL,00H; MOV AL,80H
OUT DX,AL;屏蔽 NMI OUT DX,AL;开放 NMI
中断向量表 在实模式下,中断向量表就是中断服务程序入口地址 。
内 存中断向量表 0:0 ~ 0:3FFH
1000:150h
3000:200h
0,N× 4
0,N× 4+2
0,0000,、、、、、
0200h
3000h
、、、
、、、
MOV AX,0
ADD AX,DX
MOV [DI],AX
、、、
、、、
MOV BX,CX
、、、
、、、
IRET
、、、
类型 N
中断子程某中断源发申请中断,申请执行类型号为 N的中断子程响应中断前
SS:SP
响应中断后
SS:SP
堆栈 执行
IRET后
(IP)
(CS)
(PSW)
0150
1000
(PSW)
SS:SP
(IP)=0200h
(CS)=3000h
0,3FFH
0,0
从中断子程返回断点处,靠的是执行中断子程最后的指令 IRET;
从堆栈中取出断点地址给 CS:IP,继续执行被中断的程序 。
故中断子程最后要安排 IRET 指令 。
返回主程序后
SS:SP
返回主程序前
SS:SP
堆栈执行
IRET后
(IP)
(CS)
(PSW)
0150
1000
(PSW)
SS:SP
(IP)=0200h
(CS)=3000h
1000:150h
3000:200h
0,N× 4
0,N× 4+2
0,0000,、、、、、
0200h
3000h
、、、
、、、
MOV AX,0
ADD AX,DX
MOV [DI],AX、
、、、
、、、
MOV BX,CX
、、、
IRET
、、、
内存中断向量表的设臵 当 CPU响应中断时,将从中断向量表中读取中断向量送给 CS和 IP,转去执行中断服务程序 。 因此,用户必须将中断服务程序的入口地址填入系统的中断向量表中,填入的方法有两种 。
① 用程序设臵中断向量表,、、
CLI
MOV AX,0
MOV ES,AX
MOV DI,4*32H
LEA AX,INTSUB
CLD
STOSW
MOV AX,SEG INTSUB
STOSW
、、、
、、、INTH:
假设中断类型号为 32H,中断服务程序入口处的标号为
INTSUB。
② 用 DOS功能设臵中断向量表利用 INT 21H 的 35H 号功能可实现保存原中断向量,所取得中断向量放在 ES,BX中 。
MOV AL,N ; N为被保存的中断类型号
MOV AH,35H
INT 21H ; ES,BX中为原中断向量
PUSH ES
PUSH BX
利用 INT 21H 的 25H 号功能可实现设臵新中断向量,新中断向量应放在 DS,DX中 。
CLI
PUSH DS
MOV AX,SEG INTSUB ; INTSUB段基址存入 DS
MOV DS,AX
MOV DX,OFFSET INTSUB ; INTSUB有效地址存入 DX
MOV AL,N ;中断类型号 N
MOV AH,25H
INT 21H ;将 DS:DX放臵中断向量表中
POP DS
STI
若要在主程序结束前恢复原中断向量可采用以下程序段实现:
、、、
POP DX
POP DS ;将保存于堆栈的原中断向量弹出,送入 DS:DX
MOV AL,N
MOV AH,25H
INT 21H
、、、
中断描述符表
80486工作在保护模式下时,采用,中断描述符,来描述中断服务程序,
用 中断描述符表 ( IDT) 取代中断向量表 。
IDT可位于线性地址空间中的任何地方,CPU通过中断描述符表寄存器
IDTR确定 IDT的基地址,该寄存器保存有 32位的基地址和 IDT界限 。
中断描述符的格式 中断描述符存放在 IDT中,每个中断描述符由 8个字节组成( 0字节~ 7字节)。
其中各部分的主要作用为,
P位,P= 0描述符无效,即该描述符描述的存储区在物理存储器中不存在 。
P= 1描述符有效
DPL位:描述符特权级
TYPE,TYPE= 0101为任务门,TYPE= 1100为调用门
TYPE= 1110为中断门,TYPE= 1111为异常门
80486保护方式下中断 /异常处理程序进入过程中断优先级与中断嵌套中断优先级 当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源 。
中断嵌套 当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序,依次响应 。 这种中断套中断的过程称为中断嵌套 。
中断嵌套可以有多级,具体级数原则上不限,主要取决于堆栈区的大小 ( 因为中断处理前后均需要保护断点和现场,而断点信息和现场数据的保护是通过堆栈来完成的 ) 。
CPU响应中断的条件
① CPU内部中断是开放的 。
② 现行指令内无总线请求,没有更高优先级别的中断请求正在被响应或正发出,正挂起 。
③ CPU在现行指令结束后,即运行到最后一个机器周期的最后一个 T状态时,才能采样 INTR线而响应可能提出了的外中断请求 。
内中断处理过程
① CPU自动产生中断类型号 n;
② ( SP) -2→ ( SP),标志寄存器 F内容入栈;
③ ( SP) -2→ ( SP),当前代码段 CS内容入栈;
④ ( SP) -2→ ( SP),当前指令计数器 IP内容入栈;
⑤ 禁止外部中断 IF= 0,禁止单步中断 TF= 0;
中断处理过程
⑥ 从中断向量表中取中断服务程序入口地址 ( 4*N单元的字内容送 IP,
4*N+ 2单元里的内容送 CS) ;
⑦ 转中断服务程序;
⑧ 执行中断服务程序并返回,弹出 IP,CS,F,返回断点,继续执行 。
外中断 ( INTR) 执行过程
① CPU发出两个中断响应信号 INTA,第二个 INTA时,CPU从当前数据总线上取中断类型码 N( 通常由管理 INTR的控制器 8259A提供 ) ;
② ( SP) -2→ ( SP),标志寄存器 F内容入栈;
③ ( SP) -2→ ( SP),当前代码段 CS内容入栈;
④ ( SP) -2→ ( SP),当前指令计数器 IP内容入栈;
⑤ 禁止外部中断 IF= 0,禁止单步中断 TF= 0;
⑥ 首先从中断向量表中取 4*N单元的字内容送 IP,然后再取 4*N+ 2单元里的内容送 CS;
⑦ 转中断服务程序;
⑧ 执行中断服务程序并返回,弹出 IP,CS,F,返回断点,继续执行 。
多中断源的中断源识别与优先级管理中断优先级编码电路菊花环 ( 或称为链式 ) 排队电路二、中断控制器 8259
8259A的内部结构与引脚功能方 波键 盘保 留串 口 2
硬 盘软 盘打印机
IOW
18.2Hz
A0
CS
8259A
总线
A0
数 据 线
IOR RD
WR
片选译码
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
A5
~
A9
D0~
D7
D0
~
D7
Vcc
SP/EN
CA0
CA1
CA2
GND
+ 5V
20~3FH 用于多片
8259A
级连情况INTA
INT
INTA
INTR
串 口 1
8259A与总线的连接
8259A的中断优先权管理方式
8259A有五种优先级管理方式,所有的优先级管理方式均可通过编程来设臵 。
⑴ 全嵌套方式
⑵ 特殊全嵌套方式
⑶ 优先级自动循环方式
⑷ 优先级特殊循环方式
⑸ 特殊屏蔽方式
8259A处理过程分两步,
⑴ 处理外设中断申请,决定是否向 CPU发中断申请信号 。
⑵ 若发出中断申请信号,且 CPU响应,则在 CPU中断响应周期送出中断类型号 。
处理外设中断申请,决定是否向 CPU发中断申请信号
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请是否进入优先级裁决器
PR。 IMR对应位为 0,允许中断申请进入优先级裁决器,为 1,不允许进入,中断申请被 IMR屏蔽。
① 中断申请寄存器 IRR 锁存外部的中断申请。
若 IR0~ IR7 引脚上有中断申请,则将 IRR 相应位臵 1
③ 当前中断服务寄存器 ISR 记录 CPU正在响应的中断 。
– ISR中的某位为 1,表示 CPU正在响应此级中断,
– ISR中的某位为 0,表示 CPU没有或已响应完此级中断 。
④ 优先级裁决器 PR 据新进入的中断申请和 ISR的内容,决定是否发中断申请信号 。
– 如果进入的中断申请比 ISR 中记录的中断优先级高,
则通过 8259A 的 INT 引脚向 CPU发出中断请求信号;
– 如果进入的中断申请不比 ISR 中记录的中断优先级高,
同级或低级,则不向 CPU 发中断请求信号 。
① 中断申请寄存器 IRR 锁存外部的中断申请 。
若 IR0~ IR7 引脚上有中断申请,则将 IRR 相应位臵 1
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
1 0 0 1 0 1 0 0
INTR
1
1
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请是否进入优先级裁决器
PR。
IMR对应位为 0,允许中断申请进入优先级裁决器,
IMR对应位为 1,不允许进入,中断申请被 IMR屏蔽。
③ 当前中断服务寄存器 ISR 记录 CPU正在响应的中断 。
– ISR 中 的 某 位 为 1,表示 CPU 正 在 响 应 此 级 中 断,
即正在执行此中断源的中断子程;
– ISR中的某位为 0,表示 CPU没有或已响应完此级中断,
即不在执行此中断源的中断子程
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
④ 优先级裁决器 PR据新进入的中断申请和 ISR的内容,决定是否发中断申请信号 。
- 如果进入的中断申请比 ISR 中记录的中断优先级高,则通过 8259A
的 INT 引脚向 CPU发出中断请求信号;
- 如果进入的中断申请不比 ISR 中记录的中断优先级高,同级或低级,
则不向 CPU 发中断请求信号 。
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
若发中断申请信号,且 CPU响应,则在 CPU中断响应周期送出中断类型号向量类型
INTA
CLK
AD7~AD0
T1 T2 T3 T4
第 一 个中断响应周期
T1 T2 T3 T4
第 二 个中断响应周期8086CPU中断响应周期时序
CPU接收到 INTR上的中断申请信号后:
如果 IF 标志为 0,则 CPU不响应此中断申请信号,即中断申请被 IF屏蔽 。
如果 IF 标志为 1,则处理完当前的指令后,进入中断响应周期通过 INTA
引脚发出两个负脉冲信号,从数据总线上获取中断类型号,进入中断响应的过程 。
① 将 ISR 中相应位臵 1,表示 CPU 响应此级中断,执行此中断源的中断子程 。
8259A在接收到第一个 INTA中断响应信号后:
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
1 0 0 1 0 1 0 0
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
WR
INTA
INT
D0~
D7
INTR
01
② 把 IRR中对应的位清 0,清除 IRR中锁存的中断申请信号。
① 通过数据线,将被响应申请的中断类型号送给 CPU。 类型号由 ICW2提供,在初始化 8259A时已设定好 。
8259A在接收到第二个 INTA中断响应信号后:
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
OCW1 中 断 屏 蔽 寄 存 器
IMR 0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
1 0 0 1 0 1 0 0
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
WR
INTA
INT
D0~
D7
INTR
01
② CPU获得中断类型号后,进入 CPU响应中断的过程,执行中断子程,处理中断源申请的功能。
① 取中断类型号 N
② 当前 PSW的内容入栈
③ 清 IF,TF标志为 0
④ 当前 CS的内容入栈
⑤ 当前 IP的内容入栈
⑥ 取内存单元 ( 0,N × 4 )字内容送 IP 取中断子程
⑦ 取内存单元 ( 0,N × 4 + 2 )字内容送 CS 入口地址此时 CS:IP指向中断程序的入口,开始执行中断程序 。
保存现场
CPU响应中断过程:
执行完中断子程中最后一条指令 IRET后,返回被中断处,继续执行被中断的程序。
(2) 发中断结束命令 EOI
由 8259A 的工作过程可知,ISR中的内容是优先级裁决器进行裁决的重要依据,CPU响应某级中断后,8259A自动将 ISR的对应位臵 1,如果 CPU
已执行完中断子程,而 ISR中的对应位仍为 1,8259A的优先级裁决器仍会据
ISR的内容做裁决,从而会屏蔽同级的中断申请。因此,在中断响应后,对
ISR中相应位的清 0很重要,它是 8259A认为中断结束的标志。
① 自动结束方式
8259A在接收到第二个中断响应脉冲 INTA时就会自动清除 ISR中的相应位 。 该方式只能用在系统中只有一片 8259A且多个中断不会嵌套的情况下 。
② 非自动结束方式
※ 一般结束方式
8259A在接收到一般结束命令时,就会把 ISR中最高优先级位复位,结束当前正在处理的中断 。 该方式适用于 8259A工作在全嵌套方式下的情况 。
※ 特殊结束方式当 8259A工作在非全嵌套方式下,可选特殊结束方式 。 该方式下,通过命令使 8259AISR中的指定位复位,结束当前中断 。
⑶ 8086CPU如何获取中断类型号
由前面介绍知,当中断源产生中断请求后,
不论是内中断,非屏蔽中断,还是可屏蔽中断,
只要满足响应条件,在执行完当前指令后,
CPU内部硬件会自动完成响应中断的过程,共七个步骤,而第一步就是获取中断类型号 。
不同的中断源,8086CPU获取中断类型号的方法不同,一般具有以下几步:
① CPU从引脚 INTA 发中断响应信号,接口芯片接收此信号,把中断类型号准备好;同时 ISRi=1,IRRi=0。
② CPU再从引脚 INTA 发中断响应信号,接口芯片接此信号后,将中断类型号送至数据总线上;
③ 从数据总线获取中断类型号 。
④ CPU根据读取到的中断类型号寻找中断程序的入口地址 。
根据 8086CPU对中断的分类,各中断获取类型号的方法
① CPU 执行除零或 OF 为 1 执行 INTO 指令除零 固定类型号 00H
OF 为 1 执行 INTO 指令 固定类型号 04H
② 使用 DEBUG 下的单步和断点操作单步 固定类型号 01H
断点 固定类型号 03H
内中断 ③ 执行中断调用指令 INT N
由指令中给出 指令中指定类型号 N
① 非屏蔽中断引脚 NMI 上有中断申请信号 (上升沿信号)
非屏蔽中断 固定类型号 02H
外中断
② 可屏蔽中断 (参看中断响应时序图)
当 IF=1,引脚 INTR 上有中断申请信号 ( 高电平信号 )
CPU 按中断响应周期时序,从数据总线上获取中断类型号可屏蔽中断 外部接口送上类型号
8259A的编程
4个初始化命令寄存器
ICW1,ICW2
ICW3,ICW4
3个操作命令寄存器
OCW1( IMR)
OCW2,OCW3
当前中断服务寄存器 ISR
中断申请寄存器 IRR
8259A中断控制器 内部有 9
个可读写的寄存器
1 × I3 I4
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制处理部分控制部分
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
中断屏蔽寄存器 IMR
OCW2
1 0 0 1 0 1 0 0
0 0
0 1
OCW3
OCW1
8259A有两个 I/O端口地址
A0=0 偶地址端口
A0=1 奇地址端口
对 9个寄存器的读写均通过这两个端口实现
写入数据的特征位
写入的先后顺序区分是对哪个寄存器进行操作根据
1 × I3 I4
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制处理部分控制部分
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
中断屏蔽寄存器
OCW2
1 0 0 1 0 1 0 0
0 0
0 1
OCW3
OCW1
D0~
D7
A0
CS
RD
WR
8
0
1
1
1
A0
1
0
0
A0
8259A的初始化编程
8259A的初始化编程的顺序及内容
① ICW1
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 × × × ×1 LTIM SNGL IC4
② ICW2
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 T7 T6 T5 ×T4 T3 × ×
③ ICW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
1
④ ICW4
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 T7 T6 T5 ×T4 T3 × ×
8259A的操作编程
① OCW1
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 M7 M6 M5 M2M4 M3 M1 M0
② OCW2
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 R SL EOI L20 0 L1 L0
③ OCW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 0 ESMM SMM P0 1 RR RIS
向 8259A送入 D2= 0,D1D0= 10B 的 OCW3指令后,向着 8259A偶地址的读指令可读入中断请求寄存器 IRR的内容;若 D1D0= 11B,则可读入中断服务寄存器 ISR的内容 。
D7 D6 D5
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
功 能清除自动循环优先级命令发出 EOI
无操作发出 SEOI
设臵自动循环优先级命令设臵自动循环优先级并发 EOI
设臵特殊循环优先级命令设臵特殊循环优先级并发 SEOI
OCW2的 D7~ D5位的功能说明
– 通过往寄地址端口写入 IMR内容实现对应位为 0,允许该级中断申请进入对应位为 1,禁止该级中断申请进入对 8259A的奇地址的读指令可读得中断屏蔽寄存器 IMR的内容,也可 。
修改 IMR的内容 。
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设置
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
新增允许 IR2 的中断申请
IN AL,21H ;读入原 IMR的内容
AND AL,1111 1011B ;D2=0,允许 IR2的中断申请
OUT 21H,AL ;写入 IMR
禁止 IR4 的中断申请
IN AL,21H ;读入原 IMR的内容
OR AL,0001 0000B ;D4=1,禁止 IR4的中断申请
OUT 21H,AL ;写入 IMR
例 已知 IBM PC/XT系统中 8259A的奇地址端口地址为 21H
送入 8259A的 OCW3的 D2= 1时,可使 8259A进入查询工作方式 ( 非中断方式 ) 。 读取 8259A偶地址 ( A0= 0),可得到 8259A的状态字,若状态字的
D7= 1,表示 8259A的 IR7~ IR0中有中断请求发生,D2~ D0给出了最高优先级中断请求的编码;若 D7= 0,则表示没有中断请求发生 。
8259A在 PC中的基本应用从
8259A
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
主
8259A
IRQ0
IRQ1
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
INT
至 CPU
INT
中断路由器
IR
Q7
IR
Q6
IR
Q5
IR
Q4
IR
Q3
IR
Q2 ISA总线
PCI
总线
PCI
总线系统时钟键盘主,从 8259A级连的中断控制逻辑主片的端口地址,20H,21H
从片的端口地址,A0H,A1H
8259A各中断请求的功能分配情况中断申请引脚
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
中断类型号
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
70h
71h
72h
73h
74h
75h
76h
77h
哪个设备使用系统时钟 (8254)
键盘连接从 8259
COM2串口 2
COM1串口 1
保留软盘控制器
LPT1并口实时时钟 (RTC)
保留 (软件指向 0Ah类型 )
保留显卡鼠标数值协处理器硬盘控制器保留主,从 8259A的中断结束命令对主 8259A有:
MOV AL,20H ; EOI命令
OUT 20H,AL ;写主片的 OCW2
IRET
对从 8259A有:
MOV AL,20H ; EOI命令,
OUT 0A0H,AL ;写从片的 OCW2
IRET
第四节 可编程定时器 /计数器 8254及其应用微机系统实现定时功能,主要有三种方法,软件定时,不可编程硬件定时 和 可编程硬件定时 。
软件定时 是通过执行一个固定的程序段来实现定时 。 由于 CPU执行每条指令都需要一定时间,因此执行一个固定的程序段就需要一个固定的时间 。 定时或延时时间的长短可通过改变循环次数来控制 。
不可编程的硬件定 时常采用中小规模集成电路实现 。 如使用 555
定时器等,硬件定时方案不占用 CPU时间,但电路连接好后,定时值就不能改变 。
可编程硬件定时 用可编程定时器 /计数器来实现,本节主要介绍
IBM PC系列微机使用的 Intel 8254可编程定时器 /计数器 。
一,8254的内部结构和引脚功能计数器 0,1,2的内部结构
16位初值寄存器由 CPU
分两次写入
16位减 1计数器:在
CLK的作用下,对计数初值 N进行减 1,
当减为 0时,在 OUT
引脚上产生回零时间到信号
16位锁存器其值随减 1计数器改变而改变二,8254的工作方式三,8254的编程
1,方式控制字
2,计数初值( N)
定时时间 T= CLK时钟周期 tCL× 计数初值( N) N=T/tCL
三,8254在 PC中的应用
PC使用一片 8254,其 3个计数通道分别用于日时钟计时,DRAM
刷新定时和控制扬声器发声声调,
定时中断和定时刷新
MOV AL,36H ;计数器 0为方式 3,采用二进制计数,先低后高写入计数值
OUT 43H,AL ;写入方式控制字
MOV AL,0 ;计数值为 0
OUT 40H,AL ;写入低字节计数值
OUT 40H,AL ;写入高字节计数值
MOV AL,54H ;计数器工作为方式 2,采用二进制计数,只写低 8位计数值
OUT 43H,AL ;写入方式控制字
MOV AL,18 ;计数初值为 18
OUT 41H,AL ;写入计数值扬声器控制;发音频率设臵子程序,入口参数,AX=1.19318× 106÷ 发音频率
SPEAKER PROC
PUSH AX
MOV AL,0B6H ;定时器 2为方式 3,先低后高写 16位计数值
OUT 43H,AL
POP AX
OUT 42H,AL ;写入低 8位计数值
MOV AL,AH
OUT 42H,AL ;写入高 8位汁数值
RET
SPEAKER ENDP
SPEAKON PROC ;扬声器开子程序
PUSH AX
IN AL,61H ;读取 61H端口的原控制信息
OR AL,03H ; D1D0= PB1PB0= 11B,其他位不变
OUT 61H,AL ;直接控制发声
POP AX
RET
SPEAKON ENDP
SPEAKOFF PROC ;扬声器关子程序
PUSH AX
IN AL,61H
AND AL,0FCH ; D1D0= PB1PB0= 00B,其他位不变
OUT 61H,AL ;直接控制闭音
POP AX
RET
SPEAKOFF ENDP
可编程硬件延时;延时开始
MOV AH,0 ;读取日时钟功能调用 ( 附录 5)
INT 1AH
ADD DX,90 ;加 5秒 ( 5× 18= 90)
MOV BX,DX ;期望值送 BX
L1,INT 1AH ;再读日时钟
CMP BX,DX ;与期望值比较
INE L1 ;不等,则循环
…… ;相等,则延时结束
MOV CX,O
MOV DX,1952 ;延时 1.952MS= 2× 976US
MOV AH,86H
INT 15H ;功能调用返回时,定时时间到第五节 可编程并行 I/O接口芯片 8255及其应用并行传送是主机与外设之间交换信息的一种基本方式,其特点是数据的各位同时传送。 8255是一种通用可编程并行 I/O接口芯片,在 PC
中常用于传递键盘信息、扬声器信息等。
一,8255的内部结构和引脚功能二,8255的工作方式
8255A有三种工作方式,方式 0,方式 1,方式 2
1.方式 0:基本输入输出方式这种方式下,端口与外设间不需要联络信号 。 8255A的 3个端口 都可以工作在该方式下,并由控制字规定为输入或输出 。 当 8255A的端口工作在方式 0时,CPU只要用输入或输出指令就可以与外设进行数据交换 。 因此,方式 0也称为 无条件的输入 /输出方式 。
2.方式 1:选通输入输出方式这种方式下,只有 A口 和 B口 可以作为 8位的输入或输出端口,C口主要作为 A,B两个端口输入 /输出时的联络信号。且 A口和 B口无论输入或输出都有数据锁存功能。该方式下 CPU与 8255A间可以用 中断方式 或查询方式 进行信息交换。
选通输入方式端口 A和端口 B工作于方式 1的输入方式时,其引脚和时序如下选通输出方式端口 A和端口 B工作于方式 1的输出方式时,其引脚和时序如下
3.方式 2:双向选通方式方式 2是将方式 1的选通输入输出功能组合成一个双向数据端口,外设利用这个端口 既能发送数据,又能接收数据 。 8255A只有 端口 A可以工作于方式 2,端口 A工作在方式 2的引脚和时序如下:
三,8255的编程
1,方式选择控制字
2,C口按位臵位 /复位控制字
3.初始化举例例如,若规定端口 A为方式 1输出,端口 C上半部分为输出,端口 B
指定为方式 0输入,端口 C下半部分为输入,则方式选择控制字应是:
10100011B或 A3H。
若将此控制字的内容写入 8255A的控制寄存器,即完成了对 8255A
的初始化 。 初始化程序段为:
MOV DX,210H ;假设控制端口的地址为 210H
MOV AL,0A3H ;方式选择控制字
OUT DX,AL ;送到控制端口又如:要使端口 C的 PC5臵,1”,PC2臵,0”,可通过下面的程序段实现 ( 假设 8255A的控制 端口地址为 83H),
MOV AL,0BH ; PC5臵,1”
OUT 83H,AL ;送到控制端口
MOV AL,04H ; PC2臵,0”
OUT 83H,AL ;送到控制端口四,8255A的应用
1.8255A在 PC中的应用
PC使用一片 8255A管理键盘,控制扬声器和输入系统配臵开关的状态等 。 这片 8255A的端口 A,B,C和控制口的地址分别为 60H,61H,62H和
63H。
在 PC机中,8255A工作在基本输入 /输出方式 。 端口 A为方式 0输入,
用来读取键盘扫描码 。 端口 B工作于方式 0输出,PB6和 PB7控制键盘接口电路,PB0和 PB1控制扬声器发声 。 端口 C为方式 0输入,存放系统配臵开关的状态 。 这样,系统利用如下两条指令就完成了 8255A的初始化编程:
MOV AL,10011001B ; 8255A的方式控制字 99
OUT 63H,AL ;设臵端口 A和端口 C为方式 0输入,端口 B方式 0输出
80286以上的微机系统中,由其他的多功能芯片取代了 8255A的功能,
为了保证和低档微机的兼容性,系统仍使用 8255A的口地址,仍然可从
60H端口地址读取按键扫描码,可使用 PB0和 PB1来控制发声系统 。
2,8255A在简单输入输出中的应用设系统中外扩了一片 8255A和相应的实验电路,如图所示 。 要求每按一次 K键,则使发光二极管 LEDi的状态随开关 Ki的状态变化 ( Ki闭合,
LEDi亮; Ki断开,LEDi灭 ) 。 主机键盘有任意键按下结束 。
按查询方式完成该例,方式选择控制字为,10000110B,即 86H.参考程序如下:
CODE SEGMENT
ASSUME CS,CODE
MAIN,MOV AL,86H
OUT 83H,AL ;写入方式选择控制字
AGAIN,MOV AH,1
INT 16H ;键盘有键按下?
JNZ DONE ;有,转 DONE
IN AL,82H ;读 8255A C口
TEST AL,00000010B ; K键已按下 ( PC1=1)?
JZ AGAIN ;没有,重复
IN AL,81H ;读 8255A B口
NOT AL
OUT 80H,AL ;输出到 8255A 口
JMP AGAIN
DONE,MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
按中断方式完成该例,方式选择控制字为,10000110B,即 86H,INTEB
为 1,即将 PC2臵,1”,其控制字为,00000101B或 05H,参考程序如下:
CODE SEGMENT
ASSUME CS,CODE
MAIN,MOV AL,86H
OUT 83H,AL ; 写入方式选择控制字
MOV AL,05H
OUT 83H,AL ; PC2=1( INTEB=1)
MOV AX,0
MOV DS,AX
MOV BX,0AH*4
LEA AX,INTSUB ; 填充中断向量表
MOV [BX],AX
MOV AX,SEG INTSUB
MOV [BX+2],AX
IN AL,21H ; 读 8259A的 IMR
AND AL,11111011B
OUT 21H,AL ; 开放 8259A IR2的中断
STI ; 开中断
AGAIN,MOV AH,1
INT 16H ; 键盘有键按下?
JZ AGAIN ; 没有,等待
MOV AH,4CH
INT 21H ; 返回 DOS操作系统
INTSUB PROC FAR
IN AL,81H ; 读 8255A端口 B
NOT AL
OUT 80H,AL ; 输出至 8255A端口 A
MOV AL,20H
OUT 20H,AL ; 中断结束命令
IRET ; 中断返回
INTSUB ENDP
CODE ENDS
END MAIN
第七章 外设接口技术第一节 键盘接口技术第二节 CRT接口技术第四节 USB接口技术第三节 八段 LED显示器接口技术第一节 键盘接口技术一,键盘的分类
1.按应用范围分类工控机键盘,工控机键盘和主机连为一体,键盘和主机的相对位臵固定不变,也称为固定键盘 。
微机键盘,微机键盘独立于主机之外,通过一根活动电缆或无线方式与主机相连,这种键盘和主机的位臵可以在一定范围内移动调整,也称为活动式键盘 。
2.按外形分类标准键盘人体工程学键盘,在标准键盘上,将左手键区和右手键区两大板块左右分开成一定角度的扇形,用户在操作键盘时可以保持一种比较自然的形态,符合人在键盘上的操作 。
多媒体网络键盘,在普通的 104键键盘上多加了一些对多媒体和网络操作的功能键,主要用来完成一些快捷操作 。 这种键盘需要专门的驱动程序,在设臵,安装时比普通键盘麻烦 。
多功能键盘,在普通键盘的基础上又集成了其它的外部设备 。 如:
带鼠标的键盘,带手写字板的键盘,集成话筒和喇叭的键盘,
带扫描仪的键盘,集成条形读卡器的键盘,集成 USB HUB的键盘
3.按接口分类
AT接口键盘,AT接口键盘俗称,大口,键盘,键盘的插头是一个圆形 5
芯插头,插头是有方向性的 。
PS/2接口键盘,PS/2接口键盘俗称为,小口,键盘,是目前使用最普通的一种键盘 。 它的插头是 4针,在插头上有一个定位口,用来防止插错方向 。
USB接口键盘,USB接口键盘支持 USB接口热拔插功能,可在打开微机以后,
带电拔插键盘,或更换键盘 。
无线键盘,无线键盘与微机间没有直接的物理连线,可以完全脱离主机 。
无线键盘通过红外线或无线电波将输入信息传送 給 接收器 。 接收器放在主机旁,连接在 PS/2口,COM口或 USB口上 。
4.按键盘开关接触方式分类触点式按键,工艺简单,价格低廉,它是借助簧片直接使两个导体接通或断开,有着理想的开关特性 。
无触点式按键,电容式开关的特点是手感好,击键声音小,容易控制,结构简单,灵敏度高,成本低,易于小型化和批量生产 。
5.按照按键识别方式分类非编码键盘,主要用软件的方法识键和译键 。
编码键盘,主要用硬件来实现键的扫描和识别 。
二,键盘的结构和工作原理
1.键盘的结构微机键盘由 外壳,按键和电路板 三部分组成 。
键盘外壳,主要用来支撑电路板和给操作者一个方便的工作环境 。
电路板,是整个键盘的核心,它位于键盘的内部,主要由逻辑电路和控制电路组成,担任按键扫描识别,编码和传输信息的工作 。
键盘按键,可分为触点式和非触点式两种类型 。
2.键盘的工作原理非编码键盘接口
( 3) 找到被按下的键 。 从 0行开始,顺序逐行扫描,即该行输出,0”。
每扫描一行,读入列线数据,找出为,0”的列;若无,则顺序扫描下一行,并检查其各列;若找到某列线为,0”,则该列与检查行交点的按键为被按下的按键;
( 1) 识别有键按下否 。
PA的三线输出均为,0”,
读入 PB的四根输入线,只要有一线为,0”,即表明有键被按下;
( 2) 去抖动 。 延时 20ms
左右,等按键通,断引起的抖动消失,若还有键闭合,则认为按键已稳定;
( 4) 根据找到的键号,转去执行该键相应的子程序 。
下面给出按行扫描的有关子程序 。 设 8255A端 A的地址为 60H,端口 B的地址为 61H,控制寄存器的地址为 63H。
判别有无键按下的程序段如下:
MOV AL,82H ; 8255A初始化,方式 0,A口输出,B口输入
OUT 63H,AL
MOV AL,0
OUT 60H,AL ;各行线为,0”
WAIT,IN AL,61H ;读列线数据
AND AL,0FH ;屏蔽无关位
CMP AL,0FH ;列线有,0”否?
JZ WAIT ;无,等键按下检测哪个键按下的程序段如下:
BEGIN,MOV BL,3 ;行数
MOV BH,4 ;列数
MOV AL,0FEH ;起始数据,0行为,0”
MOV CL,0FH ;键盘屏蔽码
MOV CH,0FFH ;起始键号为,-1”
LOOP1,OUT 60H,AL ;扫描一行
ROL AL ;修改扫描码,准备扫描下一行
MOV AH,AL ;保存
IN AL,61H ;读列线值
AND AL,CL ;屏蔽无关位
CMP AL,CL ;有列线为,0”?
JNZ LOOP2 ;有,转去找该列线
ADD CH,BH ;否,修改键号,指向该行末列键号
MOV AL,AH ;取回扫描码
DEC BL ;行数减 1
JNZ LOOP1 ;未完转下一行
JMP BEGIN ;重新开始
LOOP2,INC CH ;键号加 1,指向本行首列键号
RCR AL ;带进位循环右移一位
JC LOOP2 ;该列非,0”,检查下一列
MOV AL,CH ;是,键号送 AL
CMP AL,0 ; 0号键按下?
JZ KEY0 ;是,转 0号键子程序
CMP AL,1 ; 1号键按下?
JZ KEY1 ;是,转 1号键子程序
.
.
.
CMP AL,0AH ; 10号键按下?
JZ KEY10 ;是,转 10号键子程序
CMP AL,0BH ; 11号键按下?
JZ KEY12 ;是,转 11号键子程序
3,PC的键盘接口
PC的键盘扫描接口单片机 8048作键盘的控制部件 。 它承担键盘扫描,去抖动,生成扫描码,检查被卡住的键等功能,可以缓冲存放 20个键扫描码 。
PC的键盘扫描控制电路
PC与键盘接口
PC的键盘接口电路第二节 CRT接口技术一,CRT显示器概述
CRT显示器的发展
CRT显示器成像原理 扫描成像原理 三原色原理二,CRT接口技术单色显示适配器 ( MDA:Monochrome Display Adapter)
字符显示的原理显示数据处理逻辑,单色显示适配器可以看成由显示数据处理逻辑和扫描控制逻辑两部分组成 。
MDA逻辑框图扫描控制逻辑彩色图形适配器 ( Color Graphics Adapter,CGA)
图形显示的原理当 CRT屏幕作图形显示时有两个特点:
① 图形的线点可以细到只有一个像素点;
② 要显示的像素点可在屏幕任意一个位臵上出现 。
CGA:CGA可以产生黑白和彩色的字符和图形 。
当 屏幕作图形显示时有两个特点:
① 图形的线点可以细到只有一个像素点;
② 要显示的像素点可在屏幕任意一个位臵上出现 。
CGA逻辑框图增强型图形适配器 ( Enhanced Graphics Adapter,EGA)
VRAM的容量有 256K字节,其结构与数据组织和 CGA大不相同 。
存放在 VRAM中的图形数据和字符点阵数据经并串转换后送到属性控制寄存器去处理,它把 VRAM中的字符电阵和图形像素值翻译成送往监视器的信息 。
视频图形阵列 ( Video Graphics Array,VGA)
VGA采用 模拟信号输出接口,使显示的颜色丰富多彩 。 它的分辨率也提高到 640× 480,并在软件上与 MDA,CGA,EGA兼容,其字符点阵有
8× 8,8× 14,8× 16,9× 16等多种,可显示 256K种颜色,可同时显示
256种色 。 除支持 EGA的所有显示方式外,还增加了 3种显示方式 。
增强型的 VGA( Super VGA)
第三节 八段 LED显示器接口技术一,LED显示器及工作原理
1.LED显示器的分类
a
b
c
d
e
f g
dp
显示 ‘ 1’,b,c 两段点亮段选开关位选开关
LED
a
b
c
d
e
f
g
dp
显示 ‘ 4’,b,c,f,g 四段点亮显示原理
2.工作原理二,LED显示器与 CPU的接口电路
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
例 1:要求 LED0显示,7,,其它 LEDi不显示任何内容段选信号
D7 D6 D5 D4 D3 D2 D1 D0
a b c d e f g dp
位选信号
/ / 5 4 3 2 1 0
0 0 0 1 1 1 1 1
0 0 0 0 0 0 0 1
段选口送 1FH
位选口送 01H
MOV AL,1FH
OUT 90H,AL
MOV AL,01H
OUT 91H,AL
a
b
c
d
e
f g
dp
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
三、显示管理程序
(1) 解决字符 → 段代码的转换问题
LED0 …… LED4 LED5
待显字符,3
0DH
SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
段代码表
(2) 多位 LED,同时”显示不同字符的问题显缓区段代码表
DISMEM 1
2
3
4
5
6
1 2 3 4 5 6SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
显示过程如下:
★建立六个待显字符的显示缓冲区
★查出第一个字符的字形码
★送段形码至段选口
★使最左一位 LED发光
★延时 1ms
★ 指向下一位 LED……
直至最后一位 LED显示完为止 已扫描一遍开始
↓
指针指向显缓区首址
↓
位选信号初始
↓
取待显数据,查表得段选码送段选口
↓
位选信号送位选口
↓
六位都显完?
↓
修改指针,修改位选信号是否例,多位 LED,同时”显示 123456,假设 LED显示器的段选口接 8255的 A口,位选口接 8255的 B口,开关 K1接 8255C口的 PC0,当 K1向上时,程序运行停止。
显缓区段代码表
DISMEM 1
2
3
4
5
6
1 2 3 4 5 6
LED5 LED0
SEGPT 0
1
2
3
4
5
6
C0H
F9H
A4H
B0H
99H
12H
82H
∶
∶
段选信号
D7 D6 D5 D4 D3 D2 D1 D0
dp g f e d c b a
a
b
c
d
e
f g
dp
程序如下,
DISMEM DB 1,2,3,4,5,6
SEGPT DB 0C0H,0F9H,0A4H,
DB 0B0H,99H,12H,82H
┇
MOV DX,20BH
MOV AL,81H
OUT DX,AL
MOV CL,20H
LEA DI,DISMEM
MOV AL,[DI]
LEA BX,SEGPT
PUSH CX
MOV CX,3000H
LOOP AGAIN
POP CX
AGAIN:
INC DI
SHR CL,1
DISP:
MOV DX,20AH
IN AL,DX
AND AL,01H
JZ NEXT
┇
NEXT:
MOV DX,208H
OUT DX,AL
INC DX
MOV AL,CL
OUT DX,AL
JNC DISP
XLAT
例:电路结构如图,要求,LED0~ LED5循环显示,3”。
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
MOV AL,0DH
OUT 90H,AL
MOV AL,20H
OUT 91H,AL
SHR AL,01H
JNC LP
MOV AL,20H
JMP LP
LP:
NOP
NOP
┇ 延时三,显示管理程序
(1) 解决字符 → 段代码的转换问题
LED0 …… LED4 LED5
待显字符,3
0DH
段代码表
SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
第四节 USB接口技术一、概述
USB 即通用串行总线 ( USB,Universal Serial Bus) 。 USB为主机与不同外设的连接提供了极大的方便,其主要优点是:
1) 完全自动检测和配臵的即插即用功能;
2) 带电热插拔操作;
3)统一的接插件,不存在连接错误。
USB是一种支持即插即用的新型,菊花链,串行接口 。它在一条,线缆,上有链接多个设备的能力。
USB要比标准串口快得多,其数据传输率可达 4M bit/s—12M bit/s,
而一般的串口最多只能是 115K bit/s。
二,USB规范
USB是一种支持即插即用的新型,菊花链,串行接口 。它在一条,线缆,上有链接多个设备的能力。
在针对 USB确定结构时,应遵照以下要求:
1)PC外设的扩展简单方便;
2)传输速率高达 12M bit/s的低成本方案;
3)完全支持语音、音频和压缩视频的实时数据处理;
4)在混合模式下进行等时( Isochronous)数据传输和异步信息发布的协议灵活性;
5)包含多个 PC配臵和外形尺寸;
6)提供一种能够迅速扩散到产品生产中的标准接口;
7)促使产生可提高 PC能力的新型设备。
USB带给用户的好处主要表现在以下几个方面:
1) 易于最终用户使用
USB提供了一种关于接线和连接器的统一模式,其中的电气细节
(例如,总线端子)与最终用户完全隔离。它还能自动识别外设。自动把功能变为驱动程序,以及自动配臵。 USB外设在系统运行过程中还可以动态连接和重新配臵。
2) 广泛的工作负载和应用领域
USB适合于识别带宽从数千 bit/s到数兆 bit/s的设备。它支持在同一套电缆上进行等时和异步传输。多连接结构允许进行多个设备的同时操作,支持多达 127个物理设备。 USB支持在主机和设备之间传输多种数据和信息流,允许使用混合型设备(例如,具有多种功能的外设),而且由于降低了协议的额外开销而提高了总线的使用效率。
3) 灵活性和鲁棒性
USB支持很大的数据包长度范围,允许多种设备缓冲的选配、多种设备数据速率和数据包尺寸。 USB协议中包括了缓冲处理的流控制。
协议中还有错误处理或故障恢复机制。能以用户可观察到的实时方式实现设备的动态接入和分离,而且可自动识别出有故障的设备。
4)多种低成本实现方案为了支持低成本外设,USB可以作为一种低成本的 1.5M bit/s的子通道来实现,它在外设和主机硬件的集成方法上进行优化,采用低成本电缆和连接器以及商用技术 。
第八章 总线第一节 概述第二节 ISA总线第三节 PCI总线微机系统大都采用总线结构 。 这种结构的特点是采用一组公共的信号线作为微机各部件间的通信线 。 这组公共信号线就称为总线 。 采用总线结构可简化系统的软,硬件设计及系统结构,使系统易于扩充和升级 。
第一节 概述一,总线的分类根据总线所处的物理位臵不同,可将总线分为如下 4类,片内总线,元件级总线,系统总线 及 外总线 。
片内总线 是集成电路芯片内部用以连接各功能单元的 信息通路 。它一般由芯片生产厂家设计,但当用户需设计符合自己要求的专用芯片时,便应掌握片内总线技术。
元件级总线(又称片总线或在板局部总线) 是印刷电路板上连接各芯片之间的 公共通路 。这种总线与芯片引脚关系密切,难以形成总线标准。
系统总线 ( 又称内总线 ) 是模块式微机机箱内的 底板总线,用以连接微机系统的各插件板,一般为 并行总线 。 例如,多处理机系统中各
CPU板之间的 通信通道,即为 系统总线 。 常用的系统总线有 ISA和 PCI
等 。
外总线 ( 又称通信总线 ) 用于微机系统与系统之间,微机系统与仪器或其他外部设备 ( 例如打印机 ) 之间的连接 。 外总线可以是并行或串行总线,其数据传输率一般比系统总线低 。 这种总线非微机专用,一般是利用电子工业其他领域已有的总线标准 。
二、总线信号线类型总线通常少则有几十条,多则有百多条信号线,大体上可分成以下几种类型:
地址总线 数据总线 控制总线电源和地线 它们决定了总线使用的电源种类及地线的分布和用法。
备用线 留给厂家和用户自行定义,作为功能扩充和用户的特殊技术要求使用。
三、总线规范总线规范一般包括如下基本内容:
① 机械结构规范,规定模块尺寸,总线插头,连接器等的规格 。
② 功能结构规范,规定总线接口引脚的定义,传输速率的设定,时序及信息格式的约定等 。
③ 电气规范,规定信号的逻辑电平,负载能力及最大额定值,动态转换时间等 。
四、总线的数据传输系统总线上的 数据传输 是在 主控模块 ( 即主控设备 ) 的控制下进行的,它一般分为如下 4个阶段:
申请阶段 当系统总线上有多个主控模块时,需要使用总线的主控模块要提出申请,由总线仲裁逻辑确定把下一个传输周期的总线使用权交给哪个模块 。 若系统总线上只有一个主控模块,就不需要这一阶段 。
寻址阶段 取得总线使用权的主控模块通总线发出本次要访问的从属模块的地址及有关命令,以启动参与本次传输的从属模块 。
数据传输阶段 主控模块和从属模块之间进行数据传输,数据由源模块发出经数据总线传到目的模块。
结束阶段 主从模块的有关信息均从系统总线上撤除,释放系统总线。
第二节 ISA总线一,PC总线
PC总线是 PC及 XT机使用的总线 。 它是 ISA总线的基础 。 目前人们在设计一些较为简单的专用接口时仍使用这种总线 。
PC总线的特点
① 由 8088CPU经 8282锁存器,8286收发器,8288总线控制器,8259中断控制器,8237DMA控制器及其他逻辑的重新驱动,组合形成的 。
② 每个双列扩展槽有 62个管脚,代表不同信号 。
③ 除了供应特殊需要的 ± 12V电源外,其他信号均与 TTL电平兼容 。
信号线 PC总线的 62条信号线分为 5类:地址线、数据线、控制线、状态线和辅助与电源线。
地址线 A0—A19( 20条) 数据线 D0—D7( 8条) 控制线( 21条)
状态线二,ISA总线
ISA总线 又称为 AT总线,它是在 PC总线基础上扩展形成,它在保持原 PC总线的 62个引脚信号不变的前提下增加了数条信号线,具有 16位数据 宽度,地址线 24条,可寻址 16MB。 工作 时钟频率为 8MHz,数据传输率最高可达 16MB/s。
ISA总线是一种 多主控总线,这一特性通过系统总线扩展槽中的
MASTER信号线实现 。 即除主 CPU外,DMA控制器,刷新控制器和带处理器的智能接口控制卡都可以成为 ISA总线的主控设备,但它只支持一个智能接口控制卡,由于它的特殊性,目前某些 PC上仍有 ISA插槽 。
ISA总线支持 8种类型的总线周期,存储器读,存储器写,I/O读,
I/O写,中断,DMA 传输,刷新和仲裁周期 。
ISA总线信号
ISA总线 是在 PC总线 的基础上 扩展一个 36线插槽 形成的 。 ISA总线由用一轴线的 基本插槽 和 扩展插槽 两段组成 。 基本插槽有 62条信号线,兼容 PC总线;扩展插槽有 36条信号线,为 ISA总线新增加的信号 。
基本插槽基本插槽的 62条信号线 的引脚排列及定义 与 PC总线基本相同,但有 3
条信号线不同,B4引脚定义为 IRQ9( PC总线为 IRQ2) ; B8引脚定义为
OWS等待状态信号 ( PC总线为 CARD SLCTD) ; B19引脚定义为 REFRESH信号 ( PC总线为 DACK0) 。
另外,ISA总线称 PC总线的 MEMR和 MEMW两条信号为 SMEMR和 SMEMW,
仍作地址线 A0—A19( ISA中称为 SA0—SA19) 寻址的 1MB内存的读 /写选通信号 。 对基本插槽而言,PC总线与 ISA总线兼容,因此,PC总线又叫 8位 ISA总线,而 PC AT总线被称为 16位 ISA总线 。
扩展插槽元件面 焊接面引脚号 信号名 说 明 引脚号 信号名 说 明
C1 SBHE 高字节允许,双向 D1 MEM CS16 存储器片选,输入
C2 LA23 D2 IS CS16 外设片选,输入
C3 LA22 D3 IRQ10
C4 LA21 D4 IRQ11
C5 LA20 高位地址,双向 D5 IRQ12 中断请求,输入
C6 LA19 D6 IRQ14
C7 LA18 D7 IRQ15
C8 LA17 D8 DACK0
C9 SMEMR 存储器读,双向 D9 DRQ0
C10 SMEMW 存储器写,双向 D10 DACK5
C11 D8 D11 DRQ5 DMA请求与响应
C12 D9 D12 DACK6 前者输入,后者输出
C13 D10 D13 DRQ6
C14 D11 数据线高字节,双向 D14 DACK7
C15 D12 D15 DRQ7
C16 D13 D16 +5V 电源
C17 D14 D17 MASTER 主控,输入
C18 D15 D18 GND 地第三节 PCI总线随着 80486,Pentium等高性能 CPU的出现,高速的 CPU和内存访问用慢速 I/O操作出现了瓶颈;多媒体对于图形和高速显示提出能快速传输大量信息的要求等,使得 ISA总线不能适应发展 。 要提高系统总线的速度,希望与微处理器同速,因而一些厂商在不改变 ISA标准的基础上为主板设计了一种特殊的高速插槽,将高速外设控制卡直接挂到 CPU局部总线上,并以 CPU的速度运行,这样便为 CPU和高速外设提供了一条高速桥梁 。 这种特殊的总线插槽称为,局部,总线插槽,主要支持高速的外部设备卡 。 对于其他慢速设备,仍可以保持原来 ISA
总线标准,这样既保证了兼容性,又解决了瓶颈问题 。
局部总线 是一种类似于 80386与 80486微处理器接口的总线,除了保持原有的向下兼容性外,还可与原有总线结构并存,构成所谓的中介式总线,如图所示 。
一,PCI总线的主要优点
PCI有 4个主要的标准,分别支持 32位与 64位,其下又细分成 3.3V与 5V
两种信号,其主要优点如下:
① 不依赖于某一具体处理器结构,它和微处理器不直接相连,而是通过 PCI桥路,因而更换微处理器的品种时,只需更换相应的桥路即可。
独立于微处理器使 PCI总线能为 I/O功能而优化,能使局部总线与处理器 /存储器子系统同时工作,并满足除图形之外的多种高性能要求。
② 自动配臵功能使用户安装接口卡时无需跳线等手工操作,资源需求设臵工作在系统初启时由 BIOS完成 。
③ 接 口 卡 短 小 。 PCI 接 口 插 槽 采 用 的 MCA( Micro Channel
Architecture) 设计方式,且不同于 VL仍保留原 ISA插槽,因此接口卡更为短小 。
④ 信号复用,部分信号有多任务能力,地址信号与数据信号共用同一条信号线,信号在不同阶段表示不同的含义 。
⑤ 兼容性好 。 PCI总线可与 ISA,VL总线等兼容 。 由于 PCI总线扩充卡的元件放臵与一般 ISA卡正好相反,这就可以使一个 PCI总线扩充卡与一个 ISA总线扩充卡共用一个位臵 ( 一个主板上可以有一个共享位臵 ) 。
由于 PCI的指标与 CPU及时钟无关,严格说来,PCI总线扩充卡是通用的,
可插到任何一个有 PCI总线的系统上去 。 不过实际上因卡上 BIOS本身与
CPU及操作系统等有关,不一定能做到如此通用 。 但至少对同一类型
CPU的系统,一般能够通用 。
⑥ 有发展前途 。 PCI总线从一开始就作为一种长期的总线标准加以制定,
它考虑到节能的绿色微机的要求,把支持 3.3V的工作电压加入到规范中 。
PCI兼容 5V和 3.3V信号环境,为保证电压平滑转换,规定了 3种扩充卡电气类型 。 一种是仅能插入 5V连接器的 5V卡;另一种是可用于 5V和 3.3V连接器的通用卡;还有一种是只能用于 3.3V连接器的 3.3V卡 。
⑦ 定义了 32位数据总线,且可扩展为 64位。
⑧ 支持无限读写突发操作,支持并发工作方式。
三,PCI总线的体系结构四,PCI总线信号定义五,PCI总线应用制定 PCI总线的目的之一是建立一种 性能 /价格比高,兼容性强,
扩充性强,能适应将来特性,并能 在多种平台和结构中应用 的 工业标准总线 。
局部总线 PCI的应用有下列特点:
① 可用于高,中,低档的台式机及便携机,服务器 。
② 工作电压兼顾到便携机的 3.3V环境及台式机有 5V转向 3V的要求 。
PCI总线中规定了这两种电压及它们之间的转换方法 。
③ PCI器件和扩充卡独立于微处理器,故在未来的处理器及多处理器系统中也能应用 。
④ PCI还定义了由 32位数据地址总线转为扩充 64位总线的方法,使总线宽度加倍,并对 32位和 64位 PCI总线外设做到向前和向后兼容 。
谢谢!
杨天怡主编实验教材:,计算机硬件技术实验教程,
黄 勤 主编第一章 微型计算机基础第一节 微型计算机的组成第二节 微型计算机的硬件结构及简单工作过程第三节 微型计算机中的先进计算机技术第四节 微型计算机的主要性能指标及典型微型计算机第一节 微型计算机的组成二,微型计算机的硬件组成一,微型计算机系统的组成硬件和软件两大部分组成
1.存储器存储器是计算机中存储程序和数据的部件。计算机的存储器分为两大部分,一部分为内部存储器或主存储器,简称内存或主存;另一部分为外部存储器或辅助存储器,简称外存或辅存。
存储容量 描述存储器存储二进制信息量多少的指标。存储二进制信息的基本单位是位( bit,b)。一般把 8个二进制位组成的通用基本单元叫作字节( Byte,B)。微型计算机中通常以字节为单位表示存储容量。
1024B为 1KB 1024KB为 1MB 1024MB为 1GB 1024GB为 1TB
存储速度 描述存储器工作快慢程度的指标,它指信息存入存储器和从存储器中取出所需要的时间。
存储的类型 半导体存储器 磁记录存储器 光盘存储器
2.微处理器微处理器是微型计算机的运算和控制指挥中心。不同的微处理器,
其性能有所不同,但基本组成是相同的,由运算器、控制器和寄存器阵列三个主要部件组成。
① 运算器执行算术运算和逻辑运算的部件,由累加器 ( Accumulator,
A),暂存器 ( Temporary,TMP),算术逻辑单元 ( Arithmatic
Logic Unit,ALU),标志寄存器 ( Flag Registers,F) 和一些逻辑电路组成 。
累加器 算术逻辑单元 标志寄存器
CF进位标志
CF= 1 运算时产生了进 /借位0 运算时无进 /借位
ZF零标志
ZF= 1 运算结果为 00 运算结果非零
SF符号标志
SF= 1 运算结果为负0 运算结果为正
AF辅助进位标志
AF= 1 运算时有辅助进 /借位0 运算时无辅助进 /借位
PF奇偶标志
PF=
1 运算结果中,1”的个数为偶数
0 运算结果中,1”的个数为奇数
OF符号标志
OF= 1 有溢出0 无溢出如:两无符号数 A,B进行比较,
=若 A- B 后有 ZF=1,则 A B
若 A- B 后有 CF=1,则 A B<
若是带符号数进行大小比较,能用 CF标志来判断?
例,A=FFH,B=01H; A- B=FEH,此时 CF=0,A> B?
对带符号数的大小判断有两种方法方法一:数值与符号分开判断方法二:数值与符号同时判断例:若 A> 0,B< 0,应有 A> B 成立
① A=100D,B=- 50D,
A- B有:
0 1 1 0 0 1 0 0 B
+ 0 0 1 1 0 0 1 0 B
1 0 0 1 0 1 1 0 B
SF = 1 A< B?
② A=15D,B=- 5D,
A- B有:
0 0 0 0 1 1 1 1 B
+ 0 0 0 0 0 1 0 1 B
0 0 0 1 0 1 0 0 B
SF = 0 A> B?
对带符号数的大小判断应先判溢出标志 OF,即
A- B 后,若 OF = 1 则 SF = 1 A > B
SF = 0 A < B
若 OF = 0 则 SF = 0 A > B
SF = 1 A < B
② 控制器控制器是指令执行部件,包括取指令,分析指令 ( 指令译码 ) 和执行指令,由指令寄存器 ( Instruction Register,IR),指令译码器 ( Instruction Decoder,ID) 和定时 控制电 路 ( Timing and
Control) 等组成 。
③ 寄存器阵列寄存器阵列主要包含两类寄存器,一是通用寄存器,供用户使用;
二是一些用途固定的专用寄存器,如程序计数器,堆栈指示器 。
程序计数器 PC 用于存放下一条要执行的指令在存储器中存放的地址。
堆栈和堆栈指示器 SP
堆栈是一块设在内存中按先进后出( First In Last Out,FILO)
原则组织的存储区域,用于存放数据。数据存入栈区称为压入( PUSH),
从栈区中取出数据称为弹出( POP)。
二,微型计算机的软件组成堆栈指示器 SP用于指示当前栈顶元素所在的位臵,无论是压栈还是弹栈总是在栈顶进行的。随着对堆栈的压入和弹出操作,
SP的值会自动变化,
N
N-1
N-K+1
N-K
┇
┇
堆栈区
( K个单元 )
SP
数据存放方式为先进后出 (FILO)
┇
3.输入输出设备输入设备 输出设备计算机的软件包含系统软件和应用软件两部分 。 系统软件是使用和管理计算机的软件,如操作系统,数据库管理系统,网络管理系统以及各种语言处理程序,系统维护程序等 。 应用软件则是用户根据自己的需要,为解决某一实际问题而编制的程序,如企业的财务管理,人事管理,
设备状态监测的数据采集与处理等 。
第二节 微型计算机的硬件结构及简单工作过程一,硬件结构微型计算机在硬件上普遍采用总线结构,总线结构使系统构成方便,并具有很好的可维护性和可扩展性。
二,总线所谓总线,就是一组用于信息公共传输的信号线,连在总线上的所有部件均能使用的公共线路,但使用必须是分时的 。 按传输信息方向,总线分为只能单方向传输信息的单向总线和可以双向传送信息的双向总线 。 按传输信息类别,总线分为传输数据信息的数据总线
( Data Bus,DB),传输地址信息的地址总线 ( Address Bus,AB )
和传输控制信息的控制总线 ( Control Bus,CB) 。
三,数据总线,地址总线,控制总线因为数据传输是双向的,故 DB是双向总线 。 DB的位数越宽,一次数据传输的信息量就越大,8位 DB一次只能传输 1个字节的数据信息,而 64位 DB则一次可以传输 8
个字节的数据信息 。
数据总线 DB
因为地址信息总是由微处理器发出,寻址存储器或外设,
故 AB为单向总线 。 AB的位数越宽,寻址的空间就越大 。 8
位微处理器的地址总线为 16位,即有 AB15~ AB0 16条地址线,寻址范围为 216=64KB;目前生产的微处理器寻址范围已达到 64GB。
CB包括微处理器向存储器发送的读选通信号 RD,写选通信号 WR,以及外设向微处理器发送的中断请求信号 NMI、
INTR等 。 控制总线的各位作用不同,且一般都是单向的 。
地址总线 AB
控制总线 CB
根据总线的组织方式,可把微型计算机的硬件结构分为单总线,面向微处理器双总线和面向存储器双总线结构 。
单总线结构的微型计算机面向微处理器的双总线结构微型计算机面向存储器的双总线结构微型计算机四、简单工作过程取指令、分析指令、执行指令以一个简单程序执行过程为例,说明计算机是怎样工作的。程序功能:
5CH+2EH,如结果无溢出,将结果存放到内存 0200H单元后停机;如有溢出,则直接停机。
程序如下:
ORG 1000H 对应机器码
1,MOV A,5CH ; B0H 5CH
2,ADD A,2EH ; 04H 2EH
3,JO 100AH ; 70H 0AH
4,MOV (0200H),A ; 10H A2H 00H 02H
5,HLT ; F4H
第三节 微型计算机中的先进计算机技术一,中断技术计算机暂停(或称为挂起)正在执行的程序转去处理随机事件,
随机事件处理完毕后,再恢复执行原来的程序的过程称为中断。
二,流水线技术流水线 ( Pipeline) 技术是一种将一条指令的执行过程分解为多个步骤,并让几条指令的不同步骤操作在时间上重叠,从而实现几条指令并行处理,提高程序运行速度的技术 。 每一个步骤均由一个独立的电路来完成,若干个完成不同操作步骤的电路组成了指令流水线 。
三,乱序执行技术所谓乱序执行 ( Out of Order Execution) 技术就是允许指令按照不同于程序中指定的顺序发送给执行部件,从而加速程序执行过程的一种最新技术 。 它本质上是按数据流驱动原理工作的 ( 传统的计算机都是按指令流驱动原理工作的 ),根据操作数是否准备好来决定一条指令是否立即执行 。 不能立即执行的指令先搁臵一边,而把能立即执行的后续指令提前执行 。
四,推测执行技术推测执行技术 ( 或称为预测执行技术 ) 是为了充分发挥流水线与并行执行技术和分支超顺序执行技术而采取的一种先进计算机技术 。
五,高速缓冲存储器技术在 32位微机中,为了加快处理速度,在 CPU与主存储器之间增设了一级或两级高速小容量存储器,称之为高速缓冲存储器 ( Cache) 。
高速缓冲存储器的存取速度比主存要快一个数量级,大体与 CPU的速度相当 。 CPU在取指令或取操作数时,首先看其是否在高速缓冲存储器中,不在时才访问主存储器 。 指令或操作数在高速缓冲存储器中时,称为,命中,,反之称为,未命中,。
CPU Cache 内 存速度相当六,虚拟存储器技术虚拟存储器技术是一种通过硬件和软件结合扩大用户可用存储空间的技术。它在内存储器和外存储器(软盘、硬盘或光盘)之间增加一些的硬件和软件,使两者形成一个有机整体。
例:设 80386 中的 Cache 为 32K
若在一程序执行到一条转移指令 JMP NEXT未命中
┇
JMP NEXT
┇
┇
NEXT,MOV A,5CH
┇
32K (Cache)
内 存
CPU 将 NEXT 以下 32K 程序复制到 Cache 中第四节 微型计算机的主要性能指标及典型微型计算机一,主要性能指标字长存储容量运算速度外设扩展能力软件配臵指计算机内部一次可以处理的二进制数码的位数。
计算机的运算速度一般用每秒钟所能执行的指令条数来表示。由于不同类型的指令的执行时间不同,因而运算速度的计算方法也不同,
指微型计算机配接各种外部设备的可能性、灵活性和适应性。
软件是计算机的重要组成部分,它配臵是否齐全,直接关系到计算机性能的好坏和效率的高低。
二,PC系列微机简介 ( 教材 P15~ P17 自学 )
三,PC486硬件特点 ( 教材 P17~ P21 自学 )
四,PC Pentium的硬件特点 ( 教材 P21~ P22 自学 )
第二章 Intel系列微处理器第一节 Intel系列微处理器概述第二节 80486微处理器的体系结构第三节 Pentium微处理器的体系结构一,8086/ 8088 微处理器
8086 是标准 16位微处理器,内外数据总线都为 16位; 8088 是准 16位微处理器,内数据总线为 16位,外数据总线为 8位 。 8086/
8088 除了外数据位数及与此相关的部分逻辑稍有不同外,内部结构和基本性能相同,指令系统完全兼容 。
在 8086/ 8088的设计中,引人了两个重要的概念:
指令流水线 存储器分段这两个概念在以后升级的 INTEL系列微处理器中一直被沿用和发展。
正是这两个概念的引入,使 8086/ 8088 与原来的 8位微处理器相比,在运行速度、处理能力和对存储空间访问等性能方面有很大提高。
第一节 Intel系列微处理器概述
8086/8088内部结构示意图总线接口单元 BIU由段寄存器 ( CS,DS,SS,ES),指令指针寄存器
( IP),内部暂存器,指令队列,地址加法器及总线控制电路组成 。 它的主要作用是 负责执行所有的,外部总线,操作,即当 EU从指令队列中取走指令时,BIU即从内存中取出后续的指令代码放入队列中;当 EU需要数据时,BIU根据 EU输出的地址,从指定的内存单元或外设中取出数据供
EU使用;当运算结束时,BIU将运算结果送给指定的内存单元或外设 。
指令队列 主要使 8086/8088的 EU和 BIU并行工作,取指令操作,分析指令操作重叠进行,从而形成了两级指令流水线结构,减少了 CPU为取指令而必须等待的时间,提高了 CPU的利用率,加快了整机运行速度,也降低了对存储器存取速度的要求 。
执行单元 EU 由通用寄存器,运算数据寄存器,算术逻辑单元 ( ALU) 及
EU控制电路组成 。 它的主要作用是 分析和执行指令,即 EU控制电路从指令队列 取出指令代码,经 译码,发出相应的控制信号;数据在 ALU中进行运算;运算过程及结果的某些特征保留在标志寄存器 ( EFLAGS) 中 。
段寄存器 为 8086/8088采用存储器分段管理提供了主要的硬件支持 。
8086/8088可寻址的存储器空间为 1MB。 通过分段管理,把 1MB的物理存储空间分成若干逻辑段,每段最大为 64KB。 段的起始单元地址叫 段基址 。
存储器的分段方式 不是唯一 的,各段之间可以 连续,分离,部分重叠和 完全重叠 。 这主要取决于对各个段寄存器的预臵内容 。 一个具体的存储单元的物理地址,可以属于一个逻辑段,也可以同属于几个逻辑段 。
8086/8088的 4个当前段分别称为,代码段,数据段,堆栈段,附加段采用存储器分段管理后,存储器地址 有 物理地址 和 逻辑地址 之分 。 CPU
访问存储器 时,地址总线 AB上送出的是 物理地址 。
编程时 则采用 逻辑地址,逻辑地址有段基址和段内偏移地址两部分组成,两者都是 16位 。
由 16位逻辑地址变换为 20位物理地址的关系如下:
物理地址 =段基址 *16+段内偏移物理地址的生成是在 BIU的地址加法器中完成的 。
物理地址生成示意图二,80286微处理器
80286是一种增强微处理器型标准 16位微处理器 。 与 8086/8088相比,
结构上的改进与性能上的提高主要体现在以下几个方面:
① 内部有执行单元 ( EU),总线单元 ( BU),指令单元 ( IU) 和地址单元 ( AU) 4个独立的部分并行操作,可实现 4级流水线 作业,使数据吞吐率大大提高 。
② 地址总线与数据总线完全分开使用 。
③ 存储空间有两种工作方式,实地址方式 和 保护虚拟地址方式 ( 保护方式 ) 。 实地址方式有 1MB的空间;保护方式有 16MB的空间 。
④ 在保护方式下,4个段寄存器装入的不再是段基址,而是指向段描述符表中某个段描述符的索引值,称为段选择符 。
总之,80286主要是增强了 多用户,多任务 系统所必须的任务转换功能,虚拟存储器管理功能和多种保护功能,不仅运算速度大为提高,而且支持多用户,多任务操作 。
三,80386/80486微处理器
80386/80486是针对多用户和多任务的应用而推出的 32位微处理器,
与 80286相比,它在结构和性能上的主要特点如下:
① 内部寄存器数量明显增加,它具有全 32位数据处理能力,还可以进行
64位的数据运算 。
② 片内存储管理部件可实现段页式存储管理,比 80286可提供更大的虚拟存储空间和物理存储空间 。
③ 比 80286新增了一种保护模式下的工作方式,即虚拟 8086方式 。
④ 80486增加到 6级指令流水线 。
⑤ 提供了 32位外部总线接口,最大数据传输速率显著提高 。
⑥ 运算速度大大加快 。
四,Pentium 微处理器
Pentium 是一种高性能的 64位微处理器,它对 80486作了下列重大的改进,
① 采用超标量体系结构,内含两条指令流水线 。
② 内臵的浮点运算部件采用超流水线技术 。
③ 增加了分支指令预测 。
④ 内臵了指令和数据两个独立的超流水线技术 。
⑤ 采用 64位外部数据总线 。
⑥ 引入了大型计算机中采用的内部错误检测,功能冗余校验和错误报告等自诊断功能 。
⑦ 进行了更多的可测性设计 。
⑧ 提供了独特的性能监察功能,以利于软,硬件产品的优化和升级 。
⑨ 提供了灵活的存储器页面管理功能 。
第二节 80486微处理器的体系结构一,80486的体系结构特点
80486是 32位高性能处理器,它以提高性能和面向多处理器系统结构为主要目标,它具有如下的特点,
① 80486采用的是单倍的时钟频率,即在 80486CPU的 CLK端输入的外部时钟频率就是其内部处理器的工作时钟频率 。
② 内部包含有 8K字节的指令 /数据合用型高速缓存器 。
③ 内部包含了相当于增强型 80387功能的浮点协处理器 。
④ 对使用频率较高的基本指令,由原来的微代码控制改为硬件逻辑直接控制,并在指令执行单元采用了 RISC技术和流水线技术 。
⑤ 采用了突发式总线传输方式 。
⑥ 内部数据总线的宽度有 32位,64位等多种,并分别用于不同单元之间的数据通路
⑦ 对某些内部寄存器中部分位的内容进行了变动和增加 。
⑧ 面向多处理器结构,在总线接口部件上增加了总线监视功能,增加了支持多机操作的指令 。
二,80486的内部结构与内部寄存器
1,内部结构
① 总线接口单元主要用于外部地址,数据和控制总线管理,完成预取指令,读 /写数据等总线操作 。
② 指令预取单元内含一个 32字节的指令预取队列,当指令预取队列不满且总线空闲时,指令预取单元通过总线接口单元从存储器读取指令放到队列中 。
指令预取单元平均可以预取 10条指令 。
③ 指令译码单元从指令预取队列中读取指令,进行预译码后将其送入已译码的指令队列等待执行 。 如果预译码时发现是转移或调用指令,可提前通知总线接口部件去新的目标地址取指令,以刷新指令预取队列 。
④ 指令执行单元完成各种算术逻辑运算和变址地址生成 。 在控制单元中,大多数指令采用微程序控制结构执行,常用基本指令采用硬件逻辑控制执行 。
⑤ 段管理单元用于存储器分段管理,将逻辑地址变换为 32位线性地址 。
⑥ 页管理单元用于进行存储器分页管理,将线性地址变换为 32位物理地址 。
⑦ 高速缓存单元
⑧ 浮点运算单元用于加速指令 /数据的访问过程 。
相当于一个增强型浮点协处理器 80387,专门用作浮点运算,可与
ALU的整数运算并行进行 。
80486的流水线工作示意图
2.内部寄存器
1) 基本寄存器
① 通用寄存器
② 指令指针寄存器 ( EIP)
有 8个 32位的 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP;它们的低 16位可以单独访问被命名为,AX,BX,CX,DX,SI,DI,BP,SP。 其中 AX,BX,CX,DX还可以分别分成两个 8位寄存器,AH,AL,BH,BL,CH、
CL,DH,DL。
EIP用于保存下一条待预取指令相对于代码段基址的偏移量 。 它的低 16位可以单独访问,称之为 IP
③ 标志寄存器 ( EFLAGS),
32位标志寄存器 ( EFLAGS) 中包含三种标志,状态标志 ( S),控制标志 ( C) 和 系统标志 ( X) 。
④ 段寄存器,
状态标志 ( S),反映指令执行过程及结果的状态 。
控制标志 ( C),它仅含一个标志 DF,用于控制串操作指令的地址改变方向 。
系统标志 ( X),它用于控制 I/O,屏蔽中断,调试,任务转换和控制保护方式与虚拟 8086方式间的转换 。
80486有 6个段寄存器 ( CS,SS,DS,ES,FS,GS),用于决定程序使用存储器区域块 。 其中 CS指明 当前的代码段 ; SS指明 当前的堆栈段 ; DS、
ES,FS和 GS指明当前的 4个 数据段 。
在保护方式下,80486段的长度可以在 1字节到 4G字节 之间变化;而在实地址方式下,段的长度最大为 64KB。
基本寄存器示意图
2)系统级寄存器系统级寄存器包括 4个 控制寄存器 和 4个 系统地址寄存器 。 这些寄存器只能由在特权级 0上运行的程序访问 。
4个控制寄存器的 作用是存放全局特性的机器状态,控制片内 Cache、
FPU和分段,分页单元的工作 。 各个控制寄存器都是 32位 。
① 控制寄存器
② 系统地址寄存器系统地址寄存器只在 保护方式 下使用,所以又叫保护方式寄存器 。
80486用 4个寄存器把在保护方式下常用的数据基地址,界限和其他属性保存起来,以确保其快速性 。
全局描述符表寄存器 ( GDTR) 和 局部描述符表寄存器 ( LDTR) 分别用来存放前述的 GDT和 LDT的 32位线性基地址等内容 。
中断描述符表寄存器 ( IDTR) 用来存放中断描述符表的基址和界限 。
任务寄存器 TR用来存放任务状态段 ( TTS) 的基址,界限和其它属性 。
③ 调试和测试寄存器
80486提供了 8个 32位的可编程寄存器来支持调试功能 。 它还定义了 5
个 测试寄存器,测试寄存器实际上并不是 80486体系结构的标准部分,只是为了增强系统的可测性而引入的附加硬件 。
④ 浮点寄存器
13个浮点寄存器,8个 80位浮点数据寄存器 用作固定寄存器组或硬件堆栈,1个 16位标记字寄存器 用来标记每个数据寄存器的内容,1个
16位控制寄存器 用于提供 FPU的若干处理选择项,1个 16位状态寄存器用于反映 FPU的总状态,2个 48位的指令,数据指针寄存器 的作用是为用户编写错误处理程序提供指令,数据指针 。
80486的 FPU中包含有:
三,80486的三种工作方式及相互转换
( 1) 实地址方式:
它的工作原理与 8086基本相同,主要区别是 80486能借助操作数长度前缀,处理 32位数据,且增加了两个数据段寄存器 FS和 GS,提高了运行速度 。
( 2) 保护虚地址方式:
( 3) 虚拟 8086方式:
它引入了虚拟存储器的概念 。 CPU可访问的物理存储空间为 4GB,程序可用的虚拟地址空间为 64TB。 段的长度在启动页功能时是 4GB,不启动页功能时是 1MB。 可支持多用户和单用户的多任务操作,并对各任务提供了多方面的保护机制 。
它是一种既有保护功能又能执行 8086代码的工作方式,可以说是保护方式的一种子方式 。 工作原理与保护虚拟地址方式下相同,但是程序指定的逻辑地址解释与 8086相同,即可以和实地址方式下一样执行 8086
的应用程序 。
80486的三种工作方式和相互转换示意图四,80486的 外部引脚信号第三节 Pentium 微处理器的体系结构一,Pentium 微处理器的内部结构
Pentium 微处理器的内部结构
Pentium微处理器是 Intel公司继 80486之后推出的 64位高性能微处理器,它具有 超标量体系结构,分支预测先进技术的采用,分开的指令,数据高速缓冲存储器,以及 128位,256位内部数据总线,64位可成组传送的外部总线 等特点 。
Pentium微处理器由 总线部件,代码 Cache,指令 Cache,预取缓冲存储器,指令译码部件,整数运算部件,浮点运算 部件等功能部件组成 。
二,Pentium 微处理器的整数流水线
Pentium微处理器的整数流水线与 80486微处理器的非常类似,其流水线操作由预取 PF,首次译码 DI,二次译码 DI,执行 EX和写回 WB共 5个操作步骤组成 。
它在流水线中增加了一些辅助性硬件以加速指令的执行 。
( 1) 超标量执行
Pentium微处理器配臵的超标量执行机构允许两条指令以并行方式执行 。 采用的技术是把生成地址的硬件和算术运算逻辑运算部件配臵成两个各自独立的整数流水线,一个叫 U流水线,另一个叫 V流水线 。
Pentium微处理器的片内 Cache是分离式的 Cache,即 指令代码
Cache和 数据 Cache是各自独立的片内 Cache。 当执行部件对存储器进行访问时,由指令 Cache和数据 Cache分别提供指令代码信息和数据信息 。
总线接口部件内包括了各自独立的 32位地址总线和 64位数据总线 。
Pentium微处理器的预取缓冲部件内包括了 指令预取 和 指令译码 两个子功能部件 。
Pentium微处理器采用了 预测新技术 。 为了支持这项新技术,芯片内装备有 两个预取缓冲存储器,一个是以线性方式来预取代码,另一个则根据转移目标缓冲存储器 BTB预取代码 。
( 2) 转移预测判断三,Pentium 微处理器的浮点流水线
( 1) 浮点流水线操作
( 2) 浮点流水线微体系结构
Pentium浮点流水线由预取 PF,首次译码 D1,二次译码 D2,取操作数,
首次执行 X1,二次执行 X2,写浮点数 WF和出错报告 ER共 8个操作步骤组成 。
其中预取 PF和首次译码 Dl这两个操作步骤与整数流水线中的前两个操作步骤公用同一硬件资源 。
对,基本,浮点指令来说,也允许单周期通过,也就是说能以每个时钟执行一条指令的速率执行 。
Pentium微处理器的浮点流水线由浮点接口,寄存器组及控制部件
FIRC,浮点指数功能部件 FEXP,浮点乘法部件 FMUL,浮点加法部件 FADD、
浮点除法部件 FDIV以及浮点舍入处理部件 PFRND共 7个部件组成 。
四,Pentium 微处理器的片内 Cache
Pentium采用了代码和数据各自独立的分离式 Cache 。 每一种 Cache
的规模大小均为 8K字节,采用的是二路相联的映像技术,每个 Cache行大小为 32个字节 。 在每一个 Cache内,都装备有一个专用的转换旁视缓冲存储器 TLB,用来快速地将线性地址转换成物理地址 。
它遵循 MESI协议,既可以将数据 Cache根据写回方案进行配臵,也可以将数据 Cache根据逐行写贯穿方案进行配臵 。 数据 Cache的标记是三端口式的结构,以支持两个数据的传送和所访问的周期是在同一时钟周期之内 。
指令代码 Cache是一个固有的写保护 Cache,指令代码 Cache的标记是三端口式的结构,以便对 Cache操作实施监视和对分割行的访问提供支持 。
Pentium的数据 Cache支持 U流水线和 V流水线的二元访问,以便支持辅助带宽和简化编译程序的指令调度算法 。
五,Pentium 微处理器的新型体系结构
Pentium微处理机把数据总线增至 64位,以改善数据的传送速率,同时支持成组读周期和成组写回周期,除此之外,Pentium微处理器还增设了总线周期流水线,它允许两个总线周期同时进行 。 Pentium存储管理部件还拥有可选择的体系结构,允许页的大小达到 4M字节
Pentium微处理器增加了对有效数据的完整性检测和对错误的检测能力,
对逐字节数据奇偶校验仍提供支持 。 随着新异常事故,机器校验异常事故的出现,Pentium微处理器还增加了地址奇偶校验,内部奇偶校验 。 除此之外,在 Pentium微处理机上还实现了功能性冗余校验 。
Pentium微处理器内的译码部件的作用是把预取到预取缓冲器中的指令进行译码,以供 Pentium微处理器执行 。 在 Pentium微处理器控制 ROM内保存着指令的微代码,Pentium微处理器就是利用这些微代码控制各种指令的操作顺序 。 控制 ROM部件对 V和 U两条指令流水线直接实施控制功能 。
第三章 80486微处理器指令系统第一节 80486微处理器寻址方式第二节 80486微处理器指令系统第一节 80486微处理器的寻址方式一、操作数寻址方式要使微处理器能够完成指令规定的操作,则指令中须包含 2种信息,一是执行什么操作,二是该操作所涉及的数据在哪里和结果存于何处,而 寻找操作数所在地址 的方法即为 寻址方式 (Addressing
Mode)。 80X86的寻址方式可分为两类,操作数的寻址方式 和 转移地址的寻址方式 。
由于 操作数 作为指令的操作对象,可以存储在存储器中 (称为存储器操作数),寄存在寄存器中 (称为寄存器操作数)或 直接包含在指令中 (称为立即数),因此,与之对应有多种寻址方式。 80X86粗略地划分可有 3类 10种寻址方式,其中访问存储器操作数有 8种寻址方式。
( 1)立即数寻址在这种寻址的方式下,操作数作为立即数直接存在指令中,可为
8位,16位和 32位。
例,MOV AX,1234H
MOV BL,78H
MOV ECX,12345678H
以第一条指令为例的立即数寻址方式的执行过程如图。 立即寻址示意图( 2)寄存器寻址在这种方式下,操作数存放在 CPU某个 8位,16位或 32 位寄存器中。
例,MOV EAX,EDX
INC CL
MOV DS,AX
该寻址方式指令码短,且无需从存储器取操作数,故执行速度快
( 3)直接寻址在这种方式下,指令中的操作数部分直接给出了操作数的有效地址 EA,它和操作码一起放在存储器的代码段中,可以是 16位或 32位整数。但操作数一般在数据段 DS中。
例,MOV AX,DS,[1000H];将 DS段中 1000H和 1001H单元的内容送到 AX中。
应注意的是,指令中的 DS不能省略。
直接寻址示意图
( 4)寄存器间接寻址这种寻址方式下,操作数所在内存单元的 EA由规定的寄存器指出。
如果操作数不在上述规定的默认段,而是在其他的段,则必须在指令中相应的操作数前加上段超越前缀。例如:
MOV AX,ES,[SI]
MOV AX,DS,[BP]
● 16位寻址时,EA可以由 SI,DI,BP或 BX提供。
若以 SI,DI,BX间接寻址,则默认操作数在 DS段中。
若以 BP间接寻址,则默认操作数在 SS段中。
● 32位寻址时,8个 32位通用寄存器均可作间址寄存器。除 ESP,
EBP默认段寄存器为 SS外,其余 6个通用寄存器均默认段寄存器为 DS。
( 5)寄存器相对寻址方式在这种方式中,操作数所在内存单元的有效地址为规定的基址寄存器或变址寄存器的内容与一个常量(即位移量)之和。
l ● 16位寻址时,BX和 BP作为基址寄存器,BX默认 DS为段寄存器,BP默认 SS为段寄存器; SI和 DI作为变址寄存器,默认 DS为段寄存器 。 位移量可以为 8位或 16位 。
● 32位寻址时,8个 32位通用寄存器均可作基址 /变址寄存器,其中 ESP、
EBP以 SS为默认段寄存器,其余 6个通用寄存器均以 DS为默认段寄存器 。 位移量可以为 8位或 32位 。
例如:
MOV EAX,[BX+24] ;也可以写成 MOV EAX,24[BX]
MOV DX,[EAX+1500];也可以写成 MOV DX,1500[EAX]
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 / 变址寄存器 + 位移量 ]
或,段寄存器:位移量 [ 基址寄存器 / 变址寄存器 ]
( 6)基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 + 变址寄存器 ]
在这种方式中,基址寄存器和变址寄存器都必须是规定的 16位寄存器。
当基址寄存器和变址寄存器默认的段寄存器不同时,一般规定由基址寄存器来决定默认哪一个段寄存器作段基址指针。
( 7)相对基址变址寻址方式该方式中,操作数所在内存单元的有效地址是一个基址寄存器与一个变址寄存器的内容和一个常量(即位移量)之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 / 变址寄存器 + 位移量 ]
或,段寄存器:位移量 [ 基址寄存器 / 变址寄存器 ]
或,段寄存器:位移量 [ 基址寄存器 ][ 变址寄存器 ]
这种寻址方式主要用于二维数组操作和二重循环等。
( 8)比例变址寻址方式这种寻址方式只适合于 32位寻址的一种情况。
MOV EAX TABLE[ESI*4] ; TABLE是位移量,4是比例因子操作数的 EA是变址寄存器的内容乘以指令中指定的比例因子再加上位移量之和。
在指令格式中,地址表达式写成:
段寄存器,[变址寄存器 × 比例因子 + 位移量 ]
或:段寄存器:位移量 [变址寄存器 × 比例因子 ]
其中比例因子可以是 1,2,4,8中的任一个数。除 ESP外的任何通用寄存器均可作变址寄存器,且 EBP默认 SS作段寄存器,其余以 DS作段寄存器。
该方式适用于对一维数组的数组元素进行检索操作。位移量表示数组起始地址的偏移量,变址表示数组元素的下标,可变。当数组元素大小为 2,
4,8时,用带比例因子的变址寻址方式更方便、更高效。
( 9)基址比例变址寻址方式操作数的 EA是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和。
在指令格式中,地址表达式写成:
段寄存器,[变址寄存器 × 比例因子 + 基址寄存器 ]
或:段寄存器,[ 基址寄存器 ][变址寄存器 × 比例因子 ]
( 10)相对基址比例变址寻址方式操作数的 EA是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和。
在指令格式中,地址表达式写成:
段寄存器,[ 基址寄存器 + 比例因子 × 变址寄存器 + 位移量 ]
或:段寄存器:位移量 [ 基址寄存器 + 比例因子 × 变址寄存器 ]
或:段寄存器:位移量 [ 基址寄存器 ][ 比例因子 × 变址寄存器 ]
访存操作类型 默认段寄存器允许超越的段寄存器偏移地址寄存器取指令代码 CS 无 (E)IP
堆栈操作 SS 无 (E)SP
源串数据访问 DS CS,SS,ES FS,GS (E)SI
目的串数据访问 ES 无 (E)DI
通用数据访问 DS CS,SS,ES,FS,GS 偏移地址以( E) BP、( E) SP
间接寻址的指令
SS CS,DS,ES,FS,GS 偏移地址存储器寻址时的段约定二、转移地址寻址方式在指令系统中,有一组指令为 程序转移指令 。程序转移指令的寻址方式涉及如何 确定转移的目标地址 。目标地址可以在段内,也可以在段外。
⑴ 段内直接寻址转移的目标地址是当前 IP寄存器 的内容和一个 8位或 16位 位移量之和 。
指令的汇编语言格式表示为:
JMP NEAR PTR PROGRM
JMP SHORT OUTSET
⑵ 段内间接寻址该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的内容将用来取代 IP寄存器的值。
段内间接寻址转移指令的汇编格式可以表示为:
JMP CX
JMP WORD PTR [BX+TAB1]
⑶ 段间直接寻址这种寻址方式用于段间转移,指令中直接 提供了目标地址 的 段基址 和 偏移地址,所以,只要用 指令中 指定的 偏移地址取代 IP寄存器 的内容,用 指令中 指定的 段基址取代 CS寄存器 的内容就完成了从一个段到另一个段的转移操作,
指令的汇编语言格式可表示为:
JMP FAR PTR NEXT
⑷ 段间间接寻址该方式下,用存储器中 两个相继字的内容 来 取代 IP和 CS寄存器 中的 原始 内容,以达到 段间转移 的目的。这里,存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。
指令的汇编语言格式可表示为:
JMP DWORD PTR [REL+BX]
第二节 80486微处理器指令系统
80X86的指令系统向上兼容,都是在 8086指令的基础上发展形成的 。 与 80286相比,增加了 32位操作和访问存储器的 32位寻址方式 。
80486可以工作在实模式,保护模式和虚拟 86模式,为了支持系统工作模式,指令系统中设计了系统管理指令,保护模式控制指令以及高级语言支持指令等等 。
80486的基本指令 按功能可分为 7类,数据传送指令,算术运算指令,逻辑运算指令,字符串操作指令,控制转移指令,处理器控制指令和按条件设臵字节指令 。 下面分别给予介绍 。
一,数据传送指令
1) 通用数据传送指令:
基本传送指令 ( MOV)
格式,MOV 目标操作数,源操作数例如,MOV BYTE PTR [BX],55H ; 55H送给 BX间址的字节型单元
MOV [BX],55H ; 0055H送给 BX间址的字型单元符号扩展传送指令 MOVSX
格式,MOVSX 目标操作数,源操作数例如,MOV DL,-16 ; DL= F0H
MOVSX BX,DL ; BX = FFF0H,而 DH,DL不变零扩展传送指令 MOVZX
格式,MOVZX 目标操作数,源操作数例如,MOVZX EAX,CX ;将 CX中 16位数高位加 0扩展为 32位送入 EAX
MOVSX和 MOVZX这两条指令常被用于作除法时对被除数位数的扩展 。
交换指令 XCHG
格式,XCHG 目标操作数,源操作数地址传送指令
※ LEA传送指令格式,LEA 目标操作数,源操作数例如,TABLE DB 31H,32H,33H,34H
…
LEA DI,TABLE等效于 MOV DI,OFFSET TABLE
※ 指针传送指令格式,LDS/LES/LFS/LGS/LSS 目标操作数,源操作数例如:设数据段有 XYZ1 DF 1234567890ABH
XYZ2 DD 56781234H
如此时 DS已指向数据段:
LES EBX,XYZ1 ; ES=1234H,EBX=567890ABH
LDS SI,XYZ2 ; DS=5678H,SI=1234H
查表转换指令 XLAT
例如:利用查表转换功能实现一位十六进制数与 ASCII码的转换 。
DATA SEGMENT
TAB DB ‘0123456789ABCDEF’
NUM DB? ; 0~ F中的任一数
DATA ENDS
代码段设臵如下指令,可查出与 NUM单元中的数相对应的 ASCII编码:
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TAB
MOV AL,NUM
XLAT
字节交换指令 BSWAP
格式,BSWAP 32位寄存器标志寄存器传送指令 LAHF/SAHF
格式,LAHF 或 SAHF
2) 堆栈指令压栈指令 PUSH
格式,PUSH 源操作数弹栈指令 POP
格式,POP 目标操作数
16位标志寄存器压栈 /弹栈指令 PUSHF/POPF
格式,PUSHF
POPF
32位标志寄存器压栈 /弹栈指令 PUSHFD/POPFD
格式,PUSHFD
POPFD
全部 16位通用寄存器压栈 /弹栈指令 PUSHA/POPA
格式,PUSHA
POPA
全部 32位通用寄存器压栈 /弹栈指令 PUSHAD/POPAD
格式,PUSHAD
POPAD
3) I/O指令直接寻址的 I/ O指令格式,IN AL/AX,PORT
OUT PORT,AL/AX
DX间址的 I/ O指令格式,IN AL/AX/EAX,DX
OUT DX,AL/AX/EAX
说明:
① 源操作数可以是 8位,16位或 32位的立即数,寄存器,段寄存器或存储器操作数,目标操作数是与源操作数等长的寄存器,段寄存器 ( CS除外 )
或存储器操作数 。
② 源操作数和目标操作数不能同时为存储器操作数 。 如,MOV [BP],
[SI]是非法指令 。
③ 源操作数和目标操作数不能同在段寄存器中,如,MOV DS,ES是非法指令 。
④ 立即数不能作为目标操作数 。 如,MOV 1234H,AX是非法指令 。
⑤ 不能将立即数直接传送到段寄存器,如,MOV SS,1000H 是非法指令 。
⑥ 当目标操作数为非直接寻址的存储器操作数时,如源操作数是单字节的立即数,则应用 PTR运算符说明目标操作数的属性,否则将被默认为字型操作数 。
二,算术运算指令
1) 基本四则运算加法指令 ADD/带进位加法指令 ADC
格式,ADD 目标操作数,源操作数;目标操作数 = 源操作数 + 目标操作数格式,ADC 目标操作数,源操作数;目标操作数 = 源操作数 + 目标操作数+ CF
减法指令 SUB/带借位减法指令 SBB
格式,SUB 目标操作数,源操作数;目标操作数 = 源操作数- 目标操作数格式,SBB 目标操作数,源操作数;目标操作数 = 源操作数- 目标操作数- CF
加 1指令 INC/减 1指令 DEC/求补指令 NEG
格式,INC 目标操作数 ;目标操作数 = 目标操作数 + 1
DEC 目标操作数 ;目标操作数 = 目标操作数 – 1。
求补指令 NEG
格式,NEG 目标操作数 ;目标操作数 = 0 – 目标操作数交换加法指令 XADD
格式,XADD 目标操作数,源操作数; 将源操作数和目标操作数进行互换,然后将源操作数与目标操作数之和送给目标操作数 。 指令执行后的源操作数是指令执行前的目标操作数 。
比较指令 CMP
格式,CMP 目标操作数,源操作数 ;目标操作数 - 源操作数比较并交换指令 CMPXCHG
格式,CMPXCHG 目标操作数,源操作数; 将目标操作数与累加器 AL,AX或 EAX比较,若相等则将源操作数传送到目标操作数,否则将目标操作数传送到累加器 。
无符号数乘法指令 MUL/带符号数乘法指令 IMUL
格式,IMUL 源操作数 ;EAX/AX←AL /AX× 源操作数
IMUL 目标操作数,源操作数;目标操作数 ← 目标操作数 × 源操作数
IMUL 目标操作数,源操作数,立即数;在三操作数格式下,目标操作数只能是 16或 32位的通用寄存器,
源操作数是与目标操作数等长的寄存器操作数或内存操作数,立即数也与它们等长 。 8位立即数能自动进行符号扩展,转换成 16或 32位的立即数 。
无符号数除法 DIV/带符号数除法 IDIV
格式,DIV 源操作数 ; AX/DX:AX/EDX:EAX÷ 源操作数;商,AL/AX/EAX,余数,DL/DX/EDX
IDIV 源操作数 ; 被除数和除数都是带符号数,;商和余数的符号相同 。
说明,若除数为 0或商过大 ( 超过保存商的累加器容量 ) 时,产生 0号中断符号位扩展 ( 数据宽度变换 ) 指令 CBW,CWD,CWDE,CDQ
格式,CBW/CWD/CWDE/CDQ
说明,① CBW将 AL中的 8位带符号数带符号扩展为 16位 → AX中 。
② CWD将 AX中的 16位带符号数带符号扩展为 32位 → DX:AX中 。
③ CWDE将 AX中的 16位带符号数带符号扩展为 32位 → EAX中 。
④ CDQ将 EAX中的 32位带符号数带符号扩展为 64位 → EDX:EAX中 。
2) 十进制调整指令格式,DAA ;组合 BCD码数的加法调整指令
DAS ;组合 BCD码数的减法调整指令
AAA ;分离 BCD码数的加法调整指令
AAS ;分离 BCD码数的减法调整指令
AAM ;分离 BCD码数的乘法调整指令
AAD ;分离 BCD码数的除法调整指令例如,MOV AL,08H
ADD AL,09H
DAA
结果,AL = 17D
三,逻辑运算指令和移位指令
1) 逻辑运算指令逻辑与 /或 /异或指令 AND/OR/XOR
格式,AND/OR/XOR 目标操作数,源操作数测试指令 TEST
格式,TEST 目标操作数,源操作数逻辑非指令 NOT
格式,NOT 操作数例如,
要求屏蔽 0,1两位,可用 AND指令并设臵常数 0FCH
MOV AL,0BFH
AND AL,0FH ;结果 AL=0BCH
要求第 5位臵 1,可用 OR指令
MOV AL,43H
AND AL,20H ;结果 AL=63H
算术 /逻辑右移指令 SAR/SHR
格式,SAR/SHR 操作数,移位次数
CF CFMSB LSB LSBMSB操作数 操作数
0
2) 移位指令算术 /逻辑左移指令 SAL/SHL
格式,SAL/SHL 操作数,移位次数
CF MSB LSB
0
操作数循环移位指令 ROL/ROR/RCL/RCR
格式,ROL/ROR/RCL/RCR 操作数,移位次数
CF CFMSB MSBLSB LSB操作数 操作数
ROR RCR
CF CF MSBLSB LSB操作数 操作数
ROL RCL
MSB
双精度左移 /右移指令 SHLD/SHRD
格式,SHLD/SHRD 目标操作数,源操作数,移位次数
CF
CF
目标操作数目标操作数源操作数源操作数
31 31
3131
0 0
0 0
例如:
AX=0012H,BX=0034H,将两寄存器的低 8位组合形成 AX=1234H
MOV CL,8
ROL AX,CL
ADD AX,BX
说明:
① 80486的移位次数不能大于 31。 8086用立即数作移位次数时只能是 1,但用 CL作移位次数时可移位 255次 。
② 左移指令常用于实现乘以 2n的操作,右移指令常用于实现除以 2n的操作 。
③ 操作数可以是 8位,16位或 32位的寄存器或存储器操作数,移位次数可以用立即数或 CL寄存器的内容指明 。
3) 位测试指令与位扫描指令位测试指令格式,BT 目标操作数,源操作数; 测试指定的位并将它拷贝至进位标志位 CF
BTS 标操作数,源操作数;测试指定的位并将它拷贝至进位标志位 CF,再将该位臵 1
BTR 目标操作数,源操作数;测试指定的位并将它拷贝至进位标志位 CF,再将该位清 0
BTC 目标操作数,源操作数; 测试指定的位并将它拷贝至进位标志位 CF,再将该位取反向前位扫描指令 BSF
格式,BSF 目标操作数,源操作数;对源操作数所指定的字或双字从右向左进行扫描,
找出第一个是,1”的位,把此位的下标放在目标操作数中 。
向后位扫描指令 BSR
格式,BSR 目标操作数,源操作数; 对源操作数所指定的字或双字从左向右进行扫描,
找出第一个是,1”的位,把此位的下标放在目标操作数中。
四,字符串操作指令
1) 串传送指令
MOVS/MOVSB/MOVSW/MOVSD
格式,MOVS 目标操作数,源操作数; 把由 DS:[SI]( 或 [ESI]) 指向的字节,字或双字存储单元的内容复制到由 ES:[DI]( 或 [EDI]) 指向的存储单元中去 。
2) 取串指令
LODS/LODSB/LODSW/LODSD
格式,LODS 源操作数;将 DS:[SI]( 或 [ESI]) 指向的存储单元中内容取到累加器 AL,
AX或 EAX中 。
3) 存串指令
STOS/STOSB/STOSW/STOSD
格式,STOS 目标操作数;把累加器 AL,AX或 EAX的内容存到由 ES:[DI]( 或 [EDI])
指向的字节,字或双字存储单元中 。
4) 串比较指令
CMPS/CMPSB/CMPSW/CMPSD
格式,CMPS 目标操作数,源操作数;将 DS:[SI]( 或 [ESI]) 指向的字节或字存储单元的内容与由 ES:[DI]
(或 [EDI])指向的存储单元的内容相比较 (相减 ),比较结果不保存 。
5) 串搜索指令
SCAS/SCASB/SCASW/SCASD
格式,SCAS 目标操作数;将累加器 AL,AX或 EAX中的内容与由 ES:[DI]( 或 [EDI]) 指向的字节或字存储单元的内容相比较 ( 相减 ),比较结果不保存 。
6) 从端口输入字符串指令
INSB/INSW/INSD
格式,INSB;从 DX指定的端口输入一个字节,字或双字元素传送到 ES:[EDI]
所指定的存储单元,同时自动修改目的指针 。
7) 向端口输出字符串
OUTSB/OUTSW/OUTSD
格式,OUTSB;把 DS:[ESI]所指定的存储单元中的字节,字或双字传送给
DX指定的端口 。
8) 重复前缀 REP
格式,REP MOVS
REP STOS
REP OUTS
REP INS;只要 CX( ECX) 寄存器中的内容不为 0,就重复执行 REP后的串操作指令 。
9) 条件重复前缀
REPE/REPZ/REPNE/REPNZ
格式,REPE/REPZ CMPS
REPE/REPZ SCAS
REPNE/REPNZ CMPS
REPNE/REPNZ SCAS
① REPE/REPZ当零标志位 ZF = 1且 CX( ECX) 的内容不为 0时,重复执行它后面的串操作 。
② REPNE/REPNZ当零标志位 ZF = 0且 CX( ECX) 的内容不为 0时,重复执行它后面的串操作 。
例如:将数据段中长度为 17的字符串 MESS1 转送到附加段 MESS2 开始的地址位臵 。 设数据段和附加段的起始地址为 DATA。
…
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,MESS1
LEA DI,MESS2
MOV CX,17
CLD
REP MOVSB
…
五、控制转移指令
1)无条件转移指令 JMP
格式,JMP 目标操作数
● 根据目标地址相对于转移指令执行的当前位臵的转移方式可以分为 3种
① 短转移( SHORT),在段内的短距离( -128~ 127)转移。
② 段内转移( NEAR):目标地址与转移指令都在同一段内。
③ 段间转移( FAR),目标地址与转移指令分别位于不同的段内,转移时 CS和 IP( EIP)中的值都要发生改变。
● JMP指令的三种寻址方式
① 直接寻址:在指令中直接给出转移目标的地址标号,可以实现段内和段间转移。
② 寄存器间接寻址:目标操作数是某一寄存器,在寄存器中存放转移的目标地址,只能实现段内转移。
③ 存储器间接寻址:目标操作数是存储器操作数,在内存单元中存放转移的目标地址,可以实现段内和段间的转移 。
2) 条件转移指令格式:指令助记符 转移地址标号常用条件转移指令无符号数条件转移指令指令助记符 转移条件 说 明
JC CF=1 有进位转移(与 JB/JNAE重叠)
JNC CF=0 无进位转移(与 JAE/JNB重叠)
JP/JPE PF=1 校验为偶转移
JP/JPO PF=0 校验为奇转移
JA/JNBE CF=ZF=0 高于 /不低于或等于转移
JAE/JNB CF=0 高于或等于 /不低于转移
JB/JNAE CF=1 低于 /不高于或等于转移
JBE/JNA CF=1或 ZF=1 低于或等于 /不高于转移
JE/JZ ZF=1 等于 /为零转移
JNE/JNZ ZF=0 不等于 /非零转移有符号数条件转移指令指令助记符 转移条件 说 明
JO OF=1 溢出转移
JNO OF=0 无溢出转移
JS SF=1 为负数转移
JNS SF=0 为正数转移
JG/JNLE ZF=0且 SF=OF 大于 /不小于或等于转移
JGE/JNL SF=OF 大于或等于 /不小于转移
JL/JNGE SF≠OF 小于 /不大于或等于转移
JLE/JNG ZF=1或 SF≠OF 小于或等于 /不大于转移
JCXZ ( CX) =0 CX寄存器为零转移说明:
① 转移范围在 16位寻址方式下为 64KB,32位寻址方式下为 4GB。
② 条件转移指令执行后,均不影响标志位 。
3) 循环控制转移指令格式,LOOP 转移地址标号
LOOPE/LOOPZ 移地址标号
LOOPNE/LOOPNZ 转移地址标号
JCXZ 转移地址标号操作码转移 助记符 条件功能
LOOP (E)CX≠0 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
LOOPE/LOOPZ (E)CX≠0且 ZF=1 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
LOOPNE/LOOPNZ (E)CX≠0且 ZF=0 若满足条件则将 (E)CX减 1,
并转移到标号处的指令执行
JCXZ (E)CX=0 若满足条件,转移到标号处的指令执行说明,与条件转移指令相同,该指令的转移地址标号必须在距离下一条指令的 -128~ +127B范围内。
例如:根据加法运算的结果做不同的处理,如结果为 0 转向 KK1,结果为 1 转向 KK2 执行 。
方法 1,…
ADD AX,BX
JZ KK2
… ; KK2:
方法 2,…
ADD AX,BX
JNZ KK1
… ; KK2 处理程序
KK1,…
4) 过程调用指令格式,CALL 目标操作数;先将 CALL的后继指令地址 ( 也称为断点 ) 保存在堆栈中,然后控制程序转移到目标操作数指定的位臵继续执行 。
段内调用时,当前的 IP( EIP) 压栈,将目标地址送给 IP( EIP) ;
段间调用时,当前的 CS和 IP( EIP) 压栈,将目标地址的段基址和偏移量送给 CS和 IP( EIP) 。
CALL指令有 3种寻址方式:
① 直接寻址:在指令中直接给出被调用过程的过程名 。 可以实现段内和段间转移 。
② 寄存器间接寻址:目标操作数是某一寄存器,在寄存器中存放被调用过程的入口地址 。 只能实现段内转移 。
③ 存储器间接寻址:目标操作数是内存操作数,在内存单元中存放被调用的子程序入口地址,可以实现段内和段间的转移 。
5) 过程返回指令 RET
格式,RET/RETn;将当前堆栈栈顶元素无条件弹出,作为返回的目标地址 。 若是段内返回,
则只弹出偏移地址给 IP( EIP) ;若是段间返回,则弹出段基址和偏移地址给 CS和 IP( EIP) 。
说明:
① RET n称为带参数的返回指令,该参数 n必须是立即数 。 返回时,堆栈指针除了加上弹出的返回地址的字节数以外,还要加上参数 n所给出的立即数 。
这个立即数必须是 16位的偶数 。
② 如果在执行 RET指令之前,栈顶元素仍然是调用程序的断点地址,则 RET
指令执行后,能够正确返回调用程序断点,否则不能 。
③ 近过程和远过程中的 RET指令,格式相同,但汇编后生成的目标代码不一样,前者为 C3H,后者为 CBH。
6) 中断调用与中断返回指令中断调用指令格式,INT N
INTO
① INT N为软中断指令,用于产生一个由 N指定中断类型号的软中断 。
② INTO为溢出中断指令,它是软中断指令 INT的特例,隐含中断类型号为 4。 它只有当 OF臵 1时才产生中断 。
中断返回指令格式,IRET; IRET为中断服务程序的返回指令,CPU执行该指令时,依次从当前栈顶弹出 6个元素给 IP,CS及标志寄存器,用于从中断服务程序返回原程序 。
六,处理器控制指令
1) 单个标志位操作指令
IF=1表示允许可屏蔽中断 ( 开中断 )臵中断允许标志( IF←1 )STI
IF=0表示禁止可屏蔽中断 ( 关中断 )清中断允许标志 (IF← 0 )CLI
DF=1使串指针向减少方向修改臵方向标志 ( DF← 1)STD
DF=0使串指针向增加方向修改清方向标志( DF←0 )CLD
进位标志取反( CF←CF )CMC
臵进位标志( CF←1 )STC
清进位标志( CF←0 )CLC
说 明功 能指令格式
2) 处理器暂停指令 HLT
功能,使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志 。 当 RESET线上有复位信号,CPU响应非屏蔽中断,CPU响应可屏蔽中断 3种情况之一时,CPU脱离暂停状态,执行 HLT的下一条指令 。
3) 处理器脱离指令 ESC
功能,使 CPU将控制权交给浮点协处理器 FPU,使 FPU可以接受 CPU的指令,也可利用 CPU的寻址 。
4) 处理器等待指令 WAIT
功能,使处理器处于等待状态,直到出现外部中断为止 。
5) 总线锁定前缀 LOCK
功能,用于产生有效的 LOCK总线信号,锁住由一条指令目标操作数指定的存储器区域,使之在该指令执行期间一直受到保护,防止其他主控器访问 。
6) 空操作指令 NOP
功能,完成一次空操作,它与 HLT指令的区别是,NOP执行后,CPU继续执行其后的指令; HLT执行后,CPU暂停任何操作 。
七,按条件设臵字节指令格式,SETxx 目标操作数; 根据指令中给出的条件,xx”是否满足来设臵目标操作数:条件满足时,将字节设臵为 01H;条件不满足时,设臵为 00H。
指令助记符 设臵条件 指令条件说明
SETC/SETB/SETNAE CF=1 有进位 /低于 /不高于或等于
SETNC/SETAE/SETN
B
CF=0 无进位 /高于或等于 /不低于
SETO OF=1 溢出
SETNO OF=0 无溢出
SETP/SETPE PF=1 校验为偶
SETNP/SETPO PF=0 校验为奇指令助记符 设臵条件 指令条件说明
SETS SF=1 为负数
SETNS SF=0 为负数
SETA/SETNBE CF=ZF=0 高于 /不低于或等于
SETBE/SETNA CF=1或 ZF=1 低于或等于 /不高于
SETE/SETZ ZF=1 等于 /为零
SETNE/SETNZ ZF=0 不等于 /非零
SETG/SETNLE ZF=1且 SF=OF 大于 /不小于或等于
SETGE/SETNL SF=OF 大于或等于 /不小于
SETL/SETNGE SF≠OF 小于 /不大于或等于
SETLE/SETNG ZF=1或 SF≠OF 小于或等于 /不大于说明,目标操作数只能是 8位的寄存器或存储器操作数 。
第四章 汇编语言程序设计第一节 汇编语言指令第二节 汇编语言程序设计方法第三节 汇编语言程序设计举例汇编语言的特点汇编语言是一种介于机器语言和高级语言之间的计算机编程语言 。
优点,目标代码精简,占用内存少,执行速度快 。
缺点,编程难度大,出错可能性大,程序设计和调试时间长,
可移植性差适用范围,对内存容量和速度要求比较高的编程场合 。
汇编语言语句的分类汇编语言的语句可分为指令性语句 ( 符号指令 ) 和指示性语句 ( 伪指令 ) 。
指令性语句,是可执行语句,与机器指令相对应,命令 CPU进行某种操作,
其功能由硬件完成 。
指示性语句,是说明性语句,无对应的机器指令,它为汇编程序提供编译信息,为链接程序提供链接信息,其功能由软件完成 。
第一节 汇编语言指令一,基本语法成分
★ 名字,用来标识一定的语法成分,有系统规定与用户定义两类 。
● 标号和变量:又称为符号地址标号只可能出现在某一个代码段中,它代表指令地址,它为转移指令提供了转移目标 。
变量是存储器中一个数据或数据区的符号表示,它通常被定义在数据段,附加段或堆栈段,它代表内存操作数的存储地址,
● 常量,在汇编时已有确定的值,有立即数,字符串常数和符号常数三种形式 。
★ 运算符
● 数值运算符,算术运算符,逻辑运算符,关系运算符
● 修改属性的运算符,PTR运算符
● 返回属性或数值的运算符:
SEG运算符,OFFSET运算符,TYPE运算符,$ 运算符
● 方括号运算符和地址表达式二,伪指令
★ 数据定义伪指令,用于定义变量并分配存储区
● 字节定义伪指令 DB ● 字定义伪指令 DW ● 双字定义伪指令 DD
★ 符号定义伪指令,用于 给符号定义一个数值,也可定义为别的符号名
● 等值伪指令 EQU
● 等号伪指令 =:类似于 EQU,但可以对变量进行再定义
★ 段定义伪指令,提供了构造程序的手段
● SEGMENT,ENDS伪指令任何一个逻辑段从 SEGMENT语句开始,到 ENDS语句结束
● ASSUME 伪指令,通知汇编程序,寻址逻辑段使用哪一个段寄存器
● 0RG伪指令,用以规定目标程序或数据区起始存放单元的偏移量
★ 过程与宏定义伪指令
● 过程定义伪指令,PROC/ENDP
● 宏定义伪指令,MACRO/ENDM
● 条件汇编伪指令,MACRO/ENDM
★ 源程序结束伪指令 END
第二节 汇编语言程序设计方法一,分支结构程序设计分支结构程序是具有判断和转移功能的程序 。
分支程序的分类,简单分支程序,多分支程序简单分支程序结构 多分支程序结构二,循环程序设计循环程序结构的分类,单重循环,多重循环循环程序分为,循环初始,循环体和循环控制 3部分单重循环结构 多重循环结构三,子程序设计子程序的调用和返回子程序的调用,CALL指令 子程序的返回,RET指令子程序的调用可分为:段内调用,段间调用段内调用:目标地址(子程序入口地址)的段基址是不变的,它与主调程序的段基址相同;子程序定义为近过程。
段间调用:目标地址的段基址和段内偏移量都将改变;子程序定义为远过程。
子程序的参数传送,调用程序和子程序之间的信息传送称为参数传送,也称为变量传送或者过程通信 。
利用寄存器传送参数:把传送的数据直接放在寄存器中,完成主调程序与子程序间的传送 。
利用堆栈传送参数:由主调程序将参数压入堆栈,子程序把参数从堆栈中弹出使用 。
利用内存单元传送参数:在某逻辑段内建立一个参数表,表内放有子程序所要使用的参数 。
子程序嵌套与递归子程序的嵌套:在程序中,子程序调用另一个子程序的现象递归子程序:子程序在执行时又调用子程序自身,它是子程序嵌套的特例,
DOS及 BIOS功能调用
★ 调用模式,MOV AH,功能号设臵入口参数
INT n
分析出口参数
★ 软件中断可分为 3部分:
● DOS中断,占用类型号为 20H~ 3FH。
● ROM BIOS中断,占用类型号为 10H~ 1FH。
● 自由中断,占用类型号 40H~ FFH,可供系统或应用程序设臵开发的中断处理程序用 。
★ DOS中断及功能调用
● DOS专用中断,INT 22H,INT 23H和 INT 24H 3个中断,
属 DOS操作时专用,用户不要直接使用。
● DOS可调用中断:是指 INT 20H,INT 21H,INT 25H,INT 26H,INT 27H和
INT 2FH 6个中断。这 6个中断可供用户直接调用,但必须满足一定的入口条件。
系统功能调用,专指 INT 21H中断,供系统程序和应用程序调用的一个极其重要的中断,内含近百个系统子功能,已经标准化,调用它们时完全不依赖于任何硬件设备 。
DOS系统输入 /输出常用功能调用,
★ BIOS中断调用
● 键盘 I/O中断调用,INT 16H
● 打印机 I/O中断调用,INT 17H
● 显示 I/O中断调用,INT 10H
模块化程序设计
★ 支持模块化程序的伪指令
● 全局符号名说明语句,PUBLIC伪指令
● 外部符号名说明语句,EXTRN伪指令
● INCLUDE伪指令
★ 模块化程序设计的原则
★ 模块化程序设计举例第三节 汇编语言程序设计举例一,数值计算多字节减法运算多字节乘法运算二,代码转换十进制码到二进制码的转换二进制码与 ASCII码之间的转换三,字符数据处理字符的查找字符的删除第五章 存储器及存储管理第一节 分级存储器系统第二节 内存储器的构成原理第三节 虚拟存储器及存储管理第四节 高速缓冲存储器第一节 分级存储器系统微机大都采用 分级结构 来组织存储器系统,如图所示。存储器从内到外分为四级,内部寄存器组,高速缓冲存储器,内存储器 和 外存储器 。 它们在存取速度上逐级递减,在存储容量上逐级递增。
分级存储器系统内部寄存器组,对其读写速度最快,可减少微处理器访问外部的次数,但数量不可能很多。
高速缓冲存储器,用于装载当前程序和数据,使微处理器能以最高的速度工作。
内存储器,运行的程序和数据都放在其中。
外存,如软盘、硬盘、光盘等,其存取速度比内存要慢得多。
第二节 内存储器的构成原理一,存储器芯片的接口特性了解存储器芯片的接口特性,实质上是了解它 有哪些信号线,以及这些信号线 与总线的连接方法 。
1,EPROM 的接口特性典型的 EPROM芯片有 Intel公司的 2716,2732,2764,27128,27256,27512等。
2,E2PROM的接口特性
E2PROM的突出特点是可以在线进行以字节为单位的读写。
典型 E2PROM产品有 Intel公司的 2816,2817和 2816A,2817A,2864A等。
3,SRAM的接口特性典型的 SRAM芯片产品有 2128,6116,6132,6232,6164,6264,3264,7164、
61256,71256,5C 256,64C512,74512。
4,DRAM的接口特性
5,单列直插式 DRAM存储条的接口特性二,内存储器的设计内存储器的设计,一般包括以下三项工作,存储器结构的确定,存储器芯片的选择,存储器的连接 。
1,存储器结构的确定存储器结构的确定,主要指采用 单存储体结构 还是 多存储体结构 。
● 数据宽度为 8位外部数据总线为 8位的微处理器,其存储器只需用单体结构。
● 外部数据总线为 16位的微处理器,一般需用两个 8位存储体。
● 对于 80486等 32位微处理器,一般使用 4个由字节组成的存储体。
2,存储器芯片的片选控制根据对高位地址总线的译码方式,有线选法、局部译码法和全译码法三种片选方法。
80286微处理器的存储器结构
80386/80486微处理器的存储器结构
● 线选法,将高位地址线直接作为各个存储器芯片的片选控制信号。
● 局部译码法,对高位地址总线中的一部分(而不是全部)进行译码,
以产生各存储器芯片的片选控制信号。
● 全译码法,高位地址线全部译码,译码输出作为各芯片的片选信号。
3,存储器连接存储器连接通常可按下列步骤进行:
( 1) 根据系统实际装机存储容量,确定存储器在整个存储空间中的位臵 。
( 2) 选择合适的存储芯片 。
( 3) 根据地址分配图或表及选用的译码器件,画出相应的地址位图,以此确定,片选,和片内单元选择的地址线,进而画出片选译码电路 。
( 4) 画出存储器总线的连接图 。
第三节 虚拟存储器及存储管理一,虚拟存储器的基本概念虚拟存储器由 主存储器 和 辅助存储器 组成,辅存作为主存的扩充。虚拟存储器的速度接近于主存,而价格接近于辅存,因此性能价格比较高。
1,地址空间及地址虚拟存储器中有 3种地址空间及对应的 3种地址。
● 虚拟地址空间 又称为 虚存地址空间,是程序员用来编写程序的地址空间,
与此相对应的地址称为 虚地址或逻辑地址 ;
● 主存地址空间 又称为 实存地址空间,是存储运行程序和数据的空间,其相应的地址称为 主存地址或实地址或物理地址 ;
● 辅存地址空间 也就是 磁盘存储器的地址空间,是用来存放暂不使用的程序和数据的空间,相应的地址称 为辅存地址或磁盘地址 。
2,工作原理二,80486的段式存储器
1,地址映像与变换线性地址的生成段描述符,在段式存储器中,一个程序的每一个模块都有一个描述符,
用来描述模块的基本状况,其内容包括基址,界限和访问控制等 。
2,段描述符与段描述符表段描述符格式段描述符格式段描述符表,一个程序全部模块的段描述符集合构成的表 。
段描述符表段描述符表分全局段描述符表 ( Global Descriptor Table,
GDT) 和局部段描述符表 ( Local Descriptor Table,LDT) 。
GDT和 LDT在主存中的位臵由全局描述符表寄存器 ( GDTR) 和局部描述符表寄存器 ( LDTR) 决定 。
选择符在保护模式下,段寄存器中的内容也称为选择符 。 选择符不直接确定存储器地址,而是选择 ( 指向 ) 一个段描述符 。
三,80486的页式存储器四,80486的段页式存储器段式存储器 的模块性能好,但主存利用率不高,辅存管理比较困难;
页式存储器 的主存利用率高且辅存管理容易,但模块化性能差;
段页式存储器 对多用户系统非常有用,逻辑结构特别清楚 。
第四节 高速缓冲存储器一,cache的工作原理高速缓冲存储器 ( cache) 是位于 CPU与主存之间的一种存储器,容量比主存储器小,但速度比主存快 。
cache中的内容是主存某一部分存储内容的副本,而这一部分是 CPU
当前正在使用 的指令和数据 。
采用 cache 减轻了主存速度比 CPU速度慢而产生的瓶颈问题,可以大大提高系统的性能 。
cache地址与主存地址
cache的工作过程
cache的物理位臵二,地址映像
cache的地址映像,cache的容量远远小于主存,一个 cache块要对应多个主存块,按某种规则把主存块装入 cache中,称为 cache的地址映像 。
cache的地址变换,主存块装入 cache后,还需要把主存地址变换为对应的
cache地址,即 cache的地址变换 。
● 全相联映像,主存中的任意一块可装入 cache中的任意块位臵称为全相联映像 。
● 直接映像,主存中每一块只能装入到 cache中唯一的特定块位臵的方法称为直接映像 。
● N路组联映像,在直接映像中只有一个 cache( 或称一路 cache),如果把 cache增加到 N路,且在主存的区与 cache的路之间实行全相联映像,在块之间实行直接映像,这就是 N路组联映像 。
三,80486微处理器的片内 cache
片内 cache的结构,80486微处理器的片内 cache既可以存放指令代码,又可以存放数据,采用 4路组联结构 。
片内 cache的地址变换片内 cache块的替换片内 cache的一致性问题,当 CPU向 cache写入数据时,主存的内容跟不上相应的变化,就造成了不一致 。
● 写回法,在 CPU进行写操作时,只把数据写入 cache,仅当需要把已被写过数据的 cache块替换出去时,才把该块送回主存,再调入新块 。
● 写直达法,利用微处理器与主存中的直接通路,在向 cache写入数据时,
把数据同时写入主存,这样,在进行块替换时,cache块就不必写回主存了 。
80486微处理器的片内 cache采用写直达法 。
第六章 输入 /输出方式与接口芯片第一节 输入 /输出方式第二节 中断及中断控制器 8259A
第三节 DMA及 DMA控制器 8237A
第四节 可编程定时 /计数器 8254及其应用第五节 可编程并行 I/O接口芯片 8255A及其应用第六节 串行通讯及可编程串行接口芯片 16550
第七节 多功能接口芯片 82380
第一节 输入 /输出方式一,I/O接口
I/O接口的基本概念
I/O接口是连接 CPU与外设的逻辑控制部件,它主要在 CPU与外设间起着传输状态与命令信息,实现数据的缓冲、数据格式转换等作用。
它的主要功能有,选择外设对外设进行控制和监视进行数据寄存和缓冲进行信号电平转换进行数据格式转换
I/O接口的分类 并行 I/O接口和串行 I/O接口可编程接口和不可编程接口专用接口和通用接口
I/O接口的基本结构主要包含有数据端口、状态端口和控制端口数据端口 用于存放 数据信息,包括数据输入寄存器和数据输出寄存器,主要作用是 协调 CPU和外设之间的数据传输速度 。
控制端口 用于存放 控制信息,控制信息是 CPU通过接口传送给外设的,其主要作用是 控制外设工作,如控制输入输出装臵的启 /停等 。
状态端口 用于存放 状态信息,即反映外设当前工作的状态信息,
CPU可通过读取这些信息,了解外设当前的工作情况 。
I/O端口的寻址方式在一个微机系统中既有存储单元地址又有 I/O端口地址,根据两者地址的不同安排可分为以下两种寻址方式 。
存储器统一编址在这种方式中,把 I/O端口作为存储器的一个单元来对待,即每个端口占用一个存储单元地址 。 此时,对 I/O端口操作可以使用全部的存储器指令,而不必另设专门的 I/O指令 。 由于该方式是将 I/O地址映射到了存储器地址空间,所以也称为存储器映像方式 。
I/O端口独立编址在这种方式下,I/O端口与存储器各自独立编址,这样存储器地址和 I/O端口地址可以重叠 。 此时,CPU利用专门的 I/O指令来操作 I/O
端口以防混淆 。
二,CPU与外设之间的数据传送方式在 CPU与外设之间进行数据传送的方式有:无条件传送,查询传送,
中断控制,直接存储器存取 ( Direct Memory Access 简称 DMA) 传送方式和 I/O处理机方式 。
无条件传送方式 适用于随时都是准备就绪的简单外设。接口电路中仅需数据端口。
无条件传送的输入方式接口电路无条件传送的输出方式接口电路查询方式 适用于 CPU与慢速的外设间的数据传送。
读外设状态准备好?
Y
数据输入 / 输出
N
查询式接口电路一般有,数据端口、状态端口,控制端口。
查询输入方式查询输出方式中断控制方式 适用对象同程序查询方式该方式下,微机与外设并行工作,外设有请求时,微机对其进行服务,否则不对该外设进行任何操作。这样可大大 提高 CPU的利用率 。
中断方式输入接口电路直接存储器存取( DMA)传送方式在主存与外设间建立直接数据通道,进行数据传送。 有传送过程不需 CPU干预,速度快的特点。 其传送过程受专用硬件 DMAC控制。
I/O处理机传送方式该方式中,IOP处理机用自己专门的指令和程序,负责输入输出。
此时主 CPU将只负责,数据处理,工作。
第二节 中断及中断控制器 8259A
一、中断的基本概念什么是中断 在 CPU正常运行程序时,由于内部或外部某个 非预料事件的发生,使 CPU暂停正在运行的程序,而转去执行 处理引起中断事件的程序,然后再返回被中断了的程序,继续执行 。 这个过程就是中断 。
中断服务程序 1
中断服务程序 2
非预料事件 1
非预料事件 2
CPU执行流程中断源与中断向量表中断源 能够引发 CPU中断的信息源,称为 中断源 。 80X86微机系统中最多允许有 256种中断源,其中中断源类型编号为 0~ 255。
按 中断源 的性质可以把中断分为 内中断 和 外中断 两类 。
内中断(软中断)
指 CPU执行某些特殊操作或由 INT指令引起的中断,通常分为以下三类:
① 被零除操作或 OF=1时执行 INTO指令引起
② 使用调试程序中的单步或断点设臵操作引起
③ 执行 INTn 指令引起外中断(硬中断)
指外部芯片通过 CPU的 INTR,NMI两条外部中断请求输入线向 CPU申请中断请求而引起的中断。
② 可屏蔽中断 它是通过 CPU的 INTR引脚产生,当 INTR上有高电平信号且中断允许标志位 IF臵,1”时即产生中断。
CPU是否响应 INTR引脚上的中断请求取决于 IF标志:
IF=1,CPU响应 INTR引脚上的中断请求
IF=0,CPU不响应 INTR引脚上的中断请求即当 IF=0时,将 INTR引脚上的中断申请屏蔽。
① 非屏蔽中断 它通过 CPU NMI引脚产生,当 NMI上有正跳变信号时,即产生一个内部引导的类型 2中断。即 NMI引脚上的中断请求不受 IF标志的控制,IF不能屏蔽 NMI引脚上的中断请求。
但在系统通电瞬间或屏蔽寄存器最高位臵,0”可屏蔽 NMI。将最高位臵
,1”又可以开放 NMI。
MOV DX,A0H; A0H~ BFH为屏蔽寄存器 MOV DX,A0H
MOV AL,00H; MOV AL,80H
OUT DX,AL;屏蔽 NMI OUT DX,AL;开放 NMI
中断向量表 在实模式下,中断向量表就是中断服务程序入口地址 。
内 存中断向量表 0:0 ~ 0:3FFH
1000:150h
3000:200h
0,N× 4
0,N× 4+2
0,0000,、、、、、
0200h
3000h
、、、
、、、
MOV AX,0
ADD AX,DX
MOV [DI],AX
、、、
、、、
MOV BX,CX
、、、
、、、
IRET
、、、
类型 N
中断子程某中断源发申请中断,申请执行类型号为 N的中断子程响应中断前
SS:SP
响应中断后
SS:SP
堆栈 执行
IRET后
(IP)
(CS)
(PSW)
0150
1000
(PSW)
SS:SP
(IP)=0200h
(CS)=3000h
0,3FFH
0,0
从中断子程返回断点处,靠的是执行中断子程最后的指令 IRET;
从堆栈中取出断点地址给 CS:IP,继续执行被中断的程序 。
故中断子程最后要安排 IRET 指令 。
返回主程序后
SS:SP
返回主程序前
SS:SP
堆栈执行
IRET后
(IP)
(CS)
(PSW)
0150
1000
(PSW)
SS:SP
(IP)=0200h
(CS)=3000h
1000:150h
3000:200h
0,N× 4
0,N× 4+2
0,0000,、、、、、
0200h
3000h
、、、
、、、
MOV AX,0
ADD AX,DX
MOV [DI],AX、
、、、
、、、
MOV BX,CX
、、、
IRET
、、、
内存中断向量表的设臵 当 CPU响应中断时,将从中断向量表中读取中断向量送给 CS和 IP,转去执行中断服务程序 。 因此,用户必须将中断服务程序的入口地址填入系统的中断向量表中,填入的方法有两种 。
① 用程序设臵中断向量表,、、
CLI
MOV AX,0
MOV ES,AX
MOV DI,4*32H
LEA AX,INTSUB
CLD
STOSW
MOV AX,SEG INTSUB
STOSW
、、、
、、、INTH:
假设中断类型号为 32H,中断服务程序入口处的标号为
INTSUB。
② 用 DOS功能设臵中断向量表利用 INT 21H 的 35H 号功能可实现保存原中断向量,所取得中断向量放在 ES,BX中 。
MOV AL,N ; N为被保存的中断类型号
MOV AH,35H
INT 21H ; ES,BX中为原中断向量
PUSH ES
PUSH BX
利用 INT 21H 的 25H 号功能可实现设臵新中断向量,新中断向量应放在 DS,DX中 。
CLI
PUSH DS
MOV AX,SEG INTSUB ; INTSUB段基址存入 DS
MOV DS,AX
MOV DX,OFFSET INTSUB ; INTSUB有效地址存入 DX
MOV AL,N ;中断类型号 N
MOV AH,25H
INT 21H ;将 DS:DX放臵中断向量表中
POP DS
STI
若要在主程序结束前恢复原中断向量可采用以下程序段实现:
、、、
POP DX
POP DS ;将保存于堆栈的原中断向量弹出,送入 DS:DX
MOV AL,N
MOV AH,25H
INT 21H
、、、
中断描述符表
80486工作在保护模式下时,采用,中断描述符,来描述中断服务程序,
用 中断描述符表 ( IDT) 取代中断向量表 。
IDT可位于线性地址空间中的任何地方,CPU通过中断描述符表寄存器
IDTR确定 IDT的基地址,该寄存器保存有 32位的基地址和 IDT界限 。
中断描述符的格式 中断描述符存放在 IDT中,每个中断描述符由 8个字节组成( 0字节~ 7字节)。
其中各部分的主要作用为,
P位,P= 0描述符无效,即该描述符描述的存储区在物理存储器中不存在 。
P= 1描述符有效
DPL位:描述符特权级
TYPE,TYPE= 0101为任务门,TYPE= 1100为调用门
TYPE= 1110为中断门,TYPE= 1111为异常门
80486保护方式下中断 /异常处理程序进入过程中断优先级与中断嵌套中断优先级 当有多个中断源同时产生中断申请时,CPU先响应优先权最高的中断源,再响应优先级较低的中断源 。
中断嵌套 当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序,依次响应 。 这种中断套中断的过程称为中断嵌套 。
中断嵌套可以有多级,具体级数原则上不限,主要取决于堆栈区的大小 ( 因为中断处理前后均需要保护断点和现场,而断点信息和现场数据的保护是通过堆栈来完成的 ) 。
CPU响应中断的条件
① CPU内部中断是开放的 。
② 现行指令内无总线请求,没有更高优先级别的中断请求正在被响应或正发出,正挂起 。
③ CPU在现行指令结束后,即运行到最后一个机器周期的最后一个 T状态时,才能采样 INTR线而响应可能提出了的外中断请求 。
内中断处理过程
① CPU自动产生中断类型号 n;
② ( SP) -2→ ( SP),标志寄存器 F内容入栈;
③ ( SP) -2→ ( SP),当前代码段 CS内容入栈;
④ ( SP) -2→ ( SP),当前指令计数器 IP内容入栈;
⑤ 禁止外部中断 IF= 0,禁止单步中断 TF= 0;
中断处理过程
⑥ 从中断向量表中取中断服务程序入口地址 ( 4*N单元的字内容送 IP,
4*N+ 2单元里的内容送 CS) ;
⑦ 转中断服务程序;
⑧ 执行中断服务程序并返回,弹出 IP,CS,F,返回断点,继续执行 。
外中断 ( INTR) 执行过程
① CPU发出两个中断响应信号 INTA,第二个 INTA时,CPU从当前数据总线上取中断类型码 N( 通常由管理 INTR的控制器 8259A提供 ) ;
② ( SP) -2→ ( SP),标志寄存器 F内容入栈;
③ ( SP) -2→ ( SP),当前代码段 CS内容入栈;
④ ( SP) -2→ ( SP),当前指令计数器 IP内容入栈;
⑤ 禁止外部中断 IF= 0,禁止单步中断 TF= 0;
⑥ 首先从中断向量表中取 4*N单元的字内容送 IP,然后再取 4*N+ 2单元里的内容送 CS;
⑦ 转中断服务程序;
⑧ 执行中断服务程序并返回,弹出 IP,CS,F,返回断点,继续执行 。
多中断源的中断源识别与优先级管理中断优先级编码电路菊花环 ( 或称为链式 ) 排队电路二、中断控制器 8259
8259A的内部结构与引脚功能方 波键 盘保 留串 口 2
硬 盘软 盘打印机
IOW
18.2Hz
A0
CS
8259A
总线
A0
数 据 线
IOR RD
WR
片选译码
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
A5
~
A9
D0~
D7
D0
~
D7
Vcc
SP/EN
CA0
CA1
CA2
GND
+ 5V
20~3FH 用于多片
8259A
级连情况INTA
INT
INTA
INTR
串 口 1
8259A与总线的连接
8259A的中断优先权管理方式
8259A有五种优先级管理方式,所有的优先级管理方式均可通过编程来设臵 。
⑴ 全嵌套方式
⑵ 特殊全嵌套方式
⑶ 优先级自动循环方式
⑷ 优先级特殊循环方式
⑸ 特殊屏蔽方式
8259A处理过程分两步,
⑴ 处理外设中断申请,决定是否向 CPU发中断申请信号 。
⑵ 若发出中断申请信号,且 CPU响应,则在 CPU中断响应周期送出中断类型号 。
处理外设中断申请,决定是否向 CPU发中断申请信号
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请是否进入优先级裁决器
PR。 IMR对应位为 0,允许中断申请进入优先级裁决器,为 1,不允许进入,中断申请被 IMR屏蔽。
① 中断申请寄存器 IRR 锁存外部的中断申请。
若 IR0~ IR7 引脚上有中断申请,则将 IRR 相应位臵 1
③ 当前中断服务寄存器 ISR 记录 CPU正在响应的中断 。
– ISR中的某位为 1,表示 CPU正在响应此级中断,
– ISR中的某位为 0,表示 CPU没有或已响应完此级中断 。
④ 优先级裁决器 PR 据新进入的中断申请和 ISR的内容,决定是否发中断申请信号 。
– 如果进入的中断申请比 ISR 中记录的中断优先级高,
则通过 8259A 的 INT 引脚向 CPU发出中断请求信号;
– 如果进入的中断申请不比 ISR 中记录的中断优先级高,
同级或低级,则不向 CPU 发中断请求信号 。
① 中断申请寄存器 IRR 锁存外部的中断申请 。
若 IR0~ IR7 引脚上有中断申请,则将 IRR 相应位臵 1
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
1 0 0 1 0 1 0 0
INTR
1
1
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请是否进入优先级裁决器
PR。
IMR对应位为 0,允许中断申请进入优先级裁决器,
IMR对应位为 1,不允许进入,中断申请被 IMR屏蔽。
③ 当前中断服务寄存器 ISR 记录 CPU正在响应的中断 。
– ISR 中 的 某 位 为 1,表示 CPU 正 在 响 应 此 级 中 断,
即正在执行此中断源的中断子程;
– ISR中的某位为 0,表示 CPU没有或已响应完此级中断,
即不在执行此中断源的中断子程
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
④ 优先级裁决器 PR据新进入的中断申请和 ISR的内容,决定是否发中断申请信号 。
- 如果进入的中断申请比 ISR 中记录的中断优先级高,则通过 8259A
的 INT 引脚向 CPU发出中断请求信号;
- 如果进入的中断申请不比 ISR 中记录的中断优先级高,同级或低级,
则不向 CPU 发中断请求信号 。
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
若发中断申请信号,且 CPU响应,则在 CPU中断响应周期送出中断类型号向量类型
INTA
CLK
AD7~AD0
T1 T2 T3 T4
第 一 个中断响应周期
T1 T2 T3 T4
第 二 个中断响应周期8086CPU中断响应周期时序
CPU接收到 INTR上的中断申请信号后:
如果 IF 标志为 0,则 CPU不响应此中断申请信号,即中断申请被 IF屏蔽 。
如果 IF 标志为 1,则处理完当前的指令后,进入中断响应周期通过 INTA
引脚发出两个负脉冲信号,从数据总线上获取中断类型号,进入中断响应的过程 。
① 将 ISR 中相应位臵 1,表示 CPU 响应此级中断,执行此中断源的中断子程 。
8259A在接收到第一个 INTA中断响应信号后:
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
1 0 0 1 0 1 0 0
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
WR
INTA
INT
D0~
D7
INTR
01
② 把 IRR中对应的位清 0,清除 IRR中锁存的中断申请信号。
① 通过数据线,将被响应申请的中断类型号送给 CPU。 类型号由 ICW2提供,在初始化 8259A时已设定好 。
8259A在接收到第二个 INTA中断响应信号后:
0
0
1
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
OCW1 中 断 屏 蔽 寄 存 器
IMR 0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设臵
1 0 0 1 0 1 0 0
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
WR
INTA
INT
D0~
D7
INTR
01
② CPU获得中断类型号后,进入 CPU响应中断的过程,执行中断子程,处理中断源申请的功能。
① 取中断类型号 N
② 当前 PSW的内容入栈
③ 清 IF,TF标志为 0
④ 当前 CS的内容入栈
⑤ 当前 IP的内容入栈
⑥ 取内存单元 ( 0,N × 4 )字内容送 IP 取中断子程
⑦ 取内存单元 ( 0,N × 4 + 2 )字内容送 CS 入口地址此时 CS:IP指向中断程序的入口,开始执行中断程序 。
保存现场
CPU响应中断过程:
执行完中断子程中最后一条指令 IRET后,返回被中断处,继续执行被中断的程序。
(2) 发中断结束命令 EOI
由 8259A 的工作过程可知,ISR中的内容是优先级裁决器进行裁决的重要依据,CPU响应某级中断后,8259A自动将 ISR的对应位臵 1,如果 CPU
已执行完中断子程,而 ISR中的对应位仍为 1,8259A的优先级裁决器仍会据
ISR的内容做裁决,从而会屏蔽同级的中断申请。因此,在中断响应后,对
ISR中相应位的清 0很重要,它是 8259A认为中断结束的标志。
① 自动结束方式
8259A在接收到第二个中断响应脉冲 INTA时就会自动清除 ISR中的相应位 。 该方式只能用在系统中只有一片 8259A且多个中断不会嵌套的情况下 。
② 非自动结束方式
※ 一般结束方式
8259A在接收到一般结束命令时,就会把 ISR中最高优先级位复位,结束当前正在处理的中断 。 该方式适用于 8259A工作在全嵌套方式下的情况 。
※ 特殊结束方式当 8259A工作在非全嵌套方式下,可选特殊结束方式 。 该方式下,通过命令使 8259AISR中的指定位复位,结束当前中断 。
⑶ 8086CPU如何获取中断类型号
由前面介绍知,当中断源产生中断请求后,
不论是内中断,非屏蔽中断,还是可屏蔽中断,
只要满足响应条件,在执行完当前指令后,
CPU内部硬件会自动完成响应中断的过程,共七个步骤,而第一步就是获取中断类型号 。
不同的中断源,8086CPU获取中断类型号的方法不同,一般具有以下几步:
① CPU从引脚 INTA 发中断响应信号,接口芯片接收此信号,把中断类型号准备好;同时 ISRi=1,IRRi=0。
② CPU再从引脚 INTA 发中断响应信号,接口芯片接此信号后,将中断类型号送至数据总线上;
③ 从数据总线获取中断类型号 。
④ CPU根据读取到的中断类型号寻找中断程序的入口地址 。
根据 8086CPU对中断的分类,各中断获取类型号的方法
① CPU 执行除零或 OF 为 1 执行 INTO 指令除零 固定类型号 00H
OF 为 1 执行 INTO 指令 固定类型号 04H
② 使用 DEBUG 下的单步和断点操作单步 固定类型号 01H
断点 固定类型号 03H
内中断 ③ 执行中断调用指令 INT N
由指令中给出 指令中指定类型号 N
① 非屏蔽中断引脚 NMI 上有中断申请信号 (上升沿信号)
非屏蔽中断 固定类型号 02H
外中断
② 可屏蔽中断 (参看中断响应时序图)
当 IF=1,引脚 INTR 上有中断申请信号 ( 高电平信号 )
CPU 按中断响应周期时序,从数据总线上获取中断类型号可屏蔽中断 外部接口送上类型号
8259A的编程
4个初始化命令寄存器
ICW1,ICW2
ICW3,ICW4
3个操作命令寄存器
OCW1( IMR)
OCW2,OCW3
当前中断服务寄存器 ISR
中断申请寄存器 IRR
8259A中断控制器 内部有 9
个可读写的寄存器
1 × I3 I4
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制处理部分控制部分
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
中断屏蔽寄存器 IMR
OCW2
1 0 0 1 0 1 0 0
0 0
0 1
OCW3
OCW1
8259A有两个 I/O端口地址
A0=0 偶地址端口
A0=1 奇地址端口
对 9个寄存器的读写均通过这两个端口实现
写入数据的特征位
写入的先后顺序区分是对哪个寄存器进行操作根据
1 × I3 I4
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制处理部分控制部分
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
PR
优先级裁决器
IRR
中断申请寄存器
0
0
0
0
0
0
0
0
中断屏蔽寄存器
OCW2
1 0 0 1 0 1 0 0
0 0
0 1
OCW3
OCW1
D0~
D7
A0
CS
RD
WR
8
0
1
1
1
A0
1
0
0
A0
8259A的初始化编程
8259A的初始化编程的顺序及内容
① ICW1
A0 D7 D6 D5 D4 D3 D2 D1 D0
0 × × × ×1 LTIM SNGL IC4
② ICW2
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 T7 T6 T5 ×T4 T3 × ×
③ ICW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
1
④ ICW4
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 T7 T6 T5 ×T4 T3 × ×
8259A的操作编程
① OCW1
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 M7 M6 M5 M2M4 M3 M1 M0
② OCW2
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 R SL EOI L20 0 L1 L0
③ OCW3
A0 D7 D6 D5 D4 D3 D2 D1 D0
1 0 ESMM SMM P0 1 RR RIS
向 8259A送入 D2= 0,D1D0= 10B 的 OCW3指令后,向着 8259A偶地址的读指令可读入中断请求寄存器 IRR的内容;若 D1D0= 11B,则可读入中断服务寄存器 ISR的内容 。
D7 D6 D5
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
功 能清除自动循环优先级命令发出 EOI
无操作发出 SEOI
设臵自动循环优先级命令设臵自动循环优先级并发 EOI
设臵特殊循环优先级命令设臵特殊循环优先级并发 SEOI
OCW2的 D7~ D5位的功能说明
– 通过往寄地址端口写入 IMR内容实现对应位为 0,允许该级中断申请进入对应位为 1,禁止该级中断申请进入对 8259A的奇地址的读指令可读得中断屏蔽寄存器 IMR的内容,也可 。
修改 IMR的内容 。
IOR
IOW
总线数 据 线D0
~D7
INTA
A0
片选译码
A5~
A9
CS
A0
RD
INTA
WR
INT
D0~
D7
ICW1 芯片控制
ICW2 中断类型号
ICW3 主从片关系
ICW4 方式控制
0
0
0
0
0
0
0
0
ISR
当前中断服务寄存器
IR0
IR1
IR2
IR3
IR4
IR5
IR6
IR7
OCW1 中断屏蔽寄存器 IMR
0 0
OCW2 优先级,发 EOI
OCW3 特殊屏蔽设置
PR
优先级裁决器
IRR
中断申请寄存器
1
0
0
0
0
0
0
1
1 0 0 1 0 1 0 0
INTR
新增允许 IR2 的中断申请
IN AL,21H ;读入原 IMR的内容
AND AL,1111 1011B ;D2=0,允许 IR2的中断申请
OUT 21H,AL ;写入 IMR
禁止 IR4 的中断申请
IN AL,21H ;读入原 IMR的内容
OR AL,0001 0000B ;D4=1,禁止 IR4的中断申请
OUT 21H,AL ;写入 IMR
例 已知 IBM PC/XT系统中 8259A的奇地址端口地址为 21H
送入 8259A的 OCW3的 D2= 1时,可使 8259A进入查询工作方式 ( 非中断方式 ) 。 读取 8259A偶地址 ( A0= 0),可得到 8259A的状态字,若状态字的
D7= 1,表示 8259A的 IR7~ IR0中有中断请求发生,D2~ D0给出了最高优先级中断请求的编码;若 D7= 0,则表示没有中断请求发生 。
8259A在 PC中的基本应用从
8259A
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
主
8259A
IRQ0
IRQ1
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
INT
至 CPU
INT
中断路由器
IR
Q7
IR
Q6
IR
Q5
IR
Q4
IR
Q3
IR
Q2 ISA总线
PCI
总线
PCI
总线系统时钟键盘主,从 8259A级连的中断控制逻辑主片的端口地址,20H,21H
从片的端口地址,A0H,A1H
8259A各中断请求的功能分配情况中断申请引脚
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
中断类型号
08h
09h
0Ah
0Bh
0Ch
0Dh
0Eh
0Fh
70h
71h
72h
73h
74h
75h
76h
77h
哪个设备使用系统时钟 (8254)
键盘连接从 8259
COM2串口 2
COM1串口 1
保留软盘控制器
LPT1并口实时时钟 (RTC)
保留 (软件指向 0Ah类型 )
保留显卡鼠标数值协处理器硬盘控制器保留主,从 8259A的中断结束命令对主 8259A有:
MOV AL,20H ; EOI命令
OUT 20H,AL ;写主片的 OCW2
IRET
对从 8259A有:
MOV AL,20H ; EOI命令,
OUT 0A0H,AL ;写从片的 OCW2
IRET
第四节 可编程定时器 /计数器 8254及其应用微机系统实现定时功能,主要有三种方法,软件定时,不可编程硬件定时 和 可编程硬件定时 。
软件定时 是通过执行一个固定的程序段来实现定时 。 由于 CPU执行每条指令都需要一定时间,因此执行一个固定的程序段就需要一个固定的时间 。 定时或延时时间的长短可通过改变循环次数来控制 。
不可编程的硬件定 时常采用中小规模集成电路实现 。 如使用 555
定时器等,硬件定时方案不占用 CPU时间,但电路连接好后,定时值就不能改变 。
可编程硬件定时 用可编程定时器 /计数器来实现,本节主要介绍
IBM PC系列微机使用的 Intel 8254可编程定时器 /计数器 。
一,8254的内部结构和引脚功能计数器 0,1,2的内部结构
16位初值寄存器由 CPU
分两次写入
16位减 1计数器:在
CLK的作用下,对计数初值 N进行减 1,
当减为 0时,在 OUT
引脚上产生回零时间到信号
16位锁存器其值随减 1计数器改变而改变二,8254的工作方式三,8254的编程
1,方式控制字
2,计数初值( N)
定时时间 T= CLK时钟周期 tCL× 计数初值( N) N=T/tCL
三,8254在 PC中的应用
PC使用一片 8254,其 3个计数通道分别用于日时钟计时,DRAM
刷新定时和控制扬声器发声声调,
定时中断和定时刷新
MOV AL,36H ;计数器 0为方式 3,采用二进制计数,先低后高写入计数值
OUT 43H,AL ;写入方式控制字
MOV AL,0 ;计数值为 0
OUT 40H,AL ;写入低字节计数值
OUT 40H,AL ;写入高字节计数值
MOV AL,54H ;计数器工作为方式 2,采用二进制计数,只写低 8位计数值
OUT 43H,AL ;写入方式控制字
MOV AL,18 ;计数初值为 18
OUT 41H,AL ;写入计数值扬声器控制;发音频率设臵子程序,入口参数,AX=1.19318× 106÷ 发音频率
SPEAKER PROC
PUSH AX
MOV AL,0B6H ;定时器 2为方式 3,先低后高写 16位计数值
OUT 43H,AL
POP AX
OUT 42H,AL ;写入低 8位计数值
MOV AL,AH
OUT 42H,AL ;写入高 8位汁数值
RET
SPEAKER ENDP
SPEAKON PROC ;扬声器开子程序
PUSH AX
IN AL,61H ;读取 61H端口的原控制信息
OR AL,03H ; D1D0= PB1PB0= 11B,其他位不变
OUT 61H,AL ;直接控制发声
POP AX
RET
SPEAKON ENDP
SPEAKOFF PROC ;扬声器关子程序
PUSH AX
IN AL,61H
AND AL,0FCH ; D1D0= PB1PB0= 00B,其他位不变
OUT 61H,AL ;直接控制闭音
POP AX
RET
SPEAKOFF ENDP
可编程硬件延时;延时开始
MOV AH,0 ;读取日时钟功能调用 ( 附录 5)
INT 1AH
ADD DX,90 ;加 5秒 ( 5× 18= 90)
MOV BX,DX ;期望值送 BX
L1,INT 1AH ;再读日时钟
CMP BX,DX ;与期望值比较
INE L1 ;不等,则循环
…… ;相等,则延时结束
MOV CX,O
MOV DX,1952 ;延时 1.952MS= 2× 976US
MOV AH,86H
INT 15H ;功能调用返回时,定时时间到第五节 可编程并行 I/O接口芯片 8255及其应用并行传送是主机与外设之间交换信息的一种基本方式,其特点是数据的各位同时传送。 8255是一种通用可编程并行 I/O接口芯片,在 PC
中常用于传递键盘信息、扬声器信息等。
一,8255的内部结构和引脚功能二,8255的工作方式
8255A有三种工作方式,方式 0,方式 1,方式 2
1.方式 0:基本输入输出方式这种方式下,端口与外设间不需要联络信号 。 8255A的 3个端口 都可以工作在该方式下,并由控制字规定为输入或输出 。 当 8255A的端口工作在方式 0时,CPU只要用输入或输出指令就可以与外设进行数据交换 。 因此,方式 0也称为 无条件的输入 /输出方式 。
2.方式 1:选通输入输出方式这种方式下,只有 A口 和 B口 可以作为 8位的输入或输出端口,C口主要作为 A,B两个端口输入 /输出时的联络信号。且 A口和 B口无论输入或输出都有数据锁存功能。该方式下 CPU与 8255A间可以用 中断方式 或查询方式 进行信息交换。
选通输入方式端口 A和端口 B工作于方式 1的输入方式时,其引脚和时序如下选通输出方式端口 A和端口 B工作于方式 1的输出方式时,其引脚和时序如下
3.方式 2:双向选通方式方式 2是将方式 1的选通输入输出功能组合成一个双向数据端口,外设利用这个端口 既能发送数据,又能接收数据 。 8255A只有 端口 A可以工作于方式 2,端口 A工作在方式 2的引脚和时序如下:
三,8255的编程
1,方式选择控制字
2,C口按位臵位 /复位控制字
3.初始化举例例如,若规定端口 A为方式 1输出,端口 C上半部分为输出,端口 B
指定为方式 0输入,端口 C下半部分为输入,则方式选择控制字应是:
10100011B或 A3H。
若将此控制字的内容写入 8255A的控制寄存器,即完成了对 8255A
的初始化 。 初始化程序段为:
MOV DX,210H ;假设控制端口的地址为 210H
MOV AL,0A3H ;方式选择控制字
OUT DX,AL ;送到控制端口又如:要使端口 C的 PC5臵,1”,PC2臵,0”,可通过下面的程序段实现 ( 假设 8255A的控制 端口地址为 83H),
MOV AL,0BH ; PC5臵,1”
OUT 83H,AL ;送到控制端口
MOV AL,04H ; PC2臵,0”
OUT 83H,AL ;送到控制端口四,8255A的应用
1.8255A在 PC中的应用
PC使用一片 8255A管理键盘,控制扬声器和输入系统配臵开关的状态等 。 这片 8255A的端口 A,B,C和控制口的地址分别为 60H,61H,62H和
63H。
在 PC机中,8255A工作在基本输入 /输出方式 。 端口 A为方式 0输入,
用来读取键盘扫描码 。 端口 B工作于方式 0输出,PB6和 PB7控制键盘接口电路,PB0和 PB1控制扬声器发声 。 端口 C为方式 0输入,存放系统配臵开关的状态 。 这样,系统利用如下两条指令就完成了 8255A的初始化编程:
MOV AL,10011001B ; 8255A的方式控制字 99
OUT 63H,AL ;设臵端口 A和端口 C为方式 0输入,端口 B方式 0输出
80286以上的微机系统中,由其他的多功能芯片取代了 8255A的功能,
为了保证和低档微机的兼容性,系统仍使用 8255A的口地址,仍然可从
60H端口地址读取按键扫描码,可使用 PB0和 PB1来控制发声系统 。
2,8255A在简单输入输出中的应用设系统中外扩了一片 8255A和相应的实验电路,如图所示 。 要求每按一次 K键,则使发光二极管 LEDi的状态随开关 Ki的状态变化 ( Ki闭合,
LEDi亮; Ki断开,LEDi灭 ) 。 主机键盘有任意键按下结束 。
按查询方式完成该例,方式选择控制字为,10000110B,即 86H.参考程序如下:
CODE SEGMENT
ASSUME CS,CODE
MAIN,MOV AL,86H
OUT 83H,AL ;写入方式选择控制字
AGAIN,MOV AH,1
INT 16H ;键盘有键按下?
JNZ DONE ;有,转 DONE
IN AL,82H ;读 8255A C口
TEST AL,00000010B ; K键已按下 ( PC1=1)?
JZ AGAIN ;没有,重复
IN AL,81H ;读 8255A B口
NOT AL
OUT 80H,AL ;输出到 8255A 口
JMP AGAIN
DONE,MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
按中断方式完成该例,方式选择控制字为,10000110B,即 86H,INTEB
为 1,即将 PC2臵,1”,其控制字为,00000101B或 05H,参考程序如下:
CODE SEGMENT
ASSUME CS,CODE
MAIN,MOV AL,86H
OUT 83H,AL ; 写入方式选择控制字
MOV AL,05H
OUT 83H,AL ; PC2=1( INTEB=1)
MOV AX,0
MOV DS,AX
MOV BX,0AH*4
LEA AX,INTSUB ; 填充中断向量表
MOV [BX],AX
MOV AX,SEG INTSUB
MOV [BX+2],AX
IN AL,21H ; 读 8259A的 IMR
AND AL,11111011B
OUT 21H,AL ; 开放 8259A IR2的中断
STI ; 开中断
AGAIN,MOV AH,1
INT 16H ; 键盘有键按下?
JZ AGAIN ; 没有,等待
MOV AH,4CH
INT 21H ; 返回 DOS操作系统
INTSUB PROC FAR
IN AL,81H ; 读 8255A端口 B
NOT AL
OUT 80H,AL ; 输出至 8255A端口 A
MOV AL,20H
OUT 20H,AL ; 中断结束命令
IRET ; 中断返回
INTSUB ENDP
CODE ENDS
END MAIN
第七章 外设接口技术第一节 键盘接口技术第二节 CRT接口技术第四节 USB接口技术第三节 八段 LED显示器接口技术第一节 键盘接口技术一,键盘的分类
1.按应用范围分类工控机键盘,工控机键盘和主机连为一体,键盘和主机的相对位臵固定不变,也称为固定键盘 。
微机键盘,微机键盘独立于主机之外,通过一根活动电缆或无线方式与主机相连,这种键盘和主机的位臵可以在一定范围内移动调整,也称为活动式键盘 。
2.按外形分类标准键盘人体工程学键盘,在标准键盘上,将左手键区和右手键区两大板块左右分开成一定角度的扇形,用户在操作键盘时可以保持一种比较自然的形态,符合人在键盘上的操作 。
多媒体网络键盘,在普通的 104键键盘上多加了一些对多媒体和网络操作的功能键,主要用来完成一些快捷操作 。 这种键盘需要专门的驱动程序,在设臵,安装时比普通键盘麻烦 。
多功能键盘,在普通键盘的基础上又集成了其它的外部设备 。 如:
带鼠标的键盘,带手写字板的键盘,集成话筒和喇叭的键盘,
带扫描仪的键盘,集成条形读卡器的键盘,集成 USB HUB的键盘
3.按接口分类
AT接口键盘,AT接口键盘俗称,大口,键盘,键盘的插头是一个圆形 5
芯插头,插头是有方向性的 。
PS/2接口键盘,PS/2接口键盘俗称为,小口,键盘,是目前使用最普通的一种键盘 。 它的插头是 4针,在插头上有一个定位口,用来防止插错方向 。
USB接口键盘,USB接口键盘支持 USB接口热拔插功能,可在打开微机以后,
带电拔插键盘,或更换键盘 。
无线键盘,无线键盘与微机间没有直接的物理连线,可以完全脱离主机 。
无线键盘通过红外线或无线电波将输入信息传送 給 接收器 。 接收器放在主机旁,连接在 PS/2口,COM口或 USB口上 。
4.按键盘开关接触方式分类触点式按键,工艺简单,价格低廉,它是借助簧片直接使两个导体接通或断开,有着理想的开关特性 。
无触点式按键,电容式开关的特点是手感好,击键声音小,容易控制,结构简单,灵敏度高,成本低,易于小型化和批量生产 。
5.按照按键识别方式分类非编码键盘,主要用软件的方法识键和译键 。
编码键盘,主要用硬件来实现键的扫描和识别 。
二,键盘的结构和工作原理
1.键盘的结构微机键盘由 外壳,按键和电路板 三部分组成 。
键盘外壳,主要用来支撑电路板和给操作者一个方便的工作环境 。
电路板,是整个键盘的核心,它位于键盘的内部,主要由逻辑电路和控制电路组成,担任按键扫描识别,编码和传输信息的工作 。
键盘按键,可分为触点式和非触点式两种类型 。
2.键盘的工作原理非编码键盘接口
( 3) 找到被按下的键 。 从 0行开始,顺序逐行扫描,即该行输出,0”。
每扫描一行,读入列线数据,找出为,0”的列;若无,则顺序扫描下一行,并检查其各列;若找到某列线为,0”,则该列与检查行交点的按键为被按下的按键;
( 1) 识别有键按下否 。
PA的三线输出均为,0”,
读入 PB的四根输入线,只要有一线为,0”,即表明有键被按下;
( 2) 去抖动 。 延时 20ms
左右,等按键通,断引起的抖动消失,若还有键闭合,则认为按键已稳定;
( 4) 根据找到的键号,转去执行该键相应的子程序 。
下面给出按行扫描的有关子程序 。 设 8255A端 A的地址为 60H,端口 B的地址为 61H,控制寄存器的地址为 63H。
判别有无键按下的程序段如下:
MOV AL,82H ; 8255A初始化,方式 0,A口输出,B口输入
OUT 63H,AL
MOV AL,0
OUT 60H,AL ;各行线为,0”
WAIT,IN AL,61H ;读列线数据
AND AL,0FH ;屏蔽无关位
CMP AL,0FH ;列线有,0”否?
JZ WAIT ;无,等键按下检测哪个键按下的程序段如下:
BEGIN,MOV BL,3 ;行数
MOV BH,4 ;列数
MOV AL,0FEH ;起始数据,0行为,0”
MOV CL,0FH ;键盘屏蔽码
MOV CH,0FFH ;起始键号为,-1”
LOOP1,OUT 60H,AL ;扫描一行
ROL AL ;修改扫描码,准备扫描下一行
MOV AH,AL ;保存
IN AL,61H ;读列线值
AND AL,CL ;屏蔽无关位
CMP AL,CL ;有列线为,0”?
JNZ LOOP2 ;有,转去找该列线
ADD CH,BH ;否,修改键号,指向该行末列键号
MOV AL,AH ;取回扫描码
DEC BL ;行数减 1
JNZ LOOP1 ;未完转下一行
JMP BEGIN ;重新开始
LOOP2,INC CH ;键号加 1,指向本行首列键号
RCR AL ;带进位循环右移一位
JC LOOP2 ;该列非,0”,检查下一列
MOV AL,CH ;是,键号送 AL
CMP AL,0 ; 0号键按下?
JZ KEY0 ;是,转 0号键子程序
CMP AL,1 ; 1号键按下?
JZ KEY1 ;是,转 1号键子程序
.
.
.
CMP AL,0AH ; 10号键按下?
JZ KEY10 ;是,转 10号键子程序
CMP AL,0BH ; 11号键按下?
JZ KEY12 ;是,转 11号键子程序
3,PC的键盘接口
PC的键盘扫描接口单片机 8048作键盘的控制部件 。 它承担键盘扫描,去抖动,生成扫描码,检查被卡住的键等功能,可以缓冲存放 20个键扫描码 。
PC的键盘扫描控制电路
PC与键盘接口
PC的键盘接口电路第二节 CRT接口技术一,CRT显示器概述
CRT显示器的发展
CRT显示器成像原理 扫描成像原理 三原色原理二,CRT接口技术单色显示适配器 ( MDA:Monochrome Display Adapter)
字符显示的原理显示数据处理逻辑,单色显示适配器可以看成由显示数据处理逻辑和扫描控制逻辑两部分组成 。
MDA逻辑框图扫描控制逻辑彩色图形适配器 ( Color Graphics Adapter,CGA)
图形显示的原理当 CRT屏幕作图形显示时有两个特点:
① 图形的线点可以细到只有一个像素点;
② 要显示的像素点可在屏幕任意一个位臵上出现 。
CGA:CGA可以产生黑白和彩色的字符和图形 。
当 屏幕作图形显示时有两个特点:
① 图形的线点可以细到只有一个像素点;
② 要显示的像素点可在屏幕任意一个位臵上出现 。
CGA逻辑框图增强型图形适配器 ( Enhanced Graphics Adapter,EGA)
VRAM的容量有 256K字节,其结构与数据组织和 CGA大不相同 。
存放在 VRAM中的图形数据和字符点阵数据经并串转换后送到属性控制寄存器去处理,它把 VRAM中的字符电阵和图形像素值翻译成送往监视器的信息 。
视频图形阵列 ( Video Graphics Array,VGA)
VGA采用 模拟信号输出接口,使显示的颜色丰富多彩 。 它的分辨率也提高到 640× 480,并在软件上与 MDA,CGA,EGA兼容,其字符点阵有
8× 8,8× 14,8× 16,9× 16等多种,可显示 256K种颜色,可同时显示
256种色 。 除支持 EGA的所有显示方式外,还增加了 3种显示方式 。
增强型的 VGA( Super VGA)
第三节 八段 LED显示器接口技术一,LED显示器及工作原理
1.LED显示器的分类
a
b
c
d
e
f g
dp
显示 ‘ 1’,b,c 两段点亮段选开关位选开关
LED
a
b
c
d
e
f
g
dp
显示 ‘ 4’,b,c,f,g 四段点亮显示原理
2.工作原理二,LED显示器与 CPU的接口电路
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
例 1:要求 LED0显示,7,,其它 LEDi不显示任何内容段选信号
D7 D6 D5 D4 D3 D2 D1 D0
a b c d e f g dp
位选信号
/ / 5 4 3 2 1 0
0 0 0 1 1 1 1 1
0 0 0 0 0 0 0 1
段选口送 1FH
位选口送 01H
MOV AL,1FH
OUT 90H,AL
MOV AL,01H
OUT 91H,AL
a
b
c
d
e
f g
dp
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
三、显示管理程序
(1) 解决字符 → 段代码的转换问题
LED0 …… LED4 LED5
待显字符,3
0DH
SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
段代码表
(2) 多位 LED,同时”显示不同字符的问题显缓区段代码表
DISMEM 1
2
3
4
5
6
1 2 3 4 5 6SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
显示过程如下:
★建立六个待显字符的显示缓冲区
★查出第一个字符的字形码
★送段形码至段选口
★使最左一位 LED发光
★延时 1ms
★ 指向下一位 LED……
直至最后一位 LED显示完为止 已扫描一遍开始
↓
指针指向显缓区首址
↓
位选信号初始
↓
取待显数据,查表得段选码送段选口
↓
位选信号送位选口
↓
六位都显完?
↓
修改指针,修改位选信号是否例,多位 LED,同时”显示 123456,假设 LED显示器的段选口接 8255的 A口,位选口接 8255的 B口,开关 K1接 8255C口的 PC0,当 K1向上时,程序运行停止。
显缓区段代码表
DISMEM 1
2
3
4
5
6
1 2 3 4 5 6
LED5 LED0
SEGPT 0
1
2
3
4
5
6
C0H
F9H
A4H
B0H
99H
12H
82H
∶
∶
段选信号
D7 D6 D5 D4 D3 D2 D1 D0
dp g f e d c b a
a
b
c
d
e
f g
dp
程序如下,
DISMEM DB 1,2,3,4,5,6
SEGPT DB 0C0H,0F9H,0A4H,
DB 0B0H,99H,12H,82H
┇
MOV DX,20BH
MOV AL,81H
OUT DX,AL
MOV CL,20H
LEA DI,DISMEM
MOV AL,[DI]
LEA BX,SEGPT
PUSH CX
MOV CX,3000H
LOOP AGAIN
POP CX
AGAIN:
INC DI
SHR CL,1
DISP:
MOV DX,20AH
IN AL,DX
AND AL,01H
JZ NEXT
┇
NEXT:
MOV DX,208H
OUT DX,AL
INC DX
MOV AL,CL
OUT DX,AL
JNC DISP
XLAT
例:电路结构如图,要求,LED0~ LED5循环显示,3”。
∶
∶
Q0
∶
∶
Q5
D0
D5
∶
∶
IOW
地址信号 1( 91H)
地址信号 2( 90H)
段选口位选口
… …
LED0 LED5
… a
dp
b …
a
dp
b
∶
∶
Q0
∶
∶
Q7
D0
D7
∶
∶
∶
∶
∶
∶
CPU
DB
clk
clk
MOV AL,0DH
OUT 90H,AL
MOV AL,20H
OUT 91H,AL
SHR AL,01H
JNC LP
MOV AL,20H
JMP LP
LP:
NOP
NOP
┇ 延时三,显示管理程序
(1) 解决字符 → 段代码的转换问题
LED0 …… LED4 LED5
待显字符,3
0DH
段代码表
SEGPT 0
1
2
3
4
5
6
03H
9FH
25H
0DH
99H
49H
41H
∶
∶
第四节 USB接口技术一、概述
USB 即通用串行总线 ( USB,Universal Serial Bus) 。 USB为主机与不同外设的连接提供了极大的方便,其主要优点是:
1) 完全自动检测和配臵的即插即用功能;
2) 带电热插拔操作;
3)统一的接插件,不存在连接错误。
USB是一种支持即插即用的新型,菊花链,串行接口 。它在一条,线缆,上有链接多个设备的能力。
USB要比标准串口快得多,其数据传输率可达 4M bit/s—12M bit/s,
而一般的串口最多只能是 115K bit/s。
二,USB规范
USB是一种支持即插即用的新型,菊花链,串行接口 。它在一条,线缆,上有链接多个设备的能力。
在针对 USB确定结构时,应遵照以下要求:
1)PC外设的扩展简单方便;
2)传输速率高达 12M bit/s的低成本方案;
3)完全支持语音、音频和压缩视频的实时数据处理;
4)在混合模式下进行等时( Isochronous)数据传输和异步信息发布的协议灵活性;
5)包含多个 PC配臵和外形尺寸;
6)提供一种能够迅速扩散到产品生产中的标准接口;
7)促使产生可提高 PC能力的新型设备。
USB带给用户的好处主要表现在以下几个方面:
1) 易于最终用户使用
USB提供了一种关于接线和连接器的统一模式,其中的电气细节
(例如,总线端子)与最终用户完全隔离。它还能自动识别外设。自动把功能变为驱动程序,以及自动配臵。 USB外设在系统运行过程中还可以动态连接和重新配臵。
2) 广泛的工作负载和应用领域
USB适合于识别带宽从数千 bit/s到数兆 bit/s的设备。它支持在同一套电缆上进行等时和异步传输。多连接结构允许进行多个设备的同时操作,支持多达 127个物理设备。 USB支持在主机和设备之间传输多种数据和信息流,允许使用混合型设备(例如,具有多种功能的外设),而且由于降低了协议的额外开销而提高了总线的使用效率。
3) 灵活性和鲁棒性
USB支持很大的数据包长度范围,允许多种设备缓冲的选配、多种设备数据速率和数据包尺寸。 USB协议中包括了缓冲处理的流控制。
协议中还有错误处理或故障恢复机制。能以用户可观察到的实时方式实现设备的动态接入和分离,而且可自动识别出有故障的设备。
4)多种低成本实现方案为了支持低成本外设,USB可以作为一种低成本的 1.5M bit/s的子通道来实现,它在外设和主机硬件的集成方法上进行优化,采用低成本电缆和连接器以及商用技术 。
第八章 总线第一节 概述第二节 ISA总线第三节 PCI总线微机系统大都采用总线结构 。 这种结构的特点是采用一组公共的信号线作为微机各部件间的通信线 。 这组公共信号线就称为总线 。 采用总线结构可简化系统的软,硬件设计及系统结构,使系统易于扩充和升级 。
第一节 概述一,总线的分类根据总线所处的物理位臵不同,可将总线分为如下 4类,片内总线,元件级总线,系统总线 及 外总线 。
片内总线 是集成电路芯片内部用以连接各功能单元的 信息通路 。它一般由芯片生产厂家设计,但当用户需设计符合自己要求的专用芯片时,便应掌握片内总线技术。
元件级总线(又称片总线或在板局部总线) 是印刷电路板上连接各芯片之间的 公共通路 。这种总线与芯片引脚关系密切,难以形成总线标准。
系统总线 ( 又称内总线 ) 是模块式微机机箱内的 底板总线,用以连接微机系统的各插件板,一般为 并行总线 。 例如,多处理机系统中各
CPU板之间的 通信通道,即为 系统总线 。 常用的系统总线有 ISA和 PCI
等 。
外总线 ( 又称通信总线 ) 用于微机系统与系统之间,微机系统与仪器或其他外部设备 ( 例如打印机 ) 之间的连接 。 外总线可以是并行或串行总线,其数据传输率一般比系统总线低 。 这种总线非微机专用,一般是利用电子工业其他领域已有的总线标准 。
二、总线信号线类型总线通常少则有几十条,多则有百多条信号线,大体上可分成以下几种类型:
地址总线 数据总线 控制总线电源和地线 它们决定了总线使用的电源种类及地线的分布和用法。
备用线 留给厂家和用户自行定义,作为功能扩充和用户的特殊技术要求使用。
三、总线规范总线规范一般包括如下基本内容:
① 机械结构规范,规定模块尺寸,总线插头,连接器等的规格 。
② 功能结构规范,规定总线接口引脚的定义,传输速率的设定,时序及信息格式的约定等 。
③ 电气规范,规定信号的逻辑电平,负载能力及最大额定值,动态转换时间等 。
四、总线的数据传输系统总线上的 数据传输 是在 主控模块 ( 即主控设备 ) 的控制下进行的,它一般分为如下 4个阶段:
申请阶段 当系统总线上有多个主控模块时,需要使用总线的主控模块要提出申请,由总线仲裁逻辑确定把下一个传输周期的总线使用权交给哪个模块 。 若系统总线上只有一个主控模块,就不需要这一阶段 。
寻址阶段 取得总线使用权的主控模块通总线发出本次要访问的从属模块的地址及有关命令,以启动参与本次传输的从属模块 。
数据传输阶段 主控模块和从属模块之间进行数据传输,数据由源模块发出经数据总线传到目的模块。
结束阶段 主从模块的有关信息均从系统总线上撤除,释放系统总线。
第二节 ISA总线一,PC总线
PC总线是 PC及 XT机使用的总线 。 它是 ISA总线的基础 。 目前人们在设计一些较为简单的专用接口时仍使用这种总线 。
PC总线的特点
① 由 8088CPU经 8282锁存器,8286收发器,8288总线控制器,8259中断控制器,8237DMA控制器及其他逻辑的重新驱动,组合形成的 。
② 每个双列扩展槽有 62个管脚,代表不同信号 。
③ 除了供应特殊需要的 ± 12V电源外,其他信号均与 TTL电平兼容 。
信号线 PC总线的 62条信号线分为 5类:地址线、数据线、控制线、状态线和辅助与电源线。
地址线 A0—A19( 20条) 数据线 D0—D7( 8条) 控制线( 21条)
状态线二,ISA总线
ISA总线 又称为 AT总线,它是在 PC总线基础上扩展形成,它在保持原 PC总线的 62个引脚信号不变的前提下增加了数条信号线,具有 16位数据 宽度,地址线 24条,可寻址 16MB。 工作 时钟频率为 8MHz,数据传输率最高可达 16MB/s。
ISA总线是一种 多主控总线,这一特性通过系统总线扩展槽中的
MASTER信号线实现 。 即除主 CPU外,DMA控制器,刷新控制器和带处理器的智能接口控制卡都可以成为 ISA总线的主控设备,但它只支持一个智能接口控制卡,由于它的特殊性,目前某些 PC上仍有 ISA插槽 。
ISA总线支持 8种类型的总线周期,存储器读,存储器写,I/O读,
I/O写,中断,DMA 传输,刷新和仲裁周期 。
ISA总线信号
ISA总线 是在 PC总线 的基础上 扩展一个 36线插槽 形成的 。 ISA总线由用一轴线的 基本插槽 和 扩展插槽 两段组成 。 基本插槽有 62条信号线,兼容 PC总线;扩展插槽有 36条信号线,为 ISA总线新增加的信号 。
基本插槽基本插槽的 62条信号线 的引脚排列及定义 与 PC总线基本相同,但有 3
条信号线不同,B4引脚定义为 IRQ9( PC总线为 IRQ2) ; B8引脚定义为
OWS等待状态信号 ( PC总线为 CARD SLCTD) ; B19引脚定义为 REFRESH信号 ( PC总线为 DACK0) 。
另外,ISA总线称 PC总线的 MEMR和 MEMW两条信号为 SMEMR和 SMEMW,
仍作地址线 A0—A19( ISA中称为 SA0—SA19) 寻址的 1MB内存的读 /写选通信号 。 对基本插槽而言,PC总线与 ISA总线兼容,因此,PC总线又叫 8位 ISA总线,而 PC AT总线被称为 16位 ISA总线 。
扩展插槽元件面 焊接面引脚号 信号名 说 明 引脚号 信号名 说 明
C1 SBHE 高字节允许,双向 D1 MEM CS16 存储器片选,输入
C2 LA23 D2 IS CS16 外设片选,输入
C3 LA22 D3 IRQ10
C4 LA21 D4 IRQ11
C5 LA20 高位地址,双向 D5 IRQ12 中断请求,输入
C6 LA19 D6 IRQ14
C7 LA18 D7 IRQ15
C8 LA17 D8 DACK0
C9 SMEMR 存储器读,双向 D9 DRQ0
C10 SMEMW 存储器写,双向 D10 DACK5
C11 D8 D11 DRQ5 DMA请求与响应
C12 D9 D12 DACK6 前者输入,后者输出
C13 D10 D13 DRQ6
C14 D11 数据线高字节,双向 D14 DACK7
C15 D12 D15 DRQ7
C16 D13 D16 +5V 电源
C17 D14 D17 MASTER 主控,输入
C18 D15 D18 GND 地第三节 PCI总线随着 80486,Pentium等高性能 CPU的出现,高速的 CPU和内存访问用慢速 I/O操作出现了瓶颈;多媒体对于图形和高速显示提出能快速传输大量信息的要求等,使得 ISA总线不能适应发展 。 要提高系统总线的速度,希望与微处理器同速,因而一些厂商在不改变 ISA标准的基础上为主板设计了一种特殊的高速插槽,将高速外设控制卡直接挂到 CPU局部总线上,并以 CPU的速度运行,这样便为 CPU和高速外设提供了一条高速桥梁 。 这种特殊的总线插槽称为,局部,总线插槽,主要支持高速的外部设备卡 。 对于其他慢速设备,仍可以保持原来 ISA
总线标准,这样既保证了兼容性,又解决了瓶颈问题 。
局部总线 是一种类似于 80386与 80486微处理器接口的总线,除了保持原有的向下兼容性外,还可与原有总线结构并存,构成所谓的中介式总线,如图所示 。
一,PCI总线的主要优点
PCI有 4个主要的标准,分别支持 32位与 64位,其下又细分成 3.3V与 5V
两种信号,其主要优点如下:
① 不依赖于某一具体处理器结构,它和微处理器不直接相连,而是通过 PCI桥路,因而更换微处理器的品种时,只需更换相应的桥路即可。
独立于微处理器使 PCI总线能为 I/O功能而优化,能使局部总线与处理器 /存储器子系统同时工作,并满足除图形之外的多种高性能要求。
② 自动配臵功能使用户安装接口卡时无需跳线等手工操作,资源需求设臵工作在系统初启时由 BIOS完成 。
③ 接 口 卡 短 小 。 PCI 接 口 插 槽 采 用 的 MCA( Micro Channel
Architecture) 设计方式,且不同于 VL仍保留原 ISA插槽,因此接口卡更为短小 。
④ 信号复用,部分信号有多任务能力,地址信号与数据信号共用同一条信号线,信号在不同阶段表示不同的含义 。
⑤ 兼容性好 。 PCI总线可与 ISA,VL总线等兼容 。 由于 PCI总线扩充卡的元件放臵与一般 ISA卡正好相反,这就可以使一个 PCI总线扩充卡与一个 ISA总线扩充卡共用一个位臵 ( 一个主板上可以有一个共享位臵 ) 。
由于 PCI的指标与 CPU及时钟无关,严格说来,PCI总线扩充卡是通用的,
可插到任何一个有 PCI总线的系统上去 。 不过实际上因卡上 BIOS本身与
CPU及操作系统等有关,不一定能做到如此通用 。 但至少对同一类型
CPU的系统,一般能够通用 。
⑥ 有发展前途 。 PCI总线从一开始就作为一种长期的总线标准加以制定,
它考虑到节能的绿色微机的要求,把支持 3.3V的工作电压加入到规范中 。
PCI兼容 5V和 3.3V信号环境,为保证电压平滑转换,规定了 3种扩充卡电气类型 。 一种是仅能插入 5V连接器的 5V卡;另一种是可用于 5V和 3.3V连接器的通用卡;还有一种是只能用于 3.3V连接器的 3.3V卡 。
⑦ 定义了 32位数据总线,且可扩展为 64位。
⑧ 支持无限读写突发操作,支持并发工作方式。
三,PCI总线的体系结构四,PCI总线信号定义五,PCI总线应用制定 PCI总线的目的之一是建立一种 性能 /价格比高,兼容性强,
扩充性强,能适应将来特性,并能 在多种平台和结构中应用 的 工业标准总线 。
局部总线 PCI的应用有下列特点:
① 可用于高,中,低档的台式机及便携机,服务器 。
② 工作电压兼顾到便携机的 3.3V环境及台式机有 5V转向 3V的要求 。
PCI总线中规定了这两种电压及它们之间的转换方法 。
③ PCI器件和扩充卡独立于微处理器,故在未来的处理器及多处理器系统中也能应用 。
④ PCI还定义了由 32位数据地址总线转为扩充 64位总线的方法,使总线宽度加倍,并对 32位和 64位 PCI总线外设做到向前和向后兼容 。
谢谢!