第1章 微型计算机基础
1.1 计算机中数的表示和运算 1.1.1 计算机中的数制及转换
在微型计算机中,常见和常使用的数制 十进制 二进制 八进制
十六进制等(会转换)。 1.十进制
十进制计数特征如下:
使用10个不同的数码符号0,1,2,3,4,5,6,7,8,9 基数为10
每一个数码符号根据它在数中所处的位置(即数位),按逢十进一决定其实际数值。 任意一个十进制正数D,可以写成如下形式:
n-1 n-210 -1-2-n
(D)10=Dn-l³10 +Dn-2³10 +„+Dl³10+D0³10+D—l³10+D-2³10+²²+D-n³10 2.二进制
在二进制计数制中,基数是2,计数的原则是“逢2进1”。特征如下: 使用两个不同的数码符号0和l 基数为2
每一个数码符号根据它在数中所处的位置(即数位),按逢二进一决定其实际数值。 任意一个二进制正数B,可以写成如下形式:
n-1 n-210 -1-2-n
(B)2=Bn—l³2+Bn—2³2 +„+Bl³2+B0³2+B—l³2+B-2³1+²²+B-n³1 十进制TO二进制
把十进制整数转换成二进制整数通常采用的方法是“除以2取余数”。 把十进制小数转换成二进制小数所采用的规则是“乘2取整”。 在计算机中,数的存储、运算、传输都使用二进制。 3.八进制
在八进制计数制中,基数是8,计数的原则是“逢8进1”。特征如下: 使用8个不同的数码符号0,1,2,3,4,5,6,7 基数为8
每一个数码符号根据它在数中所处的位置(即数位),按逢八进一来决定其实际数值。 任意一个八进制正数S,可表示为:
n-1 n-2 1 0 –1-m
(S)8=Sn—l³8+Sn—2³8+²²+S1³8+S0³8 +S—l³8+²²+S-m³8 转换: 将十进制整数转换成八进制整数的方法是“除以8取余数”。
将八进制数转换成二进制数的方法是:把八进制数中的每一位数都用相应的三位二进制数来代替。 [例1-3] 将十进制数59转换成八进制数
[例1-4] 将十进制小数0.6875转换成八进制小数 4。十六进制
在16进制计数制中,基数是16,计数的原则是“逢16进1”。特征如下:
使用16个不同的数码符号,它们是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F 基数为16
每一个数码符号根据它在数中的位置(即数位),按逢十六进一。 对任意一个十六进制正数H,可表示为:
n-1 n-2 1 0 –1-m
(H) 16=Hn-l³16+Hn—2³16+„+Hl³16+H0l³16+H—l³16+„+H-m³16
转换
将十进制整数转换成十六进制整数的规则是“除16取余”。十六进制数计数的原则是“逢16进1”。 将十六进制数转换成二进制数的方法 1.1.2 数的表示 1.机器数的特点
机器数表示的数值范围受计算机字长的限制。 机器数的符号位被数值化。
机器数的小数点处于约定的位置。 2.带符号数的表示
带符号数有三种表示方法:原码、反码、补码(一定要会求)。 原码
特征如下:
原码形式与二进制数的原来表示方法基本一样。
原码中增加了专门表示数的正、负的符号位,也就是用0表示正号,用1表示负号。 最左边一位的0和1不代表具体数值,而分别表示“+”和“-”。 反码
正数的原码和反码完全一样。
负数的反码是由其原码的数值部分求反(即由0变为1,1变为0)而得到的。 补码
补码是计算机中带符号数的实用表示方法。规定如下: 正数的补码与原码和反码是一样的。
负数的补码可由其反码的末位加1。即负数的补码是对其原码除符号位外各数值位求反并在末位加1而得到的 1.3 微型计算机
1.3.1 电子数字计算机概述(简单了解)
电子数字计算机是一种能按照事先编好的程序(指令序列)自动地、高速地、准确地进行大量运算和对信息进行加工处理的电子设备。
第一代:电子管时代。计算机采用电子管作为逻辑元件。 第二代:晶体管时代。 第三代:集成电路时代。
第四代:大规模集成电路时代。
未来的计算机将朝巨型化、微型化、网络化与智能化的方向发展。第五代计算机将是完全新型的一代计算机。 电子计算机的特点和分类 2.计算机系统组成(掌握)
任何计算机系统都由硬件系统和软件系统两部分组成。
硬件系统主要包括运算器、控制器、存储器、输入设备和输出设备五个部分。 软件系统包括计算机本身运行所需的系统软件和用户完成任务所需的应用软件。 计算机是依靠硬件和软件的协同工作来执行给定任务的。 计算机的硬件系统
所有冯诺依曼结构的计算机都由运算器、控制器、存储器、输入设备、输出设备五部分组成,其中运算器和控制器又称为中央处理单元(CPU)。
运算器:负责数据的算术运算和逻辑运算,即数据的加工处理部件。
控制器:对程序规定的控制信息进行分析、控制,并协调输入、输出操作或内存访问。 存储器:存储程序和数据,是具有记忆功能的部件。
输入设备:把用户的程序和数据输入到计算机的存储器。 输出设备:从计算机中取出程序执行结果或其它信息。 计算机硬件结构图 4.计算机软件系统
计算机软件系统由系统软件和应用软件组成。 5. 计算机工作过程(理解) 首先要编制程序。
通过输入设备将程序和原始数据送入存储器
在程序运行后,计算机就从存储器中取出指令,送到控制器中去分析、识别。 控制器根据指令的含义发出相应的命令,控制存储器和运算器的操作; 当运算器任务完成后,就可以根据指令序列将结果通过输出设备输出。
操作人员还可以通过控制台启动或停止机器的运行,或对程序的执行进行某种处理。 1.3.2 微型计算机组成与配置
微型计算机是以微处理器为核心,配以大规模集成电路存储器、输入/输出接口电路及系统总线所组成的计算机。 1.微型计算机的发展阶段
30多年来,微型计算机的发展经历了以下几个发展阶段:
第1阶段(1971年 1972年): 微型计算机采用4位的微处理器是Intel的4004和8008。
第2阶段(1973年 1977年):微型计算机采用8位微处理器(如Intel的8080)。其流行机种是TRS-80和AppleII。 第3阶段(1978年 1984年):微型计算机采用16位微处理器(如Intel的8086和8088 80286)。其流行机种是IBM PC和IBM PC/XT。 微型计算机的发展阶段
第4阶段(1985年 1992年):微型计算机采用32位微处理器(如Intel的80386、80486等)。其流行机种是PC386和PC486。
第5阶段(1993年至现在):采用了新一代微处理器,如Pentium。Pentium处理器的内部数据总线为32位,外部数据总线为64位。目前流行机种是PIV。近来,出现了采用 64位的微处理器作为CPU的微型计算机,64位微型计算机具有64位运算能力、64位寻址空间和64位数据通路。 2. 微处理器、微型计算机与微型计算机系统 微处理器是指采用大规模集成电路技术,将具有运算器和控制器功能的电路及相关电路集成在一片芯片上的大规模集成电路。微处理器是微型计算机的核心,又称为微型计算机的中央处理器。 微型计算机是指以微处理器为核心,配以大规模集成电路构成的主存储器、输入输出接口电路及系统总线所组成的计算机。微型计算机又称为个人计算机(PC)、微电脑等。
微型计算机系统是指以微型计算机为核心,配以相应的外部设备、电源、辅助电路以及控制微型计算机工作的系统软件所构成的计算机系统。 3.微型计算机硬件系统
微型计算机属于冯诺依曼结构的计算机。但是,微型计算机的运算器、控制器不再是两个独立的部件,它集成在一块微处理器上,称为微处理器。高档微机有的使用两个或多个微处理器。采用一个微处理器的微型计算机硬件系统是由微处理器(CPU)、存储器、系统总线及输入输出设备组成,如图1-4所示。 微型计算机硬件系统 图 (1)中央处理单元
中央处理单元是一块微处理器芯片,芯片上集成有控制器、运算器、寄存器等功能部件。
运算器又称算术逻辑单元,具有算术运算和逻辑运算功能,是计算机对数据进行加工处理的部件。
控制器主要由指令寄存器、译码器、程序计数器、操作控制器等组成,负责对程序规定的控制信息进行分析、控制,并协调输入、输出操作或内存访问。 寄存器是处理器内部的暂时存储单元。
(2)存储器
存储器是计算机实现记忆功能的部件。存储器主要包括主存储器和辅助存储器。主存储器由半导体存储器RAM和ROM组成,又称为内存;辅助存储器又称外存储器,包括软盘存储器、硬盘存储器和光盘等。 (3)输入输出设备
常用的输入设备有键盘、鼠标、扫描仪、数码相机等。常用的输出设备有显示器、打印机、绘图仪等。一般而言,外存储器也属于输入、输出设备。 (4)总线
微型计算机系统采用总线结构将CPU、存储器和外部设备进行连接。所谓总线就是在两个以上数字设备之间提供传送信息的公用通道。总线通常由数据总线、控制总线和地址总线三部分组成。其中数据总线在CPU与内存或输入输出接口之间传送数据;控制总线用来传送各种控制信号;地址总线用来传送存储单元或输入输出接口的地址信息。 (5) 网络设备
随着计算机网络技术的发展,微型计算机适应网络的需求,出现了许多网络设备,如路由器、调制解调器等。将这些设备硬说成是输入输出设备有点牵强附会,因此将这些设备归为网络设备。
这样,微计算机硬件系统又可以说是由微处理器、存储器、输入、输出设备和网络设备等部分组成。 4. 微型计算机主要组装部件
组成微型计算机的组装部件主要有主机系统板、显示器、键盘、软磁盘驱动器、硬磁盘驱动器及各种适配卡。若要组装一台适合用户需要的兼容机,只要选择合适的一组配套的配件,并按照配件的技术要求,正确组合安装,就可以构成一台微型计算机。
5.微型计算机性能指标
通常用微型计算机的性能指标表述微型计算机的性能。微型计算机的主要性能指标有字长、主存储器容量、时钟频率和运算速度等。 ⑴ 字长
字长是计算机中的CPU一次能够同时处理的二进制数据的位数,它直接影响到计算机的计算精度、功能和速度。一般微型计算机字长有8位,16位,高档微机为32位。目前已出现字长64位的微型计算机。根据字长分类,微型计算机可分为16位机,32位机、64位机等。 ⑵ 主存储器容量
主存储器的容量指的是主存储器中RAM和ROM的容量总和。主存储器容量越大,运算速度越快,数据处理能力越强。微计算机主存储器以字节为单位存储信息。通常,将1024个字节(Byte)称为1KB,1024KB称为1MB,1024MB称为1G B。目前, Pentium机容量具有256MB,高端PC使用512MB,已经开始向1GB内存发展。 微型计算机性能指标 ⑶ 运算速度
通常运算速度用每秒钟能执行的指令数来表示,单位一般用MIPS(每百万条指令/秒)。目前,高档微机的运算速度可达几千万次/秒。 ⑷主频
主频是指计算机的时钟频率,单位为兆赫兹(MHz)。时钟频率很大程度上决定了计算机的运算速度,时钟频率越高,运算速度越快。目前,Pentium IV型芯片主频高达3000MHz。
第2章 微处理器
2.1 微处理器的原理与组成 2.1.1 微处理器的基本结构 微处理器:
是一种采用大规模集成电路技术,将具有运算器和控制器功能的电路及相关电路集成在一片芯片上的大规模或超大规模集成电路。
微处理器的硬件
1. 微处理器的硬件组成
一般而言,微处理器芯片上集成有控制器、运算器、寄存器以及连接它们的内部总线等部件。 运算器具有算术运算和逻辑运算功能,是对数据进行加工处理的部件,又称为算术逻辑单元。 微处理器的硬件
控制器主要由指令寄存器、译码器、程序计数器、操作控制器等组成,负责对程序规定的控制信息进行分析、控制,协调输入、输出操作或内存访问。
寄存器是微处理器内部的暂时存储单元。各部件之间通过内部总线交换信息。 2.1.2 微处理器的工作原理
微处理器的工作过程就是执行程序的过程,而执行程序就是逐步执行一条条指令。微处理器在执行一条指令的步骤如下。
1. 取指令 指令预取部件向指令快存提取一条指令。
2.指令译码 指令译码部件将取得的指令翻译成起控制作用的微指令。
3.取操作数 根据计算出的该指令所使用的操作数的物理地址,请求总线接口部件,通过总线从存储器取得该操作数。
4.执行运算 按照指令操作码的要求,通过执行微指令,对操作数完成规定的运算处理。 5.回送结果 将指令的执行结果回送内存或某寄存器中。
微处理器的工作过程是取指令、指令译码、取操作数„„,再取指令„„,周而复始地进行。 2.1.3微处理器特点与分类 1.微处理器的特点 2.微处理器分类
微处理器分类方法很多,主要有两种。
按微处理器位数分类有:位片、4位、8位、12位、16位、32位、64位等微处理器。
2.2 8086/8088微处理器
2.2.1 8086/8088主要特征
8086主要特性
8086主要特性是:
16位数据总线(8088外部数据总线为8位)。
20位地址总线,其中低16位与数据总线复用。 16位端口地址线可寻址64K个I/O端口。
可处理内部软件和外部硬件中断,中断源多达256个。 支持单处理器、多处理器系统工作。 2.2.2 8086 CPU内部结构 8086微处理器的内部结构 它由两大部分组成:
总线接口部件BIU(Bus Interface Unit) 执行部件EU(Execution Unit)。
和一般的计算机中央处理器相比较,8086的EU相当于运算器,而BIU则类似于控制器。 8086微处理器的内部结构 1. 执行部件 EU
执行部件EU是进行数据处理、加工和有效地址计算的部件,即完成指令译码和执行指令操作。它主要由算术逻辑运算单元、标志寄存器、通用数据寄存器组、专用寄存器组和EU控制电路等组成。
(1)算术逻辑运算单元(ALU)
算术逻辑运算单元是一个16位的运算器,可用于8位、16位二进制算术和逻辑运算,也可按指令的寻址方式计算寻址存储器所需的16位偏移量。 (2)标志寄存器
标志寄存器是一个16位的寄存器,反映CPU运算的状态特征和存放某些控制标志。8086使用了9位。标志寄存器如图2-3所示。其中6个标志位用来反映CPU的运行状态信息
CF 进位标志:当执行一个加法(或减法)运算使最高位产生进位(或借位)时,CF为1;否则为0。此外循环指令影响CF。
PF 奇偶标志:当指令执行结果的低8位中含有偶数个1时,PF为1;否则为0。
AF 辅助进位标志:当执行一个加法(或减法)运算使结果的低4位向高4位有进位(或借位)时,AF为1;否则为0。 ZF 零标志:若当前的运算结果为零,ZF为1;否则为0。 SF 符号标志:它和运算结果的最高位相同。
OF 溢出标志:当补码运算有溢出时,OF为1;否则为0。 标志寄存器控制标志位
3个控制标志位 用来控制CPU的操作,由程序进行置位和复位。它们是:
TF 跟踪(陷阱)标志:为方便程序调试而设置。若TF置1,8086处于单步工作方式;否则将正常执行程序。 IF 中断允许标志:用来控制可屏蔽中断的响应。 DF 方向标志:用来控制数据串操作指令的步进方向。若DF置1,则串操作过程中地址会自动递减;否则自动递增。 (3)数据寄存器
4个16位的数据寄存器AX、BX、CX、DX用于暂存计算过程中所用到的操作数及结果。数据寄存器既可作为16位,也可作为8位数据寄存器使用。
4个16位的数据寄存器除用作通用寄存器外,还有各自的专门用途,例如:
AX在算术运算中用做累加器;BX在计算存储器地址时常用做基址寄存器;CX在串操作指令及循环中用做计数器等。 (4)专用寄存器
8086提供了4个专用寄存器,即基数指针寄存器BP、堆栈指针寄存器SP、源变址寄存器SI和目的变址寄存器DI。 地址指针和变址寄存器一般用来存放地址的偏移量;
SP和BP是用来指示存取位于当前堆栈段中的数据所在的偏移地址; 变址寄存器SI和DI用来存放当前数据段的偏移地址。 (5)EU控制电路
EU控制电路负责从BIU的指令队列缓冲器中取指令,并对指令译码,根据指令要求向EU内部各部件发出控制命令,以完成各条指令规定的功能。 2.总线接口部件BIU
概述: 总线接口部件BIU负责与存储器及外部设备接口,完成8086/8088CPU与存储器间的信息传送。
总线接口部件BIU由20位地址加法器、段寄存器、16位指令指针、指令队列缓冲器和总线控制电路等组成。 地址加法器和段寄存器
(1)地址加法器和段寄存器
8086的20条地址线,可直接寻址1MB存储器物理空间。从CPU内部看,它均为16位的寄存器,所以CPU不能直接寻址1MB空间。为此,8086用一组段寄存器将这1MB存储空间分成若干个逻辑段,每个逻辑段长度<64KB,用4个16位的段寄存器分别存放各个段的起始地址(又称段基址)。用16位的寄存器实现20位物理地址的形成过程如图2-4所示。它是由专门的地址加法器将有关段寄存器内容左移4位后,与16位偏移地址相加,形成一个20位物理地址。 20位物理地址的形成过程图
代码段寄存器CS 存放当前执行程序所在代码段的段基址。 数据段寄存器DS 存放程序当前使用的数据段的段基址。
堆栈段寄存器SS 存放程序当前使用的堆栈段的段基址,堆栈操作的数据就在这个段中。
附加段寄存器ES 存放程序当前使用的附加段的段基址。 (2)16位指令指针IP(Instruction Pointer)
16位指令指针IP用来存放将要取出的指令在现行代码段中的偏移地址。它与CS组合使用,才能确定下一条指令存放单元的物理地址。 (3)指令队列缓冲器
8086的指令队列为6个字节,在EU执行指令的同时,从内存中取下面一条或几条指令,取来的指令依次存放在指令队列中。它们按“先进先出”的原则存放,并按顺序取到EU中执行。 (4)总线控制电路
总线控制电路将8086的内部总线和外部总线相连,是8086与内存单元和I/O端口进行数据交换的必经之路。 它包括16条数据总线、20条地址总线和若干条控制总线,CPU通过这些总线与外部世界取得联系,从而形成各种规模的8086微型计算机系统。 2.3 80286\\80386\\80486微处理器 2.3.1. 80286微处理器 1. 80286的特征
第二代微处理器。是一种高性能的16位微处理器 3.80286的工作方式
80286微处理器有两种工作方式:实地址方式和保护虚拟地址方式。 80286有24根地址线,在实地址方式下,只使用其中的低20位地址(A0 A19),实际寻址能力和8086的一样为1MB。
30
80286在保护虚拟方式下,同样利用段选择器和偏移量组成逻辑地址。其逻辑寻址空间达2(1 000MB)字节。但由
24
于地址总线只有24根,因而实际的物理存储空间最大为16MB(2B)。 2.3.2 80386微处理器
80386与80286相比,其主要改进是: 80386是一种32位微处理器; 1. 80386的特征 32位结构的微处理器。
32位的物理地址,最大可支持4GB字节的物理内存空间。在保护方式下,其逻辑地址空间可高达64M字节。
2.5 64位微处理器
(1)Itaniums(安腾)处理器
第3章 80x86指令系统
3.1 指令和指令系统 3.1.1概述 1.指令
指令是计算机能够识别和执行的某种操作命令,每条指令都严格规定了在机器运行时必须完成的一种操作。 指令主要由操作码和操作数地址两个部分组成。操作码是用来指出计算机应执行何种操作的一个二进制代码。操作数地址指出该指令所操作(处理)的对象(称为操作数)所在的存储单元的地址。指定操作数所在位置的方法称为寻址方式。
一条指令的取出和执行所必须的时间,称为指令周期。指令周期的大小依指令不同而异。指令周期通常用几个机器周期来表示,一个机器周期又包含若干个时钟周期(或时钟节拍)。 2.指令系统
每一种微处理器有它自己独有的一组指令。大体上分类如下 。 (1) 数据传送指令。 (2) 算术运算指令。 (3) 逻辑运算指令。
(4) 移位运算指令。 (5) 位与位串操作指令。 (6) 控制转移指令。 (7) 输入/输出指令。
(8) 其他指令。包括各种处理器控制指令,它们往往由操作系统专用。 3.精简指令集(RISC)技术
RISC结构的计算机具有相对十分简单的指令系统,指令长度固定,指令格式与种类简单,寻址的方式也少,在处理器中增设大量的通用寄存器,采用硬件控制,从而使指令执行速度提高,同时依靠编译软件的支持调度指令的流水线执行,这样RISC系统获得了较高的性能/价格比。
从80486开始到奔腾系列,均采用了精简指令集(RISC)技术。 3.1.2 指令格式
指令一般由操作码和一个或多个操作数组成。
操作码指示指令所要完成的操作,例如数据传送、加法、减法等;
操作数指示指令执行过程中所需要的数据,如加法指令中加数、被加数等,这些数据可以是操作数本身,也可以来自某寄存器或存储器单元。一条指令中可以包含一个操作数,也可以包含一个以上的操作数。 80x86微处理器机器指令编码的一般格式 : 8086指令格式 3.1.3 指令周期
微处理器的工作过程,不外乎取出指令、执行指令,再取出指令、执行指令,...这样一个循环过程。一条指令的取出和执行所必需的时间,称为指令周期。
指令周期是以一条指令的取出和执行所必须的时间而定义的,其时间的基准是微处理器时钟周期。 3.2 寻址方式 1. 立即寻址
立即寻址又称立即数寻址。操作数紧跟在操作码之后,直接放在指令中,这种操作数称为立即数。立即数规定只能为整数。立即数可以是8位或16位,若是16位,则低字节数放在低位地址中,高字节数放在高位地址中。例如: MOV AX ,2056H
MOV指令是一个数据传送指令,它的功能是将数据2056H送AX寄存器,执行后,AL中为56H,AH中为20H。 举例
MOV AX ,3912H
这条语句中,MOV指令是一个数据传送指令,它的功能是将数据3912H送入AX寄存器,执行后,AL中为12H,AH中为39H。 直接寻址
在直接寻址方式下,操作数存放在存储单元中,该存储单元的16位段内偏移地址(又称有效地址EA)紧跟在操作码之后,直接包含在指令中,存放在代码段区域内。
如果指令中未指定段跨越前缀,即未指明操作数存放在哪一段中,则默认操作数存放在数据段中。操作数的物理地址为:物理地址=16d³[DS]+ 指令中16位地址偏移量(即有效地址EA)
如果操作数存放在数据段以外的段中,则应在指令中指定段跨越前缀。 举例
MOV AX,DS:[2000H] ;将数据段中偏移地址为2000H中的数送给AL,;2001H中的数送给AH 如果(DS)=1000H,(12000H)=1234H,则EA=2000H,物理地址为12000H 。 寄存器寻址 1.特征
操作数存放在指令指定的寄存器中。
对于8位操作数,寄存器可以为AL,AH,BL,BH,CL,CH,DL,DH中的任一个,对于16位操作数,寄存器可为AX,BX,CX,DX,SI,DI,SP或BP之一。
在寄存器寻址方式下,操作数从寄存器取得,而无需访问存储器来获取操作数,因此执行速度较快。 寄存器寻址举例
MOV DX,AX ;将AX中的内容送入BX
如果指令执行前(AX)=5308H,(DX)=1040H
则指令执行后(DX)=5308H,(AX)保持不变,如图4-3所示。 寄存器间接寻址 1.特征
在寄存器间接寻址方式下,操作数存放在存储单元中。操作数地址的16位段内偏移地址包含在寄存器BX、BP、SI和DI之一中,这些寄存器由指令指定。
如果指令中未指定段跨越前缀,则寻址时,对于BX、SI、DI寄存器,默认操作数在数据段中,操作数的物理地址为: 物理地址=16d³[DS]+[BX]/[SI]/[DI]
对于BP寄存器,默认的段寄存器为SS,操作数的物理地址为: 物理地址=16d³[SS]+[BP]。 举例
MOV AX,[SI]
如果(DS)=1000H,(SI)=2000H,(12000H)=1234H,则该指令操作过程如图所示。 寄存器相对寻址 1.特征
操作数存放在存储单元中,其有效地址由一个基址或变址寄存器的内容加上指令中指定的一个8位或16位偏移地址来得到。即
[BX] [BP]
有效地址EA= [SI] +(8位或16位偏移量) [DI]
如果指令中未指定段跨越前缀,则寻址时,对于BX、SI、DI寄存器,段寄存器使用DS,操作数的物理地址为: 物理地址=16d³[DS]+[BX]/[SI]/[DI]+(8/16位偏移量) 对于BP寄存器,段寄存器使用SS,操作数的物理地址为: 物理地址=16d³[SS]+[BP]+(8/16位偏移量) 举例
MOV AX,COUNT[SI] 或 MOV AX,[COUNT+SI]
若(DS)=1000H,(SI)=2000H,COUNT=3000H,(15000H)=1234H,其寻址过程则如图所示。 基址加变址寻址 1.特征
操作数存放在存储单元中,其有效地址为一个基址寄存器的内容加上一个变址寄存器的内容,这两个寄存器均由指令指定。即:有效地址EA=[BX] +[SI] [BP] [DI]
如果无段跨越前缀,对于基址寄存器使用BX,则默认的段寄存器为DS,操作数的物理地址为: 物理地址=16d³[DS]+[BX]+[SI]/[DI]
如果基址寄存器使用BP,则默认的段寄存器为SS,操作数的物理地址为: 物理地址=16d³[SS]+[BP]+[SI]/[DI] 举例
MOV AX,[BX][SI] 或 MOV AX,[BX+SI]
若 (DS)=1000H ,(BX)=2000H ,(SI)=1000H,(13000H)=1234H,其寻址过程如图所示。 相对的基址加变址寻址 1.特征
操作数存放在存储单元中,其有效地址是一个基址寄存器的内容加上一个变址寄存器的内容,再加一个8位或l6位的偏移量。基址寄存器、变址寄存器和偏移量由指令指定。
当基址寄存器为BX时,使用DS为段寄存器;当基址寄存器为BP时,使用SS为段寄存器。
物理地址=16d³[DS]+[BX]+[SI]/[DI]+(8/16位偏移量) 或 物理地址=16d³[SS]+[BP]+[SI]/[DI]+(8/16位偏移量) 2.举例
MOV AX,COUNT[BX][SI]
或 MOV AX,COUNT[BX+DI] 或 MOV AX,[COUNT+BX+DI]
设(DS)=1000H,(BX)=2000H,(SI)=1000H,COUNT=0300H,(13000H)=1234H,其寻址过程如图所示。 例题
已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21102)=B7H,(21203)=65H,内存单元的值如图所示。试给出下列各条指令执行完后AX寄存器的值。 (1)MOV AX,1200H
答:执行后,(AX)=1200H (2)MOV AX,BX 答:执行后,(AX)=0100H (3)MOV AX,[1200H]
答:源操作数的段地址=DS=2000H,有效地址=1200H,
源操作数的物理地址=2000H³16+1200H=21200H,指令执行后,(AX)=4C2AH 3.3 80X86指令系统 3.3.1数据传送指令
数据传送指令用于寄存器、存储单元、或输入输出端口之间传送数据或地址。8086/8088有14种数据传送指令,可分为4类:
通用数据传送指令 输入输出数据传送指令 地址传送指令 标志传送指令。 通用数据传送指令 1.通用数据传送指令 (1)传送指令 MOV
指令格式: MOV DST,SRC
指令执行的操作:(DST)(SRC)
MOV是指令助记符,DST是目的操作数,SRC是源操作数。MOV指令的功能是将字节或字数据从源地址传送到目的地址。源操作数可以是通用寄存器、段寄存器、存储器和立即数,目的操作数可以是通用寄存器、段寄存器(CS除外)和存储器。 MOV指令用法
MOV AL,BL ;BL中8位数据送AL MOV CX,SI ;SI中16位数据送CX
MOV AX,[BX] ;由BX寻址的两个内存单元的内容送AX MOV [DI],AX ;累加器内容送DI寻址的两个内存单元 MOV CX,[1000H] ;将由EA=1000H寻址的两单元的内容送CX MOV指令用法
MOV [BX][SI],DX; 将DX的内容送BX+SI 寻址的两内存单元
MOV AX,[BP][DI]; 将BP+DI寻址的内存 单元的内容送AX MOV CL,77H; 立即数送CL
MOV BX,DATA1; 将符号地址DATA1的 存储内容送 BX MOV指令时应注意:
MOV指令是传送8位数据还是16位数据,取决于指令中所涉及的寄存器是8位还是16位,或者取决于立即数的形式; MOV指令中的源操作数或目的操作数两者中,至少有一个是用寄存器指出的; MOV指令不能在两个内存单元间传送数据; MOV指令的执行不影响标志寄存器的内容 。 不正确的 MOV指令用法
MOV CX,AX;不能用MOV指令给代码段寄存器送数,但可其他段寄存器送数。 MOV DX,EX;不允许如此送数。 MOV DX,12H;不允许如此送数。
MOV [BX] ,12H;未指明[BX]所指定的偏移地址是字节数据地址还是字数据地址。 MOV DX,DH;源操作数与目的操作数的位数不同。
MOV [BX+BP],AX;目的操作数使用了两个基址寄存器。 (2)PUSH 指令 指令格式:PUSH SRC
指令操作:将字压入堆栈。源操作数可以是任一段寄存器、通用寄存器和存储器。用法例子如下: PUSH AX ;将AX内容推入堆栈 PUSH DS ;将DX内容推入堆栈
PUSH [BX+DI] ;将BX+DI和BX+DI+1两单元的内容推入堆栈。 (3)POP 指令 指令格式:POP DST 指令操作:将字从堆栈弹出至目的操作数。目的操作数规定与PUSH相同,只是POP指令不允许使用CS。 用法例子如下: POP AX ;将栈顶两单元弹出送AX POP DS ;将栈顶两单元弹出送DX
POP BUFFER ;将栈顶两单元弹出送BUFFER和BUFFER+1两单元 (4) XCHG 指令
指令格式:XCHG OP1,OP2 指令操作:源、目的操作数之间交换一个字节或字的数据。源或目的操作数只能取通用寄存器或通用寄存器与存储器。三种用法例子如下:
XCHG AX,CX ;CX和AX之间进行字交换 XCHG AL,BL ;AL和BL之间进行字节交换
XCHG AX,[BP+DI];AX的内容和BP+DI,BP+DI+1两单元内容交换 (5)XLAT 指令
XLAT指令的功能是(AL)[BX+AL],即将BX寄存器内容加上AL寄存器内容作为操作数的偏移地址,从这个地址取一字节内容送AL寄存器。 2.输入输出数据传送指令
输入输出指令可以分为两大类:一类是直接输入输出指令;另一类是间接输入输出指令。 (1)输入指令 IN
指令格式:IN 累加器,端口地址
指令功能是将数据从输入端口传送到累加器。用法例子如下: IN AL,PORT ;将PORT端口的一字节内容送AL IN AX,ROPT ;将相邻两端口地址的内容送AX
输入指令 IN
间接输入指令的例子如下。假定在执行这些指令前,在DX寄存器中已用传送指令设置好端口号。 IN AL ,DX ;从DX所指的端口中读取一个字节
IN AX ,DX ;从DX和DX+1所指的两个端口中读取一个字 (2).输出指令 OUT
指令格式:OUT 端口地址,累加器
指令功能是将数据从累加器传送到输出端口中。用法例子如下: OUT PORT,AL;将AL的一字节内容送PORT端口
OUT PORT,AX ;将AX的内容送PORT和PORT+1相邻两端口
对于间接输入指令,假定在执行这些指令前,在DX寄存器中已用传送指令设置好端口号。用法例子如下: OUT DX , AL ;将AL的一字节内容送DX所指定的端口
OUT DX , AX ;将AL的内容送DX所指定的端口,AH的内容送DX+1端口输出。 IN指令注意:
IN指令中当端口地址处于0~255之间时,可采用格式:IN AL/AX,PORT,将PORT端口内容送AL或AX寄存器中;当
端口地址大于255时,必须采用格式:
IN AL/AX,DX,先将端口地址送DX,再将DX所指端口内容送AL或AX寄存器中。 OUT指令使用与IN指令相同。 3. 地址传送指令 (1) LEA指令
指令格式:LEA DST,SRC
LEA指令的功能是取有效地址。源操作数必须是一个内存单元地址,目的操作数必须是16位的通用寄存器。此指令将源操作数的地址偏移量送目的操作数。用法例子如下: LEA DI,MAXXl ;将MAXXl地址偏移量送DI
LEA BX,[BP+SI] ;指令执行后,BX中的内容为BP+SI的值。
3.3.2 算术运算指令 1.加法指令 (1)ADD指令
指令格式:ADD DST,SRC
ADD指令实现两个操作数相加,结果送原来存放目的操作数的地方。目的操作数可以是累加器、通用寄存器或存储器操作数。
加法指令可以完成累加器与立即数、或与任一通用寄存器、或与存储单元的内容相加,结果放在累加器中。
加法指令可以完成任一通用寄存器与任一通用寄存器、或与立即数、或与存储单元的内容相加,其“和”放在通用寄存器中。
加法指令也可以实现存储器操作数与立即数、或与累加器、或与通用寄存器内容相加,其¡°和¡±放在存储单元中。 应注意:存储器操作数与立即数相加时,必须指明操作数的类型。ADD指令的执行结果将影响标志位CF、AF、PF、ZF、SF和OF。 (2)ADC指令
指令格式:ADC DST,SRC
ADC指令与ADD类似,不同之处在于两个操作数相加时,还要加上进位标志CF的当前值,结果送原来存放目的操作数的地方。
指令执行结果对标志值的影响与ADD相同 (3)INC指令
指令格式:INC OP
指令完成的工作是操作数OP加l。操作数可以是通用寄存器,也可为存储器操作数。用法例子如下: INC AL ;将AL中的内容加1,结果送AL INC CX ;将CX中的内容加1,结果送CX
该指令执行结果影响标志位SF、ZF、AF、PF和OF,而对CF无影响。
[例]设指令执行前AL寄存器的内容为FFH,执行 INC AL 后,AL寄存器的内容为00H,而对CF无影响。 2.减法指令 (1) SUB指令
指令格式:SUB DST,SRC
该指令完成两个操作数相减,结果放在目的操作数DST中。其规则与加法指令相同。用法例子如下: SUB AL,10 ;(AL)=(AL)-10 SUB CX,BX ;(CX)=(CX)-(BX)
SUB [BP+2],CL ;由BP+2寻址的存储单元的内容减(CL),结果存入该单元 SUB AX,[BX+2] ;(AX)=(AX)-由BX+2寻址的存储单元的内容。 SUB的执行结果影响标志位SF、ZF、AF、PF、CF和OF (2)SBB指令
指令格式:SBB DST,SRC 此指令为带借位减法指令。该指令与SUB基本相同,不同的是两个操作数相减时,还要减去借位标志位CF的当前值。 (3) DEC指令
指令格式:DEC OP
该指令完成对操作数OP减1运算后返回操作数中。操作数可以是寄存器或存储器,例如: DEC AX ;(AX)=(AX)-1
指令执行对标志位CF无影响,但影响标志位SF、ZF、AF、PF和OF。 (4)NEG指令
指令格式:NEG OP
该指令完成对操作数取补,即用零减去操作数,再把结果送回操作数。用法例子如下: NEG AL ;操作数为寄存器 NEG MAXX ;操作数为存储器
该指令执行结果影响标志位SF、ZF、AF、PF和OF,对于CF一般总是CF=1,只有当操作数为O时CF=O。 (5)CMP指令
指令格式:CMP DST,SRC
CMP指令为比较指令。该指令进行两个操作数相减,但不回送结果,结果只影响状态标志位。操作数规定与加法操作数相同。
CMP指令只比较两个数的大小。如果两个数相等,则ZF=1,否则ZF为0。若两个数不相等,则其大小的确定可利用CMP指令执行后的其它标志位来确定。例如,对于无符号数,可利用CF标志值来判断。当CF=1时,则DST<SRC;当CF=O时,则DST>SRC。对于有符号数,则用标志位SF和OF的状态一同判定。 CMP用法
用法例子如下: CMP AX,BX CMP AL,100 CMP AX ,[SI+2]
[例] 设SI寄存器的内容是01BAH,执行指令 CMP SI,0200H
后,SI寄存器的内容仍是01BAH,状态位:P=0;AF置1;符号位CF置1;Z置0。 (6)AAS指令
该指令完成对在AL中的两个非组合的BCD数相减的结果进行校正,在AL中产生一个正确的非组合BCD数的差。 (7)DAS指令
该指令完成对BCD码减法结果的调整。完成对在AL中两个组合的十进制数相减以后的结果进行校正,在AL中产生—个正确的组合十进制数的差。 3.乘法指令 (1)MUL指令
指令格式:MUL SRC
该指令完成源操作数SRC与累加器中的数相乘,结果放在累加器中。参与运算的操作数可以是寄存器或存储器。积为双字节长时,放在AX中;乘积为双字长时,分别存放在DX(乘积的高l 6位)和AX中。 [例]执行下列指令序列 MOV AL,FIRST MUL SECOND
MOV THIRD,AX ;
将内存单元FIRST和SECOND的两个字节的内容相乘,乘积放在由THIRD寻址的两个内存单元内。MUL指令运行结果只影响标志位CF和OF。 (2)IMUL指令
指令格式:IMUL SRC
IMUL指令为带符号数相乘指令,即将源操作数与累加器中的数都作为带符号数相乘,其余与MUL指令相同。用法例子如下: 1字节乘法: ○
IMUL DH ;(AL)乘(DH),有符号数留在AX中。 2字乘法: ○
IMUL DI ;(AX)乘(DI),有符号数放在DX和AX中。 (3)AAM指令
该指令完成对BCD码乘法结果的调整。AAM对在AX中两个非组合的BCD数的乘积进行调整,以得到正确的非组合的BCD数的乘积。调整方法为,用10(0AH)除AL 寄存器,商存AH寄存器,余数存AL寄存器。 [例3] 设AL寄存器为07H,BL寄存器为09H,执行指令 MUL AL ,BL AAM
后,AX寄存器为0603H。 4.除法指令 (1)DIV指令
指令格式:DIV SRC
该指令为无符号除法指令。用指定的源操作数SRC去除累加器中的值,所得商和余数分别放在AL和AH(字节操作)
或AX和DX(字操作)中。
除法指令中进行字节操作时:AX中存放16位被除数,源操作数为8位除数,结果的8位商存放在AL中,8位余数存放在AH中;
进行字操作时:DX存放32位被除数的高位字,AX存放被除数的低位字,源操作数为16位除数,结果的16位商存放在AX中,16位余数存放在DX中。 [例] 下列指令序列 MOV CL,100 DIV CL
完成累加器AX中的数除以100,商在AL中,余数在AH中。 (2)其它除法指令
IDIV:完成带符号数的除法运算。
AAD:BCD码除法结果调整。完成AX中的两位非组合的BCD数在两个数相除之前进行校正。 CBW :字节转换为字。具体操作是按AL的符号位扩展到整个AH中。 CWD:字转换为双字。按AX的符号扩展到整个DX中。 3.3.3逻辑运算和移位指令 1.逻辑运算指令 (1)NOT指令
指令格式:NOT OP
该指令完成对操作数求反,然后送回原处。例如: NOT AL
此指令对标志位无影响。 (2)AND指令
指令格式:AND DST,SRC
该指令实现对两操作数进行按位逻辑¡°与¡±运算,结果送目的操作数。目的操作数可为通用寄存器、存储器,源操作数可以是立即数、寄存器、存储器。用法例子如下:: AND AL,80H AND AX ,BX
AND BETA[DI],SI (3)OR指令
指令格式:OR DST,SRC
该指令是对两操作数进行按位逻辑¡°或¡±运算,结果回送目的操作数。操作数规定与AND相同。例如: OR AL,80H OR BX,SI OR BX,DATA
“或”运算令标志位CF=O,OF=0,其”或”操作后的结果反映在标志位PF、SF和ZF上。 (4)XOR指令
指令格式:XOR DST,SRC
该指令完成对两个操作数进行按位¡°异或¡±运算,结果回送目的操作数。例如: XOR AL,OFH XOR AX,BX
XOR CX,DATA_WORD
XOR执行后,标志位CF=0,OF=0,“异或”操作结果反映在标志位PF、SF和ZF上。 (5)TEST指令
指令格式:TEST OP1,OP2
TEST指令的操作与AND指令完全相同,但结果不回送目的操作数,仅反映在状态标志位上。TEST指令的操作数规定与AND相同,对标志位的影响亦与AND相同,即:CF=0,OF=0,结果反映在标志位PF、SF和ZF上。例如: TEST AX,DX TEST DATA_WORD,SI TEST BETA[BX][SI],CX TEST AL,MAXX1 2.移位指令
移位指令可将寄存器或存储单元的8位或16位的内容向左或向右移动l位或多位。 (1)SAL/SHI指令
指令格式:SAL/SHI OP m
SAL(算术左移)和SHL(逻辑左移)指令将操作数OP左移m位,移位后空出的位填零。操作数可以是寄存器、存储器。
m是移位次数,为1时取立即数,大于l时先将m赋予CL寄存器。例如: SHL AH ,1 或
MOV CL,4 SHL AX,CL (2)SAR指令
指令格式:SAR OP m
该指令为算术右移指令。将指定操作数右移m位,最低位进入标志位CF,其它位依次右移,但符号位(最高位)保
持不变。m的规定与SHL相同。例如: . MOV CL,5 SAR AX,CL (3)SHR指令
指令格式:SHR OP m
该指令为逻辑右移指令。与SAR类似,最低位进入标志位CF,但移位后空位的最高位填0。 3.循环移位指令
8086/8088有四条循环移位指令,它们是: ROL OP m ;左循环移位 ROR OP m ;右循环移位
RCL OP m ;带进位的左循环移位 RCR OP m ;带进位的右循环移位
循环移位指令可对字节或字进行操作,操作数可以是寄存器或存储器。可以移位1次,也可以移位由CL寄存器规定的次数,这时,需先做:
MOV CL,m
ROL和ROR循环移位指令未把标志位CF包含在循环的环中。ROL指令每执行1次,其最高位一方面进入CF,另一方面
返回操作数的最低位;ROR与ROL不同,每执行1次,其最低位一方面进入CF,另一方面循环回操作数的最高位。
RCL和RCR的循环的环中包括标志位CF。RCL每执行1次,操作数的最高位进入CF,而原有CF的内容送到操作数的最低位;RCR每执行1次,标志位的内容送操作数的最高位,而操作数的最低位送CF。
左移一位,只要左移后的数未超过一个字节或一个字的表示范围,则相当于原数乘2,右移一位相当于除2。 3.3.4 串操作指令
串可以是字节串(一组字节)或字串(一组字)。串指令有两类,每类有5种。一类是串操作命令,一类是控制操作重复执行的前缀命令。串操作时,下列寄存器及标志起着特定的作用,程序应根据操作的具体要求先赋予初值。 SI寄存器 源串变址用 DI寄存器 目的串变址用 CX寄存器 重复次数寄存器 AL/AX 扫描值(关键字) FLAGS中标志位:
DF 0表示重复操作中DI、SI应自动增量,1表示自动减量。 ZF 用于控制扫描或比较操作结果 1.基本串操作命令 (1)MOVS指令
该指令将由SI作为偏移地址的源串中的一个字节或字,传送到由DI作为偏移地址的目的串,且相应修改偏移地址,以指向串中下一个元素。传送完一个字节或字后,则依据控制标志位DF和源、目的操作数的属性,修改偏移地址。在使用MOVS指令之前,必须将源、目的操作数的偏移地址分别送SI、DI,并设置DF。
(2)MOVSB/MOVSW指令
字节串/字串传送命令,不带操作数,地址修改MOVSB命令以±l形式修改偏移地址,
MOVSW以±2形式修改偏移地址。其余与MOVS相同。 (3)MPS指令
指令格式:MPS DST,SRC 字节串或字串比较指令。从由SI作为偏移地址的源串中减去由DI为偏移地址的目标串(字或字节),减的结果不送至任何操作数,仅反映到标志位上。同时修改源、目的串的偏移地址,以指向串中的下一个元素。标志位AF、CF、OF、PF、SF和ZF反映两串元素之间的关系。 (4)CMPSB/CMPSW
字节串/字串比较,无操作数。 (5)LODS OP
读出字节串或字串。从由SI为偏移地址的源串中读出一个字节或一个字送AL或AX,同时修改偏移地址,指向串的
下一个元素。此指令对标志位无影响。 (6)LODSB/LODSW
字节或字操作,无操作数。 (7)SCAS DST
搜索(扫描)串元素命令。从AL(字节操作)或AX的内容中减去由DI作为偏移地址的目标串元素。结果不改变累加器的值,只改变标志位。利用SCAS指令可以进行搜索,此时将搜索关键字放在AL(字节)或AX(字)中,用于查找字符串中有无此关键字,并记录查找次数。 (8)SCASB/SCASW
搜索串中字节或字元素,无操作数。 (9)STOS OP
存储字节或字串的指令。意义为将AL(字节)或AX(字)中内容,存储到以DI为偏移地址的目的串中,同时修改偏移地址,指向串的下一个元素。 (10)STOSB/STOSW
存储字节串/字串,无操作数。 2.重复前缀 (1) REP
可作为串传送、串比较、串存储、串搜索指令的前缀。最常用的是串传送指令,使用时数据长度必须放在CX中。 (2) REPE/REPZ
用于串传送、串搜索指令的前缀,使紧随其后的指令重复执行,直到CX为0或ZF=0为止。 (3) REPNE/REPNZ
用于串比较或串搜索指令的前缀,使其重复执行直到CX=0或ZF=l为止。 3.3.5程序控制指令
8086/8088程序中指令的执行顺序是由代码寄存器CS和指针IP来决定的。程序转移指令用来改变这两个寄存器的内容,从而改变程序的执行顺序。转移指令分四组:无条件转移指令、条件转移指令、循环控制指令及有关中断指令。
1.无条件转移指令
(1) JMP OP(标号)
无条件转移到目的单元,无返回值。
段内直接转移,范围为段内任何位置(±32K)。若转移范围在±127B之内时,则称之为段内短转移。例如: JMP SHORT LOOPl ;段内短转移
段间直接转移,可转到程序的任何位置,例如: JMP FAR PTR LOOPl
此时需用LOOPl的段地址和偏移地址取代当前的CS和IP。 段内间接转移,可转移到段内的任何位置,例如: JMP CX
指令执行时用CX的内容取代当前IP,而CS不变。 段间间接转移,可转移到程序的任何位置。例如: JMP SEGOFF
指令执行时,在由SEGOFF的段和偏移量所确定的双字单元中,用较小地址的字单元内容取代IP,较大地址字单元内容取代CS。 (2) CALL OP 调用指令。 (3) RET 返回指令。 2.条件转移指令
条件转移指令以将上一条指令的执行结果为测试条件,各条件转移指令所用测试条件不同,满足条件时则转移到指令规定的转移地址去执行,否则继续按原顺序执行。本类指令的转移的目的地址在土127字节以内,并且都不影响标志位。本类指令大体上分三类: (1)单个标志位条件转移指令
(2)无符号数的条件转移指令(见表3-4)
(3)带符号数的条件转移指令(见表3-5)
3.循环指令
循环控制指令用来控制一个程序段的重复执行。 (1) LOOP 标号
目标地址在+1~128字节以内,重复次数置CX中且CX0时循环。它等效于下述2条指令的组合: DEC CX JNE AGAIN
4.中断指令
中断指令允许程序在各需要时去启动中断服务程序。 INT n 启动由类型码n所规定的中断服务程序。 INTO 溢出中断。
IRET 中断返回。
第4章 汇编语言程序设计
4.1汇编语言的基本概念 1.机器语言
计算机能够直接识别并执行某种操作的二进制代码串称为机器指令,全部机器指令的集合构成计算机的指令
系统。这个指令系统能直接为计算机识别和执行,称为机器语言。 2.汇编语言
用指令助记符、符号地址、标号等书写程序的语言,称为汇编语言。用汇编语言编写的程序,称为汇编语言源程序。
汇编语言的基本概念 3. 汇编语言源程序
汇编语言源程序是由一行行汇编语句组成的。每一行是一个语句,表示一种操作,并在书写格式和意义上与机器语言基本一致。汇编语言源程序必须翻译转换为机器语言程序后,计算机才能识别和执行。 4.汇编程序
将汇编语言源程序翻译成机器语言程序的过程叫汇编。实现这种功能的语言程序称为汇编程序。 将机器代码转换成汇编语言语句的过程称为反汇编。
第5章 总线 学习要点:
微型机算机总线的基础知识 微机常用总线的结构和功能 5.1 总线 5.1.1 概述
“总线”(BUS):是指计算机系统中各部件所共享的一组连线,是一组公共信息传输线路中多个部件之间公用的数据通道。也就是说,微型计算机系统中,各部件之间传输信息的通路叫总线,两个部件之间的专用连线就不能叫总线。
内部总线:微处理器是一种能完成计算机中央处理部件功能的大规模集成(LSl)或超大规模集成(VLSl)芯片,芯片内部传输信息的通路称为内部总线。 芯片总线
芯片总线: 微型计算机是由微处理器(CPU)、存储器、输入/输出(I/O)电路及译码电路、时钟电路等支持逻辑电路芯片组成的,这种连接芯片与芯片之间的信息传输通路,称之为芯片总线或元件级总线。 系统总线
系统总线:
微型计算机系统(MCS)是在微型计算机基础上加上外围设备、系统软件等组成的,为了使系统灵活、简便、便于开发与维修,多数微型计算机系统都采用模块板结构,每个模块板具有独立的功能。例如由CPU、时钟电路及支持逻辑电路组成的主板、彩色显示控制板、软盘驱动板、打印机接口板等,各电路板之间的信息传输通路,称之为系统总线。 1. 总线特点
(1)共享性,可同时挂接多个部件和设备。
(2)每个设备和部件通过门电路与总线中的信号线相连。
2. 总线标准的特性 (1)物理特性
指的是总线物理连接的方式,包括总线的根数、总线插头、插座形状、引脚排列等。 (2)功能特性
描写总线中每一根线的功能。总线分成3组:
地址总线:其宽度表示直接访问存储器的地址范围。
数据总线:其宽度表示访问一次存储器或外部设备最多能够交换数据的位数。 控制总线:控制总线包括CPU与外界联系的各种控制命令。
总线按照总线传送信息的方向可分为单向总线和双向总线。
根据总线传送信息的类别,可以把总线分为数据总线、地址总线和控制总线。 3. 总线分类
按在系统的不同层次、位置,总线可分为如下几类:
(1)片内总线:是指在微处理机芯片内部的总线。例如CPU芯片中的内部总线。
(2)主板局部总线:是指在印刷电路板上连接各插件的公共通路。例如CPU及其支持芯片与其局部资源之间的通道即属于主板局部总线。目前,PC系列机使用比较多的总线有ISA、EISA、VESA、PCI以及AGP等标准总线。 3. 总线分类
(3)系统总线:是指模块式微处理机机箱内的底板总线,用来连接构成微处理机的各插件板。使用比较多的系统总线有:16位的MULTIBUS I、STDBUS和32位的MULTBUSⅡ、STD32以及VME等。
(4)外部总线:是用于微处理机系统与系统之间、微处理机系统与外部设备之间以及微处理机系统和仪器仪表之间的通信通道。例如,串行通信的EIA-RS232C总线。 4. 目前微型计算机系统中使用的系统总线
(5)PCI总线:是外设互连总线的简称,它是一种32/64位标准总线。PCI总线是一种与CPU隔离的总线结构,并能与CPU同时工作。这种总线数据传输率为132MB/s,适用于Pentium微型计算机。
5. 总线的信息传送方式 总线的信息传送方式有三种:
(1)同步传送:这种方式采用精确稳定时钟作为各设备操作的基准时间。传送过程中,主、从设备都必须按严格的时间规定完成相应的动作。
(2)异步传送:这种方式要求总线上的各主、从设备操作速度要严格匹配。 5.2.2 系统总线工作原理
在微机系统中,CPU是在时钟信号控制下,按节拍有序地执行指令序列。从取指令开始,经过分析指令、对操作数寻址,然后执行指令、保存操作结果, 这个过程称为指令执行周期。在一个指令执行周期中, 通过总线进行一次对存储单元或I/O端口读或写的操作过程称为总线周期。8086系统总线周期由四个时钟组成(T1~T4),需要时还要加入数量不定的等待周期(Tw)。若在完成一个总线周期后不发生任何总线操作,则填入空闲状态时钟周期(Ti);若存储器或I/O端口在数据传送中不能以足够快的速度作出响应,则在T3与T4间插入一个或若干个Tw。 1. 读周期的时序 读周期的时序
一个基本的读周期一般包含如下几个状态。
T1状态: 信号有效,指出读内存还是I/O;地址输出分高4位和低16位;ALE输出地址锁存信号; 信号表示高8位数据总线上信息可用。
T2状态:地址信号消失,AD15~AD0进入高阻状态,为读入数据作准备。 T3状态:若存储器和外设速度足够快,此时CPU 接收数据。
Tw状态:在存储器和外设速度较慢时,还要在T3之后插入一个或几个Tw。 T4状态:CPU对数据总线采样,获得数据。 2. 写周期的时序 写周期的时序
一个基本的写周期一般包含如下几个状态。
T1状态: 信号有效,指出写内存还是I/O;
地址输出分高4位和低16位; ALE输出地址锁存信号; 信号表示高8位数据总线上信息可用。 T2状态:CPU往AD15-AD0 发出数据。 T3状态:CPU继续提供状态信息和数据。
Tw状态:在存储器和外设速度较慢时,还要在T3之后插入一个或几个Tw。
T4状态:CPU撤除信息。
5.4 外部总线
第6章 存储器
6.1微型计算机存储器基础
存储器是存放数据和程序的部件,是一个具有专用功能的设备。任何以微型计算机为中心组成的微型机系统都必须配置一定容量的存储器。
1. 存储器的分类 (如图6-1)
如图6-1 如图6-2
2. 微型计算机存储器系统
微型计算机存储器系统主要由主存储器、高速缓冲存储器、辅助存储器以及管理这些存储器的硬件和软件组成。
如图6-2所示。
主存储器通常安装在主机系统板上,存放当前正在运行的程序和数据。主存储器由半导体存储器RAM和ROM组成,
目前装机容量一般在1GB 2GB。 3. 存储器的主要技术指标 (1)存储容量
存储容量是存储器所容纳的二进制位的总容量,或存储器所包含的存储单元的总位数。对于按字节编址的存储器
N N
而言,N位地址码的存储器最大可编址2个存储单元,其容量为2 B。 6.2半导体存储器
(1)微型计算机中主存储器由半导体存储器芯片组成。 (2) 半导体存储器根据其基本功能的不同分为只读存储器(ROM)和随机存取存储器(RAM)。RAM又依存储单元电路的构成原理及是否需要刷新分为静态RAM(SRAM)和动态 RAM(DRAM)。 6.2.1 随机存储器RAM
RAM是一种既能写入又能读出的存储器。RAM只能在电源电压正常时工作,一旦断电, RAM内的信息便完全丢失。 1. SRAM
RAM是静态随机访问存储器的简称。SRAM存储机理是利用双稳态触发电路的某一种稳定状态表示二进制信息的。集成度低。由于RAM的基本存储单元是双稳态触发器,每一个单元存放一位二进制信息,故所存信息不需进行刷新。但SRAM的存取速度很高,多用于要求高速存取的场合,例如高速缓冲存储器。 2. 动态存储器DRAM
DRAM是一种以电荷形式来存储信息的半导体存储器。它具有集成度高、功耗小、存取速度快、价格低廉的特点。如果电容充有电荷,则称为存储“1”;如果电容放电,没有电荷,则称为存储“0”。由于用电容存储信息,电容上的电荷会因各种泄漏电流而泄漏掉,导致信息丢失,因此,DRAM需定时为电容补充电荷,即DRAM需要动态刷新。 单管的DRAM基本存储电路
DRAM集成度高,容量大,每位成本低,各类计算机目前都是用大量的DRAM芯片来组成主存储器。
6.3 Cache存储器
Cache存储器是介于CPU和主存储器之间的¡ª个容量小、但速度接近于CPU的存储器,一般装在CPU内部。在微机运行中,从主存储器读写数据的速度,远远跟不上高速CPU的运行速度。为此,将一段当前使用频繁的程序段和数据段,存放在高速缓冲存储器中,当CPU需要从主存中读出程序和数据时,可同时访问主存和高速缓存。如果所需要的内容恰好在高速缓存中,则CPU可很快获得,称为¡°命中¡±;否则再在主存中读取。当CPU发现高速缓存中已不再是最活跃的信息时,就将内容更换,将主存中另一段当前活跃的程序和数据调入高速缓存。这样,CPU直接访问的存储空间,可以有像主存那样大的容量,而读写速度接近于CPU。目前,高档微机中已配置高速缓冲存储器。 2. Cache存储器的结构
Cache容量与主存容量相比是很小的,目前高档微机主存容量配置大体是1GB到2GB的情况下,Cache的典型值是8KB512KB。
现代微型计算机中的Cache存储器一般分成两部分:一部分直接集成在微处理器芯片上,称为一级Cache。一级Cache由于在芯片内部,离CPU近,数据位宽,存取速度更快;但由于片内集成成本高等原因,其容量不可能做得很大,当前Pentium为16KB。为了扩充Cache存储器容量,在片外又设计了二级Cache。二级Cache容量较大,奔腾机的二级Cache容量为256KB或512KB。使用两个分离的指令Cache和数据Cache可以克服CPU对Cache读取指令和数据时可能产生的冲突,效率更好。 第7章 输入输出与接口技术 学习要点:
接口的基本概念、功能、分类 I/O接口与存储器编址方式 I/O接口地址编码方法
CPU与外设的数据传送方式 7.1 接口的基本概念
如前所述,微型计算机是由CPU、存储器和许多诸如键盘、显示器、打印机等输入、输出设备组成的。输入、输出设备通过系统总线与CPU进行信息交换,根据CPU的要求进行工作,但是他们往往不能与CPU直接相连,通过一个连接部件进行缓冲和协调,完成CPU与外部设备之间信息的类型和格式的转换。这个连接部件就是接口电路,又称为I/O接口。接口的作用和地位如图7-1所示。 7.1.1 接口功能及结构 1. I/O接口功能
I/O接口的基本功能是能够根据CPU的要求对I/O设备进行管理与控制,实现信号逻辑及工作时序的转换,保证CPU与外设之间能进行可靠有效的信息交换。主要功能如下:
(1) I/O接口作为微型机与外设之间传送数据的寄存、缓冲站,以适应两者速度上的差异。 (2) 设置地址译码和设备选择逻辑,以保证CPU按照特定的路径访问选定的I/O设备。 提供CPU与外设之间交换数据所需的控制逻辑和状态信号,以保证接受CPU输出的命令或参数,按指定的命令控制设备完成相应的操作,并把指定设备的工作状态返回给CPU。 I/O操作
通常所谓的I/O操作,是指I/O端口操作,而不是I/O设备操作,即CPU访问的是与I/O设备相连的I/O端口,而不是笼统的I/O外设,如图7-2所示。 2. I/O接口的基本结构
I/O接口电路通常为大规模集成电路。虽然不同功能的基本接口电路的结构有所不同,但大体上都是由寄存器和控制逻辑两大部分组成,如图7-3所示。 I/O接口的基本结构 (1)寄存器
寄存器是接口电路的核心。通常所说的接口,大都是指这些寄存器,主要有: 数据缓冲寄存器
数据缓冲寄存器分为输入锁存器和输出缓存器两种。输入锁存器用来暂存外设送来的数据;输出缓存器用来暂存处理器送往外设的数据。数据缓存器实现高速的CPU与慢速的外设之间数据的传送。 控制寄存器
控制寄存器用于存放CPU发来的控制命令和其它信息,以确定接口电路的工作方式和功能。控制寄存器是只写寄存器,其内容只能由CPU写入,而不能读出。
状态寄存器
用于保存外设现行各种状态信息。它的内容可以被处理器读出,从而使CPU了解外设状况及数据传送过程中发生的事情,供CPU作出正确的判断,使它能安全可靠地与接口完成交换数据的各种操作。特别当CPU以程序查询方式同外设交换数据时,状态寄存器更是不可少。CPU通过查询外设的忙/闲,正确/错误,就绪/不就绪等状态,才能正确地与之交换信息。 7.2.1 接口编址方式 I/O端口的编址方式
要使I/O端口能被CPU访问,系统必须为I/O端口分配地址。I/O端口的编址主要有两种方式: 1. 端口统一编址方式
该方式是把每一个端口视为1个存储单元,并赋予相应的存储器地址。微处理器访问端口,如同访问存储器一样,所有访问内存的指令同样适合于I/O端口。
端口统一编址方式的优点在于I/O端口的地址空间大,访问I/O端口与内存单元相同看待,符合硬件最优化的原则。其缺点是要占用存储空间,I/O操作时间较长,程序可读性差 I/O端口的编址方式
2. 端口独立编址方式
该方式是把所有I/O端口看作1个独立于存储器空间的I/O空间。在这个空间内,每个端口都被分配1个地址与之对应。微处理器对I/O端口和存储单元的不同寻址是通过不同的读写控制信号-IOR,-IOW,-MEMR,-MEMW来实现的。由于系统需要的I/O端口寄存器一般比存储器单元要少很多,因此选择I/O端口只需用部分地址线即可。
要访问独立于存储空间的端口,必须用专门的I/O指令。通常这种I/O指令有2种,即输入指令IN,输出指令OUT及其相关的指令组。 /O端口的编址方式比较
端口独立编址方式的优点在于I/O端口地址不占用存储器地址空间,I/O端口地址译码器较简单,寻址速度较快。使用专用I/O指令和真正的存储器访问指令有明显区别,前者可使程序编制的更清晰,可读性强。其缺点是专用I/O指令类型少,使程序设计灵活性差。使用I/O指令只能在累加器AX和I/O端口间交换信息,处理能力不如端口统一编址方式强。
7.3 CPU与外设之间的数据传送方式 由于CPU与外设的工作速度相差很大,不同外设的工作速度差别也很大,为保证CPU与外设之间正确而有效地进行数据传输,针对不同的外设,不同的使用场合采用不同的数据传送方式。 一般来说,CPU与外设之间的数据传送方式有三种: 程序查询方式 中断方式 DMA方式
7 .3.1 程序查询方式
程序查询方式是指在程序控制下进行信息传送,分为无条件传送方式和条件传送方式。 1. 无条件传送方式
CPU不查询外设的状态而直接进行信息传输,称为无条件传送方式。该方式适用于对一些简单外设的操作。如开关、LED等。
在无条件传送方式下,程序设计简单。不过,无条件传送实际上是有条件的,那就是外设的操作时间是已知的,
以保证每次传送时,外设处于就绪状态。此方式用得较少。 2. 条件传送方式
条件传送方式也称为查询方式传送。用条件传送方式时,CPU通过程序不断查询外设的状态,只有当外设准备好时,才进行数据传输。采用该种方式时,接口电路中有反映接口或外设状态的端口供CPU访问查询。条件传送过程 :
条件传送过程操作步骤 操作步骤如下:
(1)CPU从状态端口中读取状态字。
(2) CPU检测状态字的对应位,判断是否“准备好”,如果没有准备好,则回到前一步重新读取状态字,继续判断。如准备好,则开始传送数据。
例如,如果一个输出设备接口的状态端口(8位)的地址位ADDR,状态端口的D0位为1,表明准备好。数据端口(8位)的地址为PDATA,采用条件传送方式传送1字节数据(数据在BL中)的 程序如下:
条件传送方式传送1字节数据的程序: LOOP1:MOV DX,ADDR
IN AL,DX ;读入输出设备的状态
TEST AL,01H ;检测状态端口的D0位是否为1
JZ LOOP1 ;否,则再次读入输出设备状态,进行检测 MOV AL,BL
MOV DX,PDATA ;将BL中数据从数据端口输出 OUT DX,AL 查询方式评价:
查询方式传送比无条件传送可靠,因此使用场合较多。但在查询方式下,CPU必须不断地查询外设状态,只有当外设准备好时,才能进行数据传输。这样使得CPU工作效率极低。
另外用查询方式时,如果一个系统有多个外设,那么CPU只能轮流对每一个外设进行查询,而不能及时响应外设的数据传送要求,因而实时性较差。
7.3.2 中断方式
当外部设备准备好向CPU传送数据,或者外设已准备就绪接收CPU的数据,或者有某些紧急情况要求处理时,如定时时间到等。这时,外设向CPU发出中断请求。CPU接收到请求并在一定条件下,暂时停止执行原来的程序而转去中断处理,处理好中断服务再返回继续执行原来程序,这就是一个中断过程。下面将中断过程分成3个阶段来讨论。
中断过程分成3个阶段1:中断申请
中断是CPU被动地等待外设要求服务,而前面谈到的异步查询则是CPU主动地查询外 设。因而,中断大大提高了CPU的利用率。发出中断请求的外部设备称为中断源,一般中断源有: (1)数据输入/输出外设请求中断; (2)定时时间到申请中断; (3)满足规定状态申请中断; (4)电源掉电申请中断; (5)故障报警申请中断; (6)程序调试设置中断等。
中断过程分成3个阶段2:中断响应
CPU在没有接到中断请求信号时,一直执行原来的程序(称主程序)。由于外设的中断申请随机发生,有中断申请后CPU能否马上去为其服务呢?这就要看中断的类型,若为非屏蔽中断申请,则CPU执行完正在执行的那一
条指令后,做好保护工作即可去服务;若为可屏蔽中断申请,CPU只能得到允许才能去服务。这就是说CPU能否在接到中断申请后立即响应要视情况而定。 中断过程分成3个阶段2:中断响应
对可屏蔽的中断申请,CPU要响应,必须满足以下三个条件: 有中断请求;
CPU被允许中断; CPU执行完现行指令。 CPU响应中断要自动完成3项任务: 关闭中断;
CS,IP以及FR的内容推入堆栈;
中断服务程序段地址送入CS中,偏移地址送入IP中。 中断过程分成3个阶段3:中断处理
一旦CPU响应中断,就可转入中断服务程序之中.中断处理要做以下6步: (1)保护现场
CPU响应中断时自动完成CS和IP寄存器以及标志寄存器FR的保护,但主程序中使用的寄存器的保护则由用户视使用情况而定。由于中断服务程序中也要用某些寄存器,若不保护这些寄存器在中断前的内容,中断服务程序会将其修改,这样中断服务程序返回主程序后,程序就不能正确执行。对寄存器的保护,实质上是通过执行PUSH指令将需要保护的寄存器内容推入堆栈而完成的。 中断过程分成3个阶段3:中断处理 (2)开中断
CPU接收并响应一个中断后自动关闭中断,其好处是不允许其他的中断来打断它。但在某些情况下,有比该中断更优先的情况要处理,此时,应停止对该中断的服务而转入优先级更高的中断处理,故需要再开中断,若没有更高级别的中断在此不必开中断。 (3)中断服务
中断服务程序的核心就是对某些中断情况的处理,如传送数据,处理掉电紧急保护,各种报警状态的控制处理等。
(4)关中断
由于有上述第(2)点的开中断,因而在此处应对应一个关中断过程,以便下面恢复现场的工作顺利进行而不被中断。
中断过程分成3个阶段3:中断处理 (5)恢复现场
在返回主程序前要将用户保护的寄存器内容从堆栈中弹出,以便返回后继续正确执行主程序。恢复现场用POP指令。要注意的是堆栈为先进后出型数据结构,保护现场时,寄存器的入栈次序与出栈时的次序是相反的。 (6)开中断返回
此处的开中断对应CPU响应中断后的自动关闭中断。在返回主程序前,也就是中断服务程序的倒数第二条指令往往是开中断指令,最后一条是返主指令。执行返主指令后,CPU自动从现行堆栈中弹出CS,IP和FR的内容,以便继续执行主程序。 7.3.3 DMA方式
采用程序传送和中断传送方式进行数据传送时,每次数据传送时,CPU或多或少的都要执行一些与数据传输无直接关系的操作,这对低速外设或在数据传输量不大的情况下,对传输效率的影响还不明显,但如果I/O设备的数据传输速度较高、数据传输量较大,如硬盘,则CPU如采用程序传送或中断方式传送与这样的外设进行数据传输,即使尽量压缩非数据传输的操作,仍有可能无法满足要求。在这种情况下,就必须采用按数据块传输的直接存储器传输方式,即DMA方式。 DMA方式
所谓DMA方式,即外设在专用的接口电路DMA控制器的控制下直接和存储器进行高速数据传送。采用DMA方式时,如外设需要进行数据传输,首先向DMA控制器发出请求,DMA控制器再向CPU发出总线请求,要求使用系统总线。CPU响应DMA控制器的总线请求并把总线控制权交给DMA控制器,然后在DMA控制器的控制下开始利用系统总线进行数据传输。数据传输结束后,DMA控制器自动交出总线控制权。整个数据传输过程与CPU无关。这样,数据传输速度基本上取决于外设和存储器的速度。 7.4 串行、并行接口技术 7.4.1串行接口
1. 计算机通信的基本概念 所谓通信,是指计算机与外部设备、计算机与计算机之间的信息交换。通信的基本方法有并行通信和串行通信两种。图7-10为这两种通信方式的示意图。其中(a)图为并行通信方式,(b)图为串行通信方式。并行通信是数据的各位(8位或16位)同时传送,有多少位数据就需要多少根传输线,数据的各位是同时到达对方。而串行通信则只需要一对传输线,数据的各位按时间顺序依次传送。故串行通信节省传输线,特别是当数据位较多、传输距离远时,这一优点就更为突出。 串行和并行通信方式示意图 2. 串行通信
串行通信,就是数据按时钟以一位一位传送的方式进行通信,其特点是通信线路简单,通信成本低,对于远距离通信,可以利用电话线和调制解调器(Modem)进行。缺点是串行通信传送速度较慢。 (1)发送时钟和接收时钟
发送时钟用来控制串行数据的发送。数据发送过程是:把并行的数据序列送入移位寄存器,然后通过移位寄存器,由发送时钟触发进行移位输出,数据位的时间间隔取决于发送时钟周期。接收时钟用来控制串行数据的接收,数据接收过程是:把由传输线送来的串行数据序列,用接收时钟作为输入移位寄存器的触发脉冲,逐位打入移位寄存器,最后装配成并行数据序列。 (2)波特率
波特率即单位时间传送的信息量,以每秒传输的位数表示,是衡量通信速度的指标。常用的波特率有110bit/s,300 bit/s,600 bit/s,1200 bit/s,2400 bit/s,4800 bit/s和9600bit/s。
假如在某个异步串行通信系统中,它的数据传输速率为960字符/秒,每个字符对应1个起始位、7个数据位、1个奇/偶校验位和1个停止位,那么波特率为10*960=9600(bit/s)。 (3) 通信的数据传送方式
串行传送的通信线路按其信息传送方向的区别可分为单工,半双工和全双工三种方式 串行数据传送模式 : 单工方式
数据只能从甲方单方向地传送到乙方或者相反,就称为单工方式。在这种情况下,甲、乙两方只需一方设置一个发送器而另一方设置一个接收器即可实现通信。 半双工方式
在同一条通信线路上,数据既可以从甲方传送到乙方,也可以从乙方传送到甲方,但这两种传送不能同时进行,这种数据传送方式称为半双工方式。 全双工方式
甲、乙双方既可同时发送数据又可同时接收数据则称为全双工方式,此种情况下甲乙双方需分别设置一套发送器和接收器,并需要使用两条独立的通信线路。 串行通信分类
串行通信按信息格式的约定分为两种:异步通信方式和同步通信方式。 (1)异步通信
在异步通信中,以字符为单位进行发送和接收,每一个字符用起始位和停止位标记字符的开始和结束。
异步通信协议为:首先用一位起始位表示字符的开始,后面紧接着的是字符的数据代码,数据可以是5位、6
位、7位或8位数据,在数据代码后可根据需要加入奇偶校验位,最后是停止位,其长度可以是1位,1.5位或2位。在异步通信中,字符间隔不固定,在停止位后可以是若干个空闲位。空闲位用高电平表示,用于等待传送。异步通信方式如图7-12所示。
微型计算机即采用异步通信方式。 (2)同步通信
同步通信不给字符加起始位和停止位,而是把传送字符顺序连接组成一个数据块,在数据块开头加同步字符,在数据块末尾加校验字符,每次通信传送这样一整块数据,如图7-13所示。同步通信数据块中字符间隔为0 。 (3)两种通信方式比较
从硬件设备的要求上看,异步通信可靠性高且硬件设备简单。同步通信方式比异步通信方式对硬件要求更高,设备更复杂。
从数据传输效率上看,同步通信方式的数据传输效率高于异步通信。异步通信一般能达到19.2Kbps,而同步通信很容易到达500Kbps以上。 4. 串行通信的误码率和差错控制
串行通信不论采用何种方式,都应能保证高效率而无差错地传送数据。在任何一个远距离通信线路中,都不可避免地存在噪声产生的干扰而造成传送出现差错。因此,对传送的数据进行校验就成了串行通信中必不可少的重要环节。常用的校验方式有两种: 偶校验
环冗余码校验 偶校验
用这种校验方式发送时,在每个字符的最高位之后都附加一个奇偶校验位,这个校验位可为“1”或为“0”,以便保证整个字符(包括校验位)中“1”的个数为偶数(偶校验)或为奇数(奇校验)。接收时,按照发送方所约定的同样的奇偶性,对接收到的每个字符进行校验。例如:发送按偶校验产生校验位,接收也必须按偶校验进行校验。当发现接收到的字符中“1”的位数不为偶数时,便出现了奇偶校验错,接收器可向CPU 发出中断请求,或使状态寄存器相应位置位供CPU查询,以便进行出错处理。
环冗余码校验 发送时,根据编码理论对发送的串行二进制数按某种算法产生一些校验码,并将这些校验码放在数据信息后一起发出。在接收端将接收到的串行数据信息按同样算法校验码,当信息位接收之后,接着接收CRC校验码,并与接收端计算出的校验码进行比较,若相等则正确,否则说明接收数据出错。接收器可用中断或状态标志位的方法通知CPU,以便进行出错处理。
7.4.2 并行通信接口
并行通信就是把一个字符的各数位用几条线同时进行传输。和串行通信相比,在同样的传输率下,并行通信的信息实际传输速度快,信息率高。当然,由于并行通信比串行通信所用的电缆要多,随着传输距离的增加,电缆的开销会成为突出的问题,所以,并行通信总是用在数据传输率要求较高,而传输距离较短的场合。
实现并行通信使用的接口称为并行接口。并行接口用于在CPU与外部设备之间同时进行多位数据信息传送。并行接口的特点如下:
各数据位同时发送或接收,速度快; 数据线多,故常用于近距离数据传送。 并行接口
并行接口能从CPU或I/O设备接收数据,然后再发送出去。因此,在信息传送过程中,并行接口起着锁存器或缓冲器的作用。通常,微机要求并行接口应具有以下功能和硬件支持:有两个或两个以上具有锁存器和缓冲器的数据交换端口,每个端口具有与CPU用应答方式(中断方式)交换数据所必须的控制和状态信号,具有与I/O设备交换数据所必须的控制和状态信号以及片选信号和控制电路。
典型的并行接口和外设连接如图 典型的并行接口和外设连接如图说明
图中的并行端口用一个通道和输入设备相连,用另一个通道和输出设备相连。每个通道都配有一定的控制线和状态线。
从图中可以看到,并行接口中应该有一个控制寄存器用来接收CPU对它的控制命令,有一个状态寄存器提供各种状态位供CPU查询。为了实现输入和输出,并行接口中还必定有相应的输入缓冲寄存器和输出缓冲寄存器。 8088的64线并行口 8088的64线并行口
一种基于8088CPU打印机并行口电路 一种基于8088CPU打印机并行口电路图 7.5 模拟接口技术
在控制和测量系统中,被控制和被测量的对象往往是一些连续变化的物理量,如:温度、压力、流量、速度、电流、电压等,通常称为模拟量。当用计算机进行测量和控制时,必须先把它们转换成数字量,这种能够将模拟量转换成数字量的器件称为模拟/数字转换器,简称ADC或A/D。同样,计算机输出的数字量,也必须先转换成模拟量,才能对执行机构进行控制,这种能够将数字量转换成模拟量的器件称为数字/模拟转换器,简称DAC或D/A。计算机通过A/D或D/A转换器与外界模拟量接口的技术称为模拟接口技术。 7.5.1 D/A接口技术 1. 概述
D/A接口是把数字量变换为模拟量的电路。其作用是把计算机的数字信号转换为模拟设备中连续变化的模拟信号,以便计算机控制外部模拟设备。
数字量是由二进制代码按数位组合起来的,每位代码都有一定的权。为了实现数字量到模拟量的转换,必须将每位代码按其权值的大小转换成相应的模拟量,然后将各模拟分量相加,其总和就是与数字量相应的模拟量。如:
3210
1101B=12+12+02+12=13 。这就是D/A转换的基本原理。 D/A转换器的主要参数
n
分辨率:分辨率是指D/A转换器所能产生的最小模拟量增量。对于n位的D/A转换器,分辨率为1/2。 转换时间:指数字量输入到转换完成、输出达到最终值并稳定为止所需的时间。
转换精度:转换精度用于衡量D/A转换器在将数字量转换成模拟量时,得到的模拟量的精确程度,表示模拟量输出实际值与理论值之间的偏差。
线性度:指D/A转换器的实际转换特性与理想的转换特性之间的误差。通常用误差的最大值表示。一般情况下,D/A转换器的线性误差应小于±0.5LSB。
微分线性误差:表明任意两个相邻的数字编码输入转换器时,输出模拟量之间的关系。
2.典型D/A转换器芯片DAC0832
DAC0832是8位D/A转换芯片,采用T形电阻网络,数字输入有输入寄存器和DAC寄存器两级缓冲,可以方便地与处理机接口。内部结构如图所示。 DAC0832结构
DAC0832有两个数据缓冲寄存器:8位输入寄存器和8位DAC寄存器。其转换结果以一组差动电流I0UTl和IOUT2
输出。DAC0832的8位输入寄存器DI7~DI0输入端可直接与CPU的数据线相连接。两个数据缓冲寄存器的工作状态分别受 和 控制。当 =0(低电平)时,8位输入数据寄存器的输出跟随输入而变化。当 由低电平变为高电平时,即 =l时,输入数据立即被锁存。同理,8位DAC寄存器的工作状态受 的控制。这样,DAC0832实际上有两级锁存器,8位输入寄存器为第一级锁存器,8位DAC寄存器为第二级锁存器。 DAC0832工作过程
当输入锁存允许(ILE)、片选( )和写控制l( )同时有效时,从数据总线D0~D7送来的数据被锁存入输入寄存器,当传送控制( )和写控制2( )信号同时有效时,输入寄存器的内容锁存入DAC寄存
器,DAC使开始对锁入的8位数据进行转换,经过约1us在输出端(Iout1,Iout2)建立稳定的电流输出,若取电压输出,可外接运放器。 DAC0832可工作于下列方式 (1)输入输出直通
即 、 、 、 接地,ILE接高电平,那么输入数据就直接送到D/A转换器进行电流转换。 (2)单级锁存方式
两级锁存器只存锁其一,另一直通。如 、 接地,DAC寄存器不锁存。ILE接高, 和 同时有效,输入数据才能通过输入寄存器,并直通DAC寄存器。 (3)两级锁存方式
两级锁存器均不直通。直至其相关电平有效时,才依次开通锁存器1和2,进行D/A转换。在实际应用中,可视具体情况,选择合适的工作方式。 3. DAC0832与PC机的接口 (1)单级锁存方式
DAC0832工作在单级锁存方式下如图7-18所示。此时 和 直接接地,所以DAC寄存器不受控制。只要CPU执行一条输出指令,使得 有效,有效地址译码使 有效,输入寄存器和DAC寄存器均处于直通状态,所以立即开始D/A转换。
在实际应用中,经常需要用到一个有规律变化的电压去控制某个过程。可以利用D/A转换器产生各种波形,如方波、三角波、锯齿波以及它们组合产生的复合波形和不规则波形等,这些复合波形利用标准的测试设备是很难产生的。
DAC0832与PC机的接口
使用如图7-18所示的硬件连接图,编程改变0832输入的数字量,在VOUT锯齿波。设DAC的输入寄存器的地址为300H。 DAC0832与PC机的接口 产生锯齿波的程序如下: .
MOV CX,100 ;设置锯齿波周期个数
MOV DX,300H ;设300H为0832片选的口地址 X0: MOV AL,0 ;初始数字量
VOUT:OUT DX,AL ;输出D/A数据,即模拟电压 INC AL ;数字量增值 JNZ VOUT ;输出一个锯齿波
LOOP X0 ;循环输出100个锯齿波 .
DAC0832与PC机的接口 (2)两级锁存方式
DAC0832工作在两级锁存方式下如图7-19所示。此时 和 一起连接 , 而 和 分别接地址译码器的两个输出端。这样输入寄存器和DAC寄存器有不同的地址码。CPU执行第一条输出指令,将数据送入输入寄存器的数据送入DAC寄存器。这两条输出指令所用的地址是不同的。 DAC0832与PC机的接口 DAC0832两级锁存方式
7.5.2 A/D接口技术 1. 概述
A/D接口的功能是把模拟量变换成数字量。它是模拟系统与数字系统或计算机之间的接口。A/D转换的三个步骤如下: A/D转换,即模拟量转换成数字量,通常要经历采样、量化和编码三个步骤。
采样过程是通过模拟开关,将随时间连续的信号变成随时间不连续的信号。模拟开关每相隔一定的时间间隔T(采样周期)闭合一次,这样随时间连续的信号就变成了一串脉冲信号,这就是采样信号。如图7-20所示: 采样过程 采样过程 : 说明:
采样后的信号虽然时间上不连续,但幅度仍连续,是一个模拟信号,不能直接被计算机进行处理,需要经过量化,转换为数字量,才能送入计算机进行处理。量化的过程就是A/D转换的过程。
为了处理方便,需要将量化值进行二进制编码,通常编码位数越多,量化引起的误差越小。对无正负区分的单极性信号,所有的二进制编码位表示其值的大小。对于有正负的双极性信号,要有一位符号位表示其极性。 在A/D转换时,往往用分时的方法通过一个A/D转换器实现多个模拟信号的转换,并且在转换过程中使采样得到的模拟信号在一定的时间里保持在稳定的状态,以保证转换器正常转换,这就要求用多路模拟开关和采样保持电路来实现。 多路模拟开关
多路模拟开关,由多个模拟开关组成,如图7-21所示。多个模拟信号接至模拟开关的各个通道输入端,CPU 送出地址和地址允许信号EN,将地址码锁存在通道译码器中,译码器输出接通相应的通道开关,这样接在该通道上的模拟输入信号就从多路开关的输出端输出,进入转换器。 采样保持电路
采样保持电路由保持电容、输入输出缓冲放大器、模拟开关和控制电路组成。它有两个工作状态:采样状态和保持状态。当开关K闭合时,输出信号VO随输入信号Vi变化,为采样状态;当开关断开时,利用电容CH保持输出信号不变,为保持状态。 A/D转换器的主要参数:
常见的A/D转换方法有计数式、逐次逼近式、双积分式和并行式。A/D转换器的主要参数有:
分辨率:分辨率指A/D转换器可转换数字量的最小模拟电压。一个n位的A/D转换器,其分辨率等于最大允许模拟量
n
输入值(即满量程)除以2。
转换时间:转换时间是指从输入转换信号开始,到转换结束所需要的时间,通常转换时间的数量级为微秒。 量程:量程指所能转换的输入模拟电压的最大范围。
绝对精度:绝对精度指在输出端产生给定的数字信号,实际需要的模拟输入值与理论上要求的模拟输入值之差。 相对精度:相对精度指满刻度值校准以后,任意数字输出对应的实际模拟输入值(中间值)与理论值(中间值)之差。
2. A/D转换器 ADC0809
DC0809是具有三态输出缓冲器的8位逐次比较型的A/D转换器。ADC0809的内部结构图 A/D转换器 ADC0809组成
ADC0809由两部分组成:模拟多路开关和A/D转换器。其核心是8位A/D转换器,它采用逐次逼近法,对8路模拟开关的一路进行转换。模拟多路开关包括8路模拟开关和3位地址锁存器与译码器,根据3位输入地址(ADDA、ADDB、ADDC)选择8路模拟输入当中的一路送到A/D转换器。
A/D转换器 ADC0809工作过程
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近存储器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变成高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作申请中断。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
3. AD574A芯片
AD574A芯片是12位逐次逼近式快速A/D转换器。
AD574A芯片结构
AD574A芯片是12位逐次逼近式快速A/D转换器。其输出具有三态锁存和缓冲能力,易于和微处理机相连。其分辨率为12位,转换时间为35us,多种模拟输入量量程和极性。
AD574的工作状态由CE、 、 、 、A0五个控制信号决定,其中CE=0或 =1, AD574A就处于禁止状态。这些信号的组合功能表见表7-1所示。只有在 =0和CE=1同时满足的情况下,AD574A才处于工作状态。此时若 =0,则开始转换,而由 来控制转换字长;若 =1,则进行数据输出,此时用 、A0来控制输出数据的格式。注意, 引脚和TTL不兼容,必须通过外部线接至+5V或0V上。另外,A0在数据输出期间不能变化。 AD574A控制信号功能组合表 AD574A控制信号功能组合表 AD574A模拟输入的外部接法:
ADC574 允许单极性和双极性模拟输入,只需要改变引脚VREFOUT、VREFIN和BIPOFF的外部接法。 第8章 接口芯片
8.1 可编程串行通信接口8251A
8251A是一种可编程的通用同步/异步接收发送器,用于CPU与外设之间的串行通信接口, 8251A通过编程可选择同步方式和异步方式,同步方式时波特率可选为0~64K;
8251A将自动为每个字符添上一个起始位,并允许通过编程选择1、1.5或2位停止位。 8251A可指定为半双工或全双工工作方式。接收、发送数据分别有各自的缓冲器。 8.1.1 8251A引脚和内部结构 8251的引脚
8251A与CPU接口的信号 D0~D7:双向数据线。
RD、WR和 :读、写和片选信号线。
RESET:复位信号线。8251集成电路复位后将处于空闲状态,等待命令。通常与系统复位线相连。
CLK:时钟线。为集成电路的内部电路提供时钟信号,而且必须高于发送和接收波特率,并且同步时为30倍,异步时为4.5倍。
:控制/数据线。若此端为高电平,则CPU对8251A写控制字或读状态字;若为低电平,则CPU对8251A读写数据。该信号实为地址控制端,用于确定8251A的两个I/O端口地址,一般情况下接地址线A0。 8251与发送器有关信号 TXD:发送数据线。
TxRDY:发送器准备好,状态输出线。用于通知8251A内的发送器已经作好发送数据准备。 TXEMPT:发送器空,状态输出线。表示8251A内的发送器中的数据已发送出去,发送器为空。
TXC:发送器时钟,用于控制8251A发送字符的波特率。TXC在同步方式时,应与发送、接收波特率相等;在异步方式时,可以是波特率的1、16或64倍。 接收器有关信号 RXD:接收数据线。
RXRDY:接收器准备好,状态输出线。表示8251A已经接收了一个字符代码,通知CPU取数据。
SYNDET:同步字符检测双向信号线,用于同步方式。它是作为输入还是输出,取决于初始化程序要求8251A工作于内同步或外同步的规定。
RXC:接收器时钟,用于控制接收字符波特率。它和波特率的关系同TXC。 Modem控制信号
8251提供4个与Modem相连的控制信号。它们的含义与RS232C标准的规定相同。 DTR:数据终端准备好,输出信号,低电平有效。表示8251A准备就绪。
RTS:请求发送,输出信号,低电平有效。用于通知Modem,8251A准备就绪。 DSR:数据设备准备好,输入信号,低电平有效。用以表示调制解调器已准备好。
CTS:清除传送(即允许传送),输入信号,低电平有效。是MODEM对8251A的RTS的响应,当它有效时8251A方可发送数据。
2.8251A的内部结构 数据总线缓冲器 ⑴ 数据总线缓冲器
数据总线缓冲器是双向三态的8位缓冲器,包含有命令缓冲器和数据缓冲器。它是8251A与系统总线的接口,CPU通过它向8251A写入控制字和命令字,读取状态信息。在发送和接收过程中,CPU通过它输出数据和读入数据。 8.1.2 8251A应用实例
试用8251A为8086CPU与CRT终端设计一串行通信接口。
要求:硬件配置采用8251A作为主芯片,再附加少量的其它电路。如电平变换器、波特率发生器、地址锁存器、地址译码器等。
8086CPU与CRT终端接口连接如图8-3所示。地址锁存信号ALE有效时,将CPU送来的地址锁存,地址译码器对输入地址A1~A9进行译码,输出接8251A的片选端。地址线A0用于连接8251A的数据端口或控制端口。波特率发生器按规定给8251A提供发送和接收时钟。电平变换电路将8251A送出的TTL电平变成RS232C电平以便和CRT连接。 8086与CRT终端接口电路 8.2可编程并行接口8255A
8255A是Intel公司研制的可编程并行接口芯片,采用单一的+5V电源供电,其输人和输出电平与TTL完全兼容。 8.2.1 8255A引脚与结构
8255A的40个引脚信号可以分为两组: ⑴ 与外设相连的引脚信号 PA0~PA7:A组数据信号。 PB0~PB7:B组数据信号。 PC0~PC7:C组数据信号。 ⑵ 与CPU接口的引脚信号
D0~D7:双向数据信号线,和系统数据总线相连。在CPU和8255A之间传送数据、命令和状态信息。 :片选信号,低电平有效。
:写信号,低电平有效。当 有效时,CPU可以往8255A中写入控制字或数据。 :读信号,低电平有效。当 有效时,CPU可以从8255A中读出数据。 A0,A1:口地址选择信号。
RESET:复位信号。8255复位后,所有内部寄存器都被清除,三个数据端口被自动设为输入工作方式。 表8-1 8255A端口地址编码 2. 8255A内部结构
8255A主要由数据总线缓冲器、读写控制逻辑、A组和B组控制电路和端口A、B、C等四个部分组成。 ⑴数据总线缓冲器
数据总线缓冲器是一个三态双向缓冲器,宽度8位,用于8255A与CPU数据总线的接口。CPU与8255A之间所有的数据发送与接收、CPU向8255A发送的控制字和8255A向 CPU回送的状态信息都是通过数据总线缓冲器传送的 ⑵读/写控制逻辑
读/写控制逻辑接收来自CPU的地址和控制信号,并发出命令到两个控制组(A组、 B组控制)。由它控制把CPU发出的控制命令字或输出的数据送到相应的端口,或者把外设的状态信息或输入的数据从相应端口送到CPU。 ⑶A组和B组控制电路
A组控制A口和C口的高4位(PC7 ~ PC4),B组控制B口和C口的低4位(PC3 ~ PC0)。 A、B、C三个端口的工作方式是由CPU送往A组和B组控制寄存器的方式控制字设定的。A组和B组控制寄存器,还可以接收CPU送来的置位/复位控制字,以实现对C口的按位操作。 ⑷ 数据端口
8255A包括3个8位输入输出端口A、B、C。A口具有8位数据输出锁存/缓冲器和一个8位数据输入锁存器,它可编程为8位输入/输出式双向寄存器;B口具有一个8位数据输入/输出锁存/缓冲器和一个输入缓冲器(不锁存),它可编程为8位输入/输出式寄存器,但不能双向输入/输出;C口具有8位数据输出锁存/缓冲器和一个8位输入缓冲器(不锁存),它可作为两个4位口使用,C口除作为输入/输出口使用外还可以用作A、B口选通方式操作时的状态控制信号。
3. 8255A的控制字
8255A可以通过控制字设置它的工作方式。控制字分为两类,即方式选择控制字和C端口按位置1/置0控制字。 ⑴方式选择控制字
此控制字可以使8255A的3个数据端口工作在不同的工作方式。方式选择控制字总是将3个数据端口分为A、B两组来设定工作方式,即端口A和端口C的高4位作为A组,端口B和端口C的低4位作为B组。方式选择控制字的格式如图8-6所示。
8255A方式选择控制字图 C端口按位置1/置0控制字 ⑵ C端口按位置1/置0控制字
此控制字可以使8255A的C端口中的任何一位进行置位或复位。它的第7位总是0,而方式选择控制字的第7位总是1,8255A通过这一位来识别写入控制端口是工作方式控制字还是C口按位置1/置0控制字,所以第7位称为这两个控制字的特征位。C端口按位置1/置0控制字的格式如图8-7所示。 C端口按位置1/置0控制字 4. 8255A的工作方式
8255A的端口A可以在三种方式下工作,即方式0,方式1和方式2;而端口B只能在方式0和方式1这两种方式下工作,端口的工作方式是由方式选择控制字决定的。 ⑴ 方式0
方式0称为基本输入/输出工作方式。在这种方式下3个端口分为A组(8位A口和4位C口上半部)及B组(8位B口和4位C口下半部)。两组均可通过编程设置为输入口或输出口。 端口B的输入/输出操作。
方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。
在同步传送时,发送方和接收方的动作由一个时序信号来管理,双方互相知道对方的动作,不需要应答信号,即CPU不需要查询外设的状态。这种情况下,对接口的要求很简单,只要能传送数据就行了。因此,在同步传送下使用8255A时,3个数据端口可以实现3路数据传输。
查询式传送时,需要有应答信号。但方式0没有规定固定的应答信号,必须自行定义。一般将端口A 和端口B作为数据端口,把端口C的4个数位(高4位或低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态。即利用端口C来配合端口A和端口B的输入/输出操作。 ⑵ 方式1
方式1为选通式输入输出工作方式。在此方式下,A口和B口作为8位输入/输出端口,C口的某些线作为A口、B口输入输出的应答信号,余下的线只具有基本I/O功能,即只能工作于方式0。
在方式1下,规定一个端口作为输入口或者输出口的同时,自动规定了有关的控制信号,尤其是规定了相应的中断请求信号。在许多采用中断方式进行输入/输出的场合,如果外设能为8255A提供选通信号或数据接收应答信号,则常常使8255A的端口工作于方式1情况。 (3)方式2
方式2为双向选通输入/输出工作方式。这时A口作为双向输入输出端口,C口中的5位(PC3~PC7)作为相应的应答控制信号,B口和余下的C口可处于方式0工作状态。
方式2是一种双向工作方式。如果一个并行外设既可以作为输入设备,又可以作为输出设备,并且输入输出动作不会同时进行,如果将这个外设和8255A的端口A相连,并使它工作在方式2,就会非常合适。例如,软盘驱动器就是这样一个外设,主机既可以往软盘驱动器系统输出数据,也可以从软盘驱动器系统输入数据,但数据输出过
程和数据输入过程总是不重合,可以将软盘驱动器的数据线与8255A的PA0~PA7相连,再使PC7~PC3和软盘驱动器的控制线和状态线相连即可。 8255A作为连接打印机的接口 8255A作为打印机接口的示意图 8.3 可编程计数器/定时器 8253A
8253A是Intel公司为它的微处理机系列设计的一个外围电路,它可以通过软件方式设定不同的工作方式,产生各种形式的时间延迟信号,以满足各类系统提出的不同时间要求。8253A使用单一的+5V电源。外部采用28脚的双列直插式封装。
8253A具有3个独立的功能完全相同的16位计数器,计数频率最高可达2MHz。每一个计数器都有6种工作方式,这6种工作方式都可以由其控制字设定,因而能以6种不同的工作方式满足不同的接口要求。如果将两个以上计数器级联使用,可以获得更大的计数范围。
1. 8253A引脚
8253A的外部引脚如图8-9所示。其引脚可分为两部分:一是与CPU的接口引脚;二是与外设的接口引脚。 8253A引脚图
8253A与CPU的接口引脚 ⑴ 8253A与CPU的接口引脚
D0~D7:双向三态数据线,与CPU数据总线相连。用于传递CPU与8253A之间的数据信息、控制信息和状态信息。 :写信号,输入。用于控制CPU对8253A的写操作。 :读信号,输入。用于控制CPU对8253A的读操作。
A1,A0:地址线,输入。用于寻址8253A内部的4个端口,即3个计数器和一个控制字寄存器。与CPU系统地址线相连。 :片选信号,输入。当 =0时,8253被选中,允许CPU对其进行读/写操作。此脚连接译码电路输出端。 8253A与外设的接口引脚 ⑵ 8253A与外设的接口引脚
CLK0-2:计数时钟,输入。用于输入定时脉冲或计数脉冲信号。CLK可以是系统时钟脉冲,也可以由系统时钟分频或者是其它脉冲源提供。
当用于定时时,这个脉冲必须是均匀的,连续的,周期精确的;用于计数时,这个脉冲可以是不均匀的,断续的,周期不定的。
GATE0-2:门控信号,输入。用于外部控制计数器的启动计数和停止计数的操作。
两个或两个以上计数器连用时,可用此信号来同步,也可用于与外部某信号同步。 OUT0-2:计数输出端。当计数器从初值开始完成计数操作时,OUT引脚上输出相应的信号。
2. 8253A内部结构
8253 计数器
3. 8253A 工作原理
8253A作为计数器的工作原理:当计数器被赋予一定的初值时,由CLK脉冲在GATE开启的状态下对计数器进行减一计数,在一串CLK脉冲的作用下,当计数器减至“0”时,由OUT端输出一信号。
8253A作为定时器的工作原理:当定时器(即计数器)被赋予初值时,由CLK脉冲在GATE开启的状态下触发定时器开始工作,定时器不间断地产生CLK时钟整数倍的定时间隔。
计数器输出“减到0”信号,定时器输出“时间到”信号,但就其内部操作而言,都是利用一个减法器来完成的。所不同的是前者只输出一个脉冲,后者则输出连续的定时脉冲。 4. 8253A 控制字
8.3.2 8253A工作方式 8253A工作方式1 8253A工作方式2 8253A工作方式3
方式3(方波发生器)
8253A工作于方式3时,有以下特点:
此方式类似于方式2,当频率N为偶数时,输出的N分频波为方波;当N为奇数时,输出分频波的高电平宽度为(N+1)/2计数脉冲周期,低电平宽度为(N-1)/2计数脉冲周期。 8253A工作方式4
方式4(软件触发选通)
825A3工作于方式4时,有以下特点:
写入控制字后,输出OUT变为高电平。写入初值后,计数器作减1计数。当计数器减到0时,在OUT端输出一个宽度等于一个计数脉冲周期的负脉冲。GATE=1,允许计数;GATE=0,停止计数。 8253A工作方式5
方式5(硬件触发选通)
825A3工作于方式5时,有以下特点:
写入控制字后,输出OUT端为高电平。写入计数初值后,计数器并不立即开始计数,而是由GATE输入触发脉冲,从其上升沿开始,计数器作减1计数。计数结束时,在OUT端输出一个宽度等于一个计数脉冲周期的负脉冲。计数过程中,若GATE信号又发生了正跳变。则不论计数是否结束,又重新开始新一轮的计数。
8.4 DMA控制器8237A
微型计算机选用Intel公司的8237A集成电路作为DMA控制器。8237A是一种高性能可编程的DMA控制器,每个集成电路上有4个独立的DMA通道,可分别独立编程,实现外部设备与内存、内存与内存之间的高速数据传送。每个通道有的64K寻址与计数能力。 8.4.1 8237A的引脚与内部结构 1. 8237A的引脚
8237A的两种状态
在说明引脚功能前,先要明确8237A的两种状态:DMA周期和空闲周期。当8237A在进行DMA过程的控制时,称为处于DMA周期,它作为系统总线的主控设备;而在不进行DMA传输时,称为空闲周期,8237A作为CPU的一个外部设备。有一些引脚在两种状态下都有用,而有些是专用的。 8237A的引脚说明
A0~A3:双向三态地址线的低4位。
A4~A7:双向三态地址线的高4位。在DMA周期由它提供要访问的存储器的低8位地址的高4位地址。 DB0~DB7:双向三态数据总线,与系统数据总线相连。
:存储器写信号,输出,三态,低电平有效。 ADSTB:地址选通输出信号,输出,高电平有效。 AEN:地址允许信号,输出,高电平有效。 8237A的引脚说明
:I/O写控制信号,双向、三态,低电平有效。
:I/0读控制信号,双向、三态,低电平有效。 MEMR:存储器读信号,输出,三态,低电平有效。 :片选信号,输入,低电平有效。 RESET:复位信号,输入,高电平有效。 READY:准备好信号,输入,高电平有效。 HRQ:请求占有总线信号,输出,高电平有效。 HLDA:让出总线响应信号,输入。 8237A的引脚说明
DREQ0~DREQ3:DMA请求(通道0~3)信号,输入。每一个通道在需要DMA传送时,可通过各自的DREQ端提出DMA请求。
DACK0~DACK3:DMA响应信号,输出。分别对应通道0~3。8237A用这些信号来通知各自的外设已经被授予一个DMA周期。即利用有效的DACK信号作为I/O接口的选通信号。
CLK:时钟信号,输入,用来控制8237A的内部操作定时并决定DMA的数据传送速率。 :过程结束信号,双向、低电平有效。 2. 8237A的内部结构 8237A的内部结构图 8237A的内部结构
8237A有3个基本部分组成: 控制逻辑单元 缓冲器
内部寄存器。 控制逻辑单元
定时和控制逻辑单元。它根据初始化编程时所设置的工作方式寄存器的内容和命令,在输入时钟信号的定时控制下,产生8237A内部的定时信号和外部的控制信号。
命令控制单元。它主要作用是在CPU控制总线时,即DMA处于空闲周期时,将CPU在编程初始化送来的命令字进行译码;而在8237A进入DMA服务时,对设定DMA操作类型的工作方式字进行译码。
优先权控制逻辑单元。用来裁决各通道的优先权次序,解决多个通道同时请求DMA服务时可能出现的优先权竞争问题。8237A各通道的优先权可以是固定的,也可以是循环的,由编程确定。 缓冲器和内部寄存器 缓冲器
缓冲器包括两个I/O缓冲器和一个输出缓冲器。8237A的数据线、地址线通过这些三态缓冲器与系统总线相连,从而保证可以接管总线也可以释放总线。 内部寄存器
8237A的内部寄存器有基地址寄存器、基字节数寄存器、工作方式寄存器、状态寄存器等。这些内部寄存器的内容,确定了8237A的内部操作和工作方式。 3. 8237A的工作方式
8237A进行DMA传送时,有4种传送方式: 单字节传送方式 数据块传送方式 请求传送方式 级联方式。 单字节传送方式 在这种方式下,8237A 每次进行DMA传送时,仅传送一个字节的数据。传送结束后,8237A将当前地址加1(或减1),并将要传送的字节数减l,然后,8237A放弃系统总线,将总线控制权交给CPU。
在这种方式下,每个字节传送时,DREQ保持有效。传送完后,DREQ变为无效,使HRQ也变为无效。这样可以保证每传送一个字节,DMA控制器交回总线控制权给CPU,以便CPU执行一个总线周期。可见,CPU和DMA控制器在这种情况下轮流控制系统总线。 数据块传送方式
在这种传送方式下,DMA控制器一旦获得总线控制权,便开始连续传送数据。每传送一个字节,自动修改地址,并使要传送的字节数减l,直至将所有规定的字节全部传送完或接收到外部输入到-EOP的低电平信号,DMA控制器才结束传送并将总线控制权交给CPU。在此方式下,外部设备的请求信号DREQ保持有效直到收到DACK有效信号为止。 请求传送方式
在这种方式下,只要DREQ有效,DMA传送就一直进行,直到连续传送到字节计数为0或外部输入到-EOP低电平信号或DREQ变为无效时为止。
如果在每个DMA周期后撤除DREQ信号,则这种方式在微型计算机中是可以使用的,否则名出现和块传输同样的问题。 级联方式
这种方式允许连接一个以上8237A集成电路实现DMA系统的扩展。其连接方法是把附加的8237集成电路的HRQ和HLDA信号线分别连到主集成电路的某个通道的DREQ和DACK信号线上,附加集成电路的DMA请求将通过主集成电路的优先级编码电路传给CPU 二级8237A级联 例 二级8237A级联 8237A的应用举例
8237A通道可作为软盘接口。 8.5中断控制器 8259A
8259A是8080/8085序列以及80x86序列兼容的可编程的中断控制器,是专门为控制优先级中断而设计的集成电路。它具有8级优先权控制,通过级联可扩展至64级优先权控制。每一级中断都可以屏蔽或允许。在中断响应周期,8259A可提供相应的中断向量,从而能迅速地转至中断服务程序。 8.5.1 8259A 引脚与内部结构 8259A的外部引脚图 8259A与CPU的接口引脚
D0~D7:数据引线,双向,三态,与CPU数据总线直接相连。
INT:中断请求信号,输出状态。用于由8259A向CPU发出中断请求。 :中断响应信号。用于接收CPU送回的中断响应负脉冲。 :读信号,输入。用于控制CPU对8259A的读操作。 :写信号,输入。用于控制CPU对8259A的写操作。
:片选信号,输入。当 =0时,8259A被选中,允许CPU对其进行读/写操作。此脚连接译码电路输出端。 A0:地址线,输入。用于寻址8259A内部的两个端口。此脚连接CPU系统地址线。
8259A与外设的接口引脚
IR0~IR7: 中断请求,输入。用于接收从外设送来的中断请求信号。每个引脚分别连接一个中断源的中断请求输出端或连接一个8259A 从片的INT 端(级联时)。 8259A级联时的接口引脚
CAS0~CAS2:级联引脚,双向,用来构成8259A的主从式级联控制结构。在主从结构中,当8259A作为主片使用时,CAS0~CAS2为输出,用于发送从设备标志;而8259A作为从片使用时,CAS0~CAS2为输入,用于接收从设备标志。主从片8259A的这三条线全部对应相连。
:从片编程/允许缓冲器信号,双向。该引脚有两种功能。当8259A工作在缓冲方式时,它是输出信号,用于允许缓冲器接收和发送信息(EN),即选通缓冲器。
8259内部结构图如图 8259内部结构图如图
8259由中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写电路和级联缓冲器/比较器组成。
中断请求线IR0~IR7输入端上的中断请求由两个级联的寄存器IRR和ISR来处理。IRR寄存所有要求服务的中断请求,ISR寄存所有正在被服务的中断级。IMR存放被屏蔽的中断请求,该寄存器的每1位表示1个中断号。某一位为1,则屏蔽掉该号中断;否则开放该号中断,IMR对ISR起作用。
8259A应用实例
8259A接成主、从控制器的电路原理图
因篇幅问题不能全部显示,请点此查看更多更全内容