第一章微型计算机基础.ppt
微机原理及应用,The Principle and Application of Microcomputer,主讲:刘勇,教师联系方式,任课教师:刘 勇办公室:工程楼 教师办公室联系电话:13563123255E-mail:,主要参考书1、杨素行等编著,微型计算机系统原理及应用,北京:清华大学出版社,2009年第3版.,考核方式平时作业15%实验15%期末考试 70%,课程目标(1)了解一个微处理器(8086/8088)的基本结构、工作原理及组成一个简单的计算机的方法.(2)熟悉一门汇编语言(8086/8088),学会编写和调试简单的汇编语言程序.(3)掌握几种常用可编程输入/输出接口芯片的工作原理、与CPU系统的连接方法及编程使用方法.,为什么学习微机原理及应用,专业水平的试金石各种专业考试:研究生入学考试、等级考试(三级PC技术)后续主干课程的重要基础计算机接口技术、单片机技术、DSP技术 以后工作的基础控制硬件设计、单片机开发、DSP开发,教学大纲第一章 微型计算机基础第二章 微型机指令系统第三章 汇编语言程序设计第四章 半导体存储器第五章 输入输出系统,第一章 微型计算机基础,1.1 概述1.2 计算机中的数制和编码 1.2.1无符号数的表示及运算 1.2.2带符号数的表示及运算 1.2.3 二进制编码 1.2.4计算机中数的定点表示和浮点表示1.3 微型计算机系统的组成、分类和配置1.4 微处理器,1.1 概述,世界上第一台现代意义的电子计算机是1946年美国宾夕法尼亚大学设计制造的ENIAC电子计算机的发展 电子管计算机(1946年)晶体管计算机(1958年)集成规模电路计算机(1965年)(微处理器芯片上集成晶体管数300030000个)超大规模集成电路计算机(1970年)(微处理器芯片上集成晶体管数100000100000000个),第一台电子计算机ENIAC,第一台电子计算机(通用可编程序)18800电子管30吨150平方米150kw5000次/秒,微型计算机的发展,微型计算机的发展是以微处理器的发展来表征的微处理器的集成度每隔18个月就会翻一番,芯片的性能也随之提高一倍-摩尔定律微处理器(Micro Processing Unit),即微型化的中央处理器.中央处理器CPU的英文全称是Central Processing Unit.它是将计算机中的运算器和控制器集成在一片硅片上集成的集成电路.,摩尔定律,微处理器的集成度每隔18个月就会翻一番,芯片的性能也随之提高一倍.,Intel微处理器的发展,微型计算机的常用术语,(1)、位和字节位(bit)是计算机所能表示的最小最基本的数据单 位,它指的是取值只能为0或1的一个二进制数值 位.位作为单位时记作b.字节(byte)由8个二进制位组成,通常用作计算 存储容量的单位.字节作为单位时记作B.KB是kilobyte(千字节)的缩写,1KB=1024B=2*10BMB是megabyte(兆字节)的缩写,1MB=1024KB=2*20BGB是Gigabyte(十亿字节)的缩写,1GB=1024MB=2*30BTB是Terabyte(太字节)的缩写,1TB=1024GB=2*40B,(2)、字长字长是微处理器一次可以直接处理的二进制数码的位数,它通常取决于微处理器数据总线的宽度.微处理器的字长有4位、8位、16位和32位等等.8086为16位微处理器,8088称为准16位微处理器.,(3)、主频主频也叫做时钟频率,用来表示微处理器的运行速度,主频越高表明微处理器运行越快,主频的单位是MHz.,(4)、微处理器的集成度指微处理器芯片上集成的晶体管的密度.最早Intel 4004的集成度为2250个晶体管,Pentium III的集成度已经达到950万个晶体管以上,集成度提高了3000多倍.SSI(小规模集成电路)晶体管数100个以下MSI(中规模集成电路)晶体管数1003000个LSI(大规模集成电路)晶体管数300030000个VLSI(超大规模集成电路)晶体管数100000100000000个ULSI(甚大规模集成电路)晶体管数100000000以上,(5)、微处理器的运算速度运算速度是计算机完成任务的时间指标.用计算机每秒所能执行指令条数来表示(MIPS指标).MIPS是Millions of Instruction Per Second的缩写,用来表示微处理器的性能,意思是每秒钟能执行多少百万条指令.,1.2 计算机中的数制和编码,1.2.1无符号数的表示及运算1.2.2带符号数的表示及运算1.2.3 二进制编码,1,1.2.1无符号数的表示及运算1、无符号数的表示方法,(1)计算机本身采用二进制为什么选用二进制?关键是由电路状态决定的,在计算机中“a”的二进制是01100001.(2)计算机程序和资料中普遍采用十进制和十六进制虽然二进制在计算机底层使用,但对于人来说记忆使用太繁琐,所以在计算机程序中经常使用十进制、八进制和十六进制.,进位计数制:按进位的原则进行计数,逢N进1.常用进位计数制有:十进制数:有10个不同的数学符号,即09二进制数:有2个不同的数学符号,即0和1十六进制:有16个不同的数学符号,即:0,1,29,A,B,C,D,E,F八进制数:有8个不同的数学符号,即:0,1,27.,2、数制转换(1)任意进制数转换为十进制数,转换规则:将各位数字与位权相乘求和,所得和数即为转换结果.,(2)十进制整数转为任意进制(R)数,转换规则:“除R取余法”.即用十进制数反复地除以R,记下每次得的余数,直至商为0.将所得余数按最后一个余数到第一个余数的顺序依次排列起来即为转换结果.若要转换成二进制数,则用“除二取余法”.,(3)十进制小数转换成任意进制(R)小数,转换规则:“乘R取整法”.即用十进制小数乘以R,得到一个乘积,将乘积的整数部分取出来,将乘积的小数部分再乘以R,重复以上过程,直至乘积的小数部分为0或满足转换精度要求为止,最后将每次取得的整数依次从左到右排列即为转换结果.若要转换成二进制小数,则采用“乘2取整法”.,(4)一个十进制数既有整数部分,又包括小数部分,要将其转换成R进制数,转换规则:将该十进制数的整数部分和小数部分分别进行转换,然后将两个转换结果拼接起来即可.,例如:将13.8125D转换成二进制:因为13D1101B 0.8125D=0.1101B所以13.8125D1101.1101B,总结:以上介绍了十进制数与R进制数(在此主要是指二进制、八进制及十六进制数)的相互转换方法,为便于记忆,可简单归纳为:R至十,位权展开求和;十至R用连除连乘法,并特别注意转换结果的排列规则(除R取余法是“先余为低,后余为高”;乘R取整法是“先整为高,后整为低”).,(5)二进制数与八进制、十六进制数之间的转换,因为2*38,所以每一位八进制数可以用一个3位二进制数表示;因为2*416,所以每一位十六进制数可以用一个4位二进制数表示.,二进制数与八进制、十六进制数之间的转换规则,3、二进制数的运算,(1)算术运算,(2)逻辑运算,练习把(1101101110.11)2 和(4EB7)16 转换为十进制数;把255.786转换为二进制。,1.2.2带符号数的表示及运算,日常生活中遇到的数,除上述的无符号数外,还有大量的带符号数.数的符号在计算机中也用二进制数表示,通常用二进制的最高位表示数的符号.把一个数及其符号在机器中的表示加以数值化,这样的数称为机器数,而机器数所代表的数称为该机器数的真值.机器数可以用不同方法表示,常用的有原码、反码和补码表示法.,1、带符号数的表示法原码、反码和补码,原码:以数值的符号加上数值的二进制表示组成的编码.+1原=00000001-1原=10000001负数反码:原码的符号位不变,数值位取反(0变1,1变0)+1反=00000001-1反=11111110负数补码:反码加1+1补=00000001-1补=11111111正数的原码、反码和补码的表示相同的.,那计算机中为什么要引入反码和补码呢?直接用1位0、1码表示正、负,而数值部分不变,在运算时带来一些新的问题.(1)两个正数相加时,符号位可以同时相加:000,即其和仍然为正数,没有影响运算的正确性;(2)一个正数与一个负数相加,和的符号位不是两符号位直接运算的值:011,而由两数的数值大小决定.即其和的符号位是由两数中绝对值大的一个数所决定的;(3)两个负数相加时,由于1110,因此其和的符号也不是由两符号位直接运算的结果所决定的.简单地说,用原码形式进行加运算时,负数的符号位不能与其数值部分一道参加运算,而必须利用单独的电路确定和的符号位.这样使计算机的结构变得复杂化了.为了解决机器内负数的符号位参加运算的问题,引入了反码和补码两种机器数形式.,(1)原码,结论:原码为符号位加数的绝对值,符号位用“0”表示正,用“1”表示负;原码零有两个编码,“0”和“0”的编码不同的;原码难以用于加减运算;n位原码表示数的范围是真值和其原码表示之间的对应关系简单,容易理解;,(2)反码,结论:反码为符号位“0”正,“1”负,数值位取反;反码零有两个编码,“0”和“0”的编码不同的;n位反码表示数的范围是,(3)补码,结论:补码的最高位表示符号位,“0”正,“1”负;补码零有唯一的编码,“0”和“0”的编码相同的;n位补码表示数的范围是,2、真值与补码之间的转换,(1)真值转换为补码按照补码的定义可直接由真值求得有符号数的补码.(2)补码转换为真值正数的补码=真值负数的补码如何转换为真值?根据求补运算:是将一个二进制数按位求反(包括符号位)再加1的运算.其中,X是带符号数,正负皆可.,验证求补运算:(1)设X=+1,则-X=-1(2)设X=-1,则-X=+1,例1.1 求下列数的补码.(1)设X=+127D,求X补(2)设X=-127D,求X补例1.2 求以下补码的真值.(1)设X补=01111110,求X.(2)设X补=10000010,求X.,3、补码的运算(1)补码的加法 X+Y补=X补+Y补,在数值的加减运算中,由最高位向更高位的进位由于机器字长的限制而自动丢失,不会影响运算结果的正确性.,(2)补码的减法 X-Y补=X补+-Y补,由上述分析,可以看出:计算机中的带符号数用补码表示时,有许多优点.第一,负数的补码与对应正数的补码之间的转换可以用同一方法求补运算实现,因而可简化硬件.第二,可以将减法变为加法运算,从而省去了减法器.第三,无符号数及带符号数的加法运算可用同一电路完成,结果都是正确的.例如,两个内存单元的内容分别为11110001及00001100,无论它们代表无符号数还是带符号数,运算结果都是正确的.,溢出概念,例如:120补+10补 01111000+00001010 10000010,如果运算结果超出了所能表示的数值范围,则产生溢出,运算结果不正确.,1.2.3 二进制编码,计算机处理的信息并不全是数,有时需要处理字符或字符串,例如从键盘输入或打印输出的信息都是以字符方式输入输出的.字符包括:大小写英文字母、数字、运算符、标点符号等.这些字符在机器里必须用二进制数来表示,目前微机中最常用的是ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码).另外,尽管计算机采用的二进制数的表示方法及运算规则简单,但是其书写冗长、不直观且易出错,因此计算机的输入/输出时仍采用人们习惯的十进制数.当然,十进制数在计算机中也需要用二进制编码表示.计算机通常用8421 BCD码来表示十进制数.,二进制编码的十进制数是指用等值的4位二进制数来表示1位十进制数.压缩的BCD码:压缩的BCD码的每一位十进制数用4位二进制表示,一个字节表示两位十进制数.例如,10010110B表示十进制数据96.非压缩的BCD码:非压缩的BCD码用1个字节表示一位十进制,高4位总是0000,低4位的00001001表示09.例如,00001000B表示十进制8.,1、二进制编码的十进制数(BCD码),BCD码的用途:(1)在以二进制工作的机器内,数从十进制到二进制或从二进制到十进制转换时,BCD码用作中间表示.提高数据转换的效率.(2)使用BCD码为了压缩数据,一个手机号通常是11位数字,如果不用BCD码表示就会占用11Byte,但是经过BCD编码后只占用6 Byte,几乎节省了一半的空间.这不论对于信息的携带还是海量信息的存储都有巨大作用.,2、字母与符号的编码(ASCII码),在计算机中,各种字符也必须用二进制代码来编码,如26个英文字母、10个阿拉伯数字、运算符号、标点符号以及一些特殊的控制符,如换行、换页、回车等.ASCII码(American Standard Code for Information Interchange,即美国信息交换标准代码),ASCII码用8位二进制对字符进行编码.数字09的ASCII码为3039H;大写英语字母AZ的ASCII码为41H5AH;小写英文字母az的ASCII码为61H7AH.,50,IBM PC ASCII 码字符表(P362,附录1),10H,1FH,十六进制,0AH,1.3 微型计算机系统的组成、分类和配置,微型计算机系统的组成(1)、微处理器(CPU)CPU是微型计算机的核心芯片,它包含运算器、控制器和寄存器三个主要部分:运算器(也称为算术逻辑单元ALUArithmetic and Logic Unit):完成数据的算术和逻辑运算.控制器:一般由指令寄存器、指令译码器和控制电路组成.控制器根据指令的要求,对微型计算机各部件发出相应的控制信息,使它们协调工作,从而完成对整个计算机系统的控制.寄存器:用来存放经常使用的数据.,(2)、存储器存储器(Memory)又称为主存,是微型计算机的存储和记忆装置,用以存放数据和程序.微型机通过各个内存单元规定不同地址来管理内存.这样,CPU便能识别不同的内存单元.内存单元的地址和内容:内存单元的地址和内存单元的内容是两个完全不同的概念.(图1.6),第6号内存单元的地址是00006H,而其内容是11001111B,即CFH.,内存的操作:读或写操作.读操作是CPU将内存单元的内容读入CPU内部,而写操作是CPU将其内部信息送到内存单元保存起来.显然,写操作的结果改变了被写内存单元的内容,是破坏性的,而读操作是非破坏性的,即,该内存单元的内容在信息被读“走”之后仍保持原信息.内存的分类:RAM和ROM.随机存储器RAM(Random Access Memory)和只读存储器ROM(Read Only Memory).RAM可以被CPU随机地读写,故又称为读写存储器.这种存储器用于存放用户装入的程序、数据及部分系统信息.当机器断电时,所存信息消失.ROM中的信息只能被CPU读取,而不能由CPU任意写入,故称为只读存储器,机器断电,信息仍保留.这种存储器用于存放固定的程序,如:基本的IO程序,BASIC解释程序以及用户编写的专用程序.ROM中的内容只能用专用设备写入.,(3)、输入/输出(I/O)设备和输入/输出接口(I/O Interface)IO设备是微型机系统的重要组成部分.程序、数据及现场信息要通过输入设备输入给微型机.CPU计算的结果通过输出设备输出到外部.常用的外部设备有键盘、鼠标等,常用的输出设备有显示器、打印机等.外设处理的信息是数字量、模拟量、开关量等,而微型计算机只能处理数字量.外设的速度慢,而微型计算机的速度快.外设有时是串行数据,而微型计算机处理的是并行数据.鉴于以上原因,微型计算机与外设间的连接及信息交换不能直接进行,而须设计一个“接口电路”作为微型计算机之间的桥梁.,微型计算机的外部结构框图,综上所述,微型计算机硬件主要由CPU、内存、I/O接口和I/O设备组成.微型计算机各部件之间是用系统总线连接的.系统总线就是传送信息的公共导线,一般有三组总线.地址总线AB(Address Bus)传送CPU发出的地址信息,是单向总线.数据总线DB(Data Bus)传送数据信息,是双向总线,CPU既可通过DB从内存或输入设备接口电路读入数据,又可通过DB将CPU内部数据送至内存或输出设备接口电路.控制总线CB(Control Bus)传送控制信息,其中,有的是CPU向内存及外设发出的信息,有的是外设等发送给CPU的信息,因此,CB中每一根线的传送方向是一定的.微型计算机的系统结构图如上所示,图中CB作为一个整体,用双向表示.,微型计算机的工作过程就是执行程序的过程,而程序由指令序列组成,因此,执行程序的过程,就是执行指令序列的过程,即逐条地从存储器中取出指令并完成指令所指定的操作.由于执行每一条指令,都包括取指、译码和执行三个基本步骤,所以,微型计算机的工作过程,也就是不断地取指、译码和执行的过程,直到遇到停机指令时才结束机器的运行.,微型计算机的工作过程,1.4 微处理器,1.4.1 8086/8088的功能结构1.4.2 8086/8088的引脚信号1.4.3 8086/8088的工作方式1.4.4 8086/8088的存储器管理,1.4.1 8086/8088的功能结构,8086:是Intel系列16位处理器,其集成度29000个管/片,数据总线:16位地址总线:20位,可直接寻址的地址空间1M(2*20)字节 8088:准16位机,CPU内部数据总线16位,外部8位,20位地址总线,推出8088的目的是为了向下兼容以前的8位微型机.,在编程结构下,按功能分可将8086分为两个部分:总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)总线接口部件(BIU)的功能和组成:功能:总线接口部件负责CPU与存储器、输入/输出设备之间的数据传送,包括对存储器读写数据操作、对I/O接口的读写操作以及取指令操作.执行部件(EU)的功能和组成:功能:负责指令的执行的部件.,Intel 8088的功能结构,BIU和EU协调工作的管理原则:(1)当8086指令队列中有2个字节(8088有1个字节)为空时,BIU自动将指令取到指令队列中.(2)当EU执行一条指令时,它先从指令队列的队首取出指令代码,再用几个时钟周期去执行指令.在指令执行的过程中,如果必须访问存储器或I/O设备,则EU请求BIU进入总线周期去完成访问内存或I/O端口的操作.如果BIU此时正好空闲,则立即响应总线请求;如果此时BIU正在取指令,需完成当前取指令周期,然后去响应EU的总线请求.(3)当指令队列已满,而且EU对BIU无总线请求,BIU进入空闲状态.(4)当执行转移、调用和返回指令时,指令队列清零,BIU再向指令队列中装入另一个程序段的指令.原因是下面要执行的指令不是指令队列中的下一条指令了.,指令队列的存在使8086/8088的EU和BIU并行工作,从而减少了CPU为取指令而等待时间,提高了CPU的利用率,加快了整机的运行速度.在整个程序运行期间,BIU总是忙碌的,效率很高.,执行部件(EU)的组成:组成:通用寄存器组、算术逻辑运算单元(ALU)、标志寄存器(FLAGS)和内部控制逻辑EU五部分组成.(1)数据寄存器一般用于存放参与运算的数据或运算的结果.4个数据寄存器AX、BX、CX、DX既可以作为16位寄存器使用,也可以作为8位寄存器使用.用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL.,AX(AH、AL):累加器.有些指令约定AX(或AL)寄存器为累加器,如乘法、除法、输入/输出等指令.累加器:既向ALU提供操作数,又接收存放ALU的运算结果.MUL BL:BLALAXBX(BH、BL):基址寄存器.可用作基址寻址的基址寄存器,在计算内存地址时,常用来存放基址.MOV AX,BXCX(CH、CL):计数寄存器.循环和串操作中用作计数器.DX(DH、DL):数据寄存器.除用作通用寄存器外,在I/O指令中用作端口地址寄存器,乘除指令中用作辅助累加器.IN AL,DXMUL BX:BXAXDX:AX,(2)指针寄存器堆栈指针寄存器SP(Stack Pointer)基址指针寄存器BP(Base Pointer)BP、SP常用来指示堆栈段中相对于段起始地址的偏移量.BP一般用于访问堆栈段任意单元,SP用于访问堆栈段栈顶单元.MOV AX,BP(3)变址寄存器源变址寄存器SI(Source Index)目的变址寄存器DI(Destination Index)SI、DI常用于变址寻址方式,访问数据段任意单元.MOV AX,SIMOV AX,DI,(3)标志寄存器(FLAGS)FLAGS共16位,其中7位未用,07位与Intel的8位微型机相同.,状态标志:CF(Carry Flag):进位标志.如果加法操作使最高位产生进位,或减法操作从最高位有借位时,CF为1,否则CF为0.PF(Parity Flag):奇/偶标志.如果运算结果中所含的1的个数为偶数,则PF为1,否则为0.AF(Auxiliary Carry Flag):辅助进位标志.字节运算时,低半个字节向高半个字节有进位或有借位时,AF=1,否则AF=0;字运算时,低字节向高字节有进位或有借位时,AF=1,否则AF=0.,状态标志:ZF(Zero Flag):零标志.如果当前运算的结果为零,则ZF为1,否则为0.SF(Sign Flag):符号标志位.当运算结果的最高位为1时SF=1,否则SF=0.指出当前运算执行后的结果是正还是负.OF(Overflow Flag):溢出标志.在运算过程中,如果操作结果超过了带符号数的范围则称为溢出,OF被置为1,否则OF置为0.如果8位带符号数的范围是-128+127,16位带符号数的范围是-32768+32767.,控制标志:DF(Direction Flag):方向标志.控制串操作命令方向的标志.如果DF为0,串操作过程中地址自增,DF为1,串操作过程中地址自减。IF(Interrupt Flag):中断标志.控制可屏蔽中断的标志.如果IF为0,CPU不能对可屏蔽中断做出响应,IF为1则可以接受可屏蔽中断请求。TF(Trap Flag):跟踪标志.如果TF为1,则CPU处于单步执行指令的工作方式.这种方式便于进行程序调试.每执行一条指令后,自动产生一次内部中断,从而使用户能逐条指令地检查程序.,运算结果的标志位如下:CF=1,PF=1,AF=1,ZF=0,SF=0,OF=0.可以看出如作为无符号数运算,则相当于完成十进制数202+120,结果322,显然超出了8位二进制数所能表示的最大无符号数255,运算结果溢出,CF=1.当看为有符号数运算时,相当于十进制数(-54)+(+120),结果+66,不溢出,OF=0.,判断溢出的方法,两个同号数相加,运算结果的符号如果与加数、被加数的符号不同,则产生溢出;,运算结果的标志位如下:CF=0,PF=1,AF=1,ZF=0,SF=1,OF=1.可以看出如作为无符号数运算,则相当于完成十进制数20682+28018,结果48700,显然没有超出了16位二进制数所能表示的最大无符号数65535,运算结果没有溢出,CF=0.当看为有符号数运算时,结果48700已经超出了16位有符号数表示的范围-32768+32767,结果溢出,OF=1.,例1:执行两个数的加法,分析对标志位的影响,例2:执行两个数的加法,分析对标志位的影响,总线接口部件(BIU)的组成:组成:段寄存器(CS、DS、SS、ES)、指令指针寄存器(IP)、地址加法器、内部暂存器、指令队列缓冲器及I/O控制逻辑等部分组成.(1)段寄存器CS代码段寄存器DS数据段寄存器SS堆栈段寄存器ES扩展段寄存器采用段寄存器的优点为:解决了16位寄存器如何访问大于64KB的内存空间的问题可以实现程序重定位,即一个小于64KB的程序可通过改变段寄存器的内容放到1MB空间中的任意段位置,从而为同时运行多道程序提供了方便.,IBM PC机对段的起始地址有限制,即段不能从任意地址开始,必须从任一小段(paragraph)的首地址开始.从0地址开始每16字节为一小段,对于16位地址总线,段内存储器小段地址如下.,(2)地址加法器用于产生20位物理地址.物理地址的获得方法是:将段寄存器的内容左移4位,与偏移地址(即对段首的偏移量)在地址加法器内相加,产生20位物理地址.根据寻址方式的不同,偏移地址可以来自程序计数器(IP)或其他寄存器.假设CS=8200H,IP=1234H,则物理地址为83234H.,(3)指令队列缓冲器8086有6字节缓冲器,8088有4字节缓冲器.在执行部件执行指令的同时,可以从内存中取出下一条或下几条指令放到缓冲器,一条指令执行完成后,可立即译码执行下一条指令,从而解决了以往CPU取指令期间,运算器的等待问题.由于取指令和执行指令并行进行,从而提高了CPU的效率.(4)输入/输出控制电路(总线控制逻辑)输入/输出控制电路控制CPU与外部电路数据交换.8086有20条地址线,16条数据线,由输入/输出控制电路控制分时复用CPU芯片的16条引脚.(5)内部暂存器用于内部数据的暂存,该部分对用户透明,用户无权访问.(6)指令指针寄存器(IP)又称指令计数器,存放预取指令的偏移地址.自动加1.,3,1.4.2 8086/8088的引脚信号,40根线,一线多用,引脚可以分为如下五类:(1)只传送一种信息.如32脚只传送CPU发出的读信号RD*.(2)每个引脚电平的高低代表不同的信号,如28脚的IO/M*.(3)8086/8088的两种不同工作方式最小模式和最大模式下有不同的名称和定义,例如:29脚为WR*(LOCK*).(4)每个引脚可以传送两种信息.这两种信息在时间上是可以分开的.因此可以用一个引脚在不同时刻传送不同的信息,一般称这类引脚为分时复用线.如AD7AD0是地址和数据的分时复用线.当CPU访问内存或I/O设备时,在AD7AD0上首先出现的是被访问的内存单元或I/O设备的低8位地址.然后,在这些线上出现CPU进行读写的8位数据.(5)输入输出时分别传送不同的信息,如RQ*/GT0*.输入时传送总线请求信号RQ*,输出时传送总线请求允许信号GT0*.,GND、Vcc(引脚1、20、40):第1、20引脚为地,第40引脚为电源.AD0AD7:低8位地址、数据复用端、双向工作.A15A8:高8位地址输出端.A19/S6A16/S3(引脚3538):地址/状态复用引脚,输出在总线周期的T1状态输出要访问的存储器或I/O端口的地址,T2T4状态,用来输出CPU的状态信息.其中,S6:总为0,表示当前8086/8088与总线是相连的 S5:中断允许标志的当前设置(IF),1表示允许可屏蔽中断请求 S4/S3:合起来表示当前正在使用哪个段寄存器.,NMI(NonMaskable Interrupt,引脚17):不可屏蔽的中断输入引脚 上升沿触发,不受IF影响.INTR(Interrupt Request,引脚18):可屏蔽的中断请求信号输入引脚 高电平有效,受IF影响.CLK(Clock,引脚19):时钟,输入RESET(Reset,引脚21):复位信号,输入高电平有效.复位信号要求至少维持4个时钟周期.CPU将结束当前操作,并将FLAG、IP、DS、ES、SS及指令队列清零.CS置为FFFFH,当复位信号变低电平时,CPU从FFFF0H开始执行程序.,READY(Ready,引脚22):“准备好”信号,输入高电平有效.是由CPU要访问的存储器或者I/O设备发来的响应信号.当其有效时,表示存储器或者I/O设备已准备好,CPU可以进行数据传送;若还未准备好,则使READY信号为低电平.CPU采集到低电平的READY信号后,自动插入TW,直到READY变为高电平后,CPU才脱离等待状态,完成数据传送过程.TEST*(Test,引脚23):测试信号,输入低电平有效.结束等待状态.和WAIT指令结合使用,用于CPU与外部硬件同步.CPU执行WAIT指令时,处于等待状态,当TEST信号有效时,结束等待状态,CPU继续执行被暂停的指令.RD*(Read,引脚32):读信号,输出读信号是一个低电平有效的输出信号,当RD为低电平时,表明CPU正在对内存或外设进行读操作.,MN/MX*(Minimum/Maximum,引脚33):最大和最小模式控制信号,输入.接+5V电压,则CPU处于最小模式;接地,则处于最大模式.第2431引脚信号功能与8088的工作模式有关,在相应工作模式中介绍.,1.4.3 8086/8088的工作方式,8086/8088可以在两种模式下工作:最大模式和最小模式.(1)最小模式:整个微型计算机系统只有一个CPU,所有的总线控制信号都直接由这个CPU产生,因此,系统的总线控制电路被减到最小.(2)最大模式:包括两个以上的CPU,其中一个为主处理器8086/8088,其他的称为协处理器,协助主处理器进行工作.如:8087数字运算协处理器.(3)实现:8086/8088第33引脚(MN/MX*)接地为最大模式,接+5v电压为最小模式.,8087协处理器,浮点数据处理的微处理器.使一般的算术运算及常用的函数都由硬件直接完成,运算速度提高10100倍甚至更高.例如:当系统时钟为5MHz时,8087进行平方根运算只用36us,若用8086/8088指令编程完成该运算则需要19600us.,最小模式下的系统配置,配置组成:(1)一片8284A时钟发生器:产生系统所需要的时钟信号CLK,同时对外部READY信号和系统复位信号RESET进行同步,它的输出送向8086相应引脚.(2)三片8282地址锁存器:用于20位地址信号锁存,使得整个总线读写周期地址信号始终有效,以支持8088CPU地址、数据总线分时复用的工作方式.(3)两片8286总线驱动器又称总线收发器:当系统所含存储器和外设较多时,为了提高数据总线的驱动能力,可以接入8286芯片.,8282与8088的连接,8286与8088的连接,最小工作模式下第2431引脚信号功能INTA*(Interrupt Acknowledge,引脚24):中断响应信号,输出,是对中断请求设备的响应.INTA*信号实际上是位于连续周期中的两个负脉冲,第一个负脉冲通知外部设备的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码.ALE(Address Latch Enable,引脚25):地址锁存允许信号,输出,高电平有效.ALE是8086/8088提供给地址锁存器8282的控制信号,在总线周期的T1状态,ALE输出高电平,表示当前地址/数据复用总线上输出的是地址信息,8282将地址进行锁存(对地址进行备份).,DEN*(Data Enable,引脚26):数据允许信号,输出,低电平有效.提供控制信号,通知收发器,CPU准备接收或发送一个数据.在读周期,DEN从T2状态的中间开始变为低电平,一直保持到T4的中间;在写周期时,DEN在T2的一开始就变为低电平,一直保持到T4的中间.DT/R*(Data Transmit/Receive,引脚27):数据收发信号,输出.数据收发方向的控制信号,通知总线收发器是接受还是发送数据.为高电平,则进行的数据发送,否则是接收数据.,IO/M*(Memory/Input and Output,引脚28):输入输出/存储器控制信号,输出.用来区分CPU访问存储器还是I/O端口.高电平,CPU与I/O端口传送数据;低电平,CPU与存储器传送数据.WR*(Write,引脚29):写信号,输出,低电平有效.WR有效时,表示CPU当前正在进行对存储器或I/O之间的写操作,有效电平保持在T2、T3、TW状态.,HOLD(Hold Request,引脚31):总线保持请求信号,输入,高电平有效.当系统中其他部件需要占用总线时,通过该引脚向CPU发出的总线请求信号,比如DMA控制器就是通过这种方式申请总线占用的.HLDA(Hold Request Acknowledge,引脚30):总线保持响应信号,输出.为高电平有效.当CPU查询到HOLD信号时,如果CPU允许其他部件占用总线,则在当前总线周期结束时,于T4状态从HLDA引脚发出高电平响应信号.同时,CPU的所有三态总线进入浮置状态,申请部件接到HLDA后接管总线,直到操作完成,撤销HOLD信号,CPU才接管总线.,最大模式下的系统配置,8288与8086的连接,与最小模式系统相比,最大模式的配置中增加了总线控制器芯片8288.所有总线控制信号均由S2*、S1*、S0*信号经8288译码处理后产生的.采用8288可以实现多处理器配置.8288用于协调各处理器间的工作.即使不配多处理器,增加8288之后也可增强控制总线的驱动能力.8282地址锁存器和8286总线缓冲器的接法和最小模式下的接法相似,只是其控制信号不是来自CPU,而是来自总线控制器8288.即8282的地址锁存信号STB来自8288.8286输出使能信号OE*由8288数据输出使能信号DEN反相后获得.而传输方向控制信号T由8288DT/R*信号产生.,最大工作模式下第2431引脚信号功能QS1、QS0(Instruction Queue Status,引脚24,25):指令队列状态信号,输出.组合提供了前一个时钟周期的指令队列的状态。,S2*、S1*、S0*(Bus Cycle Status,引脚26、27、28):总线周期状态信号,输出组合指出了当前总线周期中所进行的数据传输过程的类型。用来产生对存储器和I/O接口的控制信号。(低电平代表1),LOCK*(Lock,引脚29):总线封锁信号,输出.为低电平时,系统中其他的总线主设备不能获得系统总线的控制权而占有总线.LOCK*信号由前缀指令LOCK产生,LOCK指令后面的一条指令执行完后,LOCK*信号失效.另外,在DMA期间,LOCK*浮空.RQ*/GT1*、RQ*/GT0*(Request/Grant,引脚30、31):总线请求信号输入/总线请求允许信号输出,双向.这两个信号端可供8086/8088以外的两个总线主设备向8086/8088发送使用总线的请求信号RQ*(相当于最小模式时的HOLD信号).而8086/8088在现行总线周期结束后让出总线,发出总线请求允许信号GT*(相当于最小模式时的HLDA信号),此时,外部的总线主设备便获得了总线的控制权.,1.4.4 8086/8088的存储器管理,8086/8088CPU有20条地址线,存储器地址的编址范围是00000HFFFFFH,共1M字节的存储空间.但8086/8088内部的寄存器都是16位的,显然无法直接对1M的内存空间进行寻址,因而引入了分段的概念.引入分段后,一个存储单元的地址就可以用段地址和偏移量两部分来表示,段地址由段寄存器(CS、DS、SS、ES)提供,偏移量由IP、SP、BP、SI、DI、BX等寄存器提供.不同的指令有不同的组合方式.计算一个存储单元的物理地址时,先将其段寄存器的内容左移四位(相当于乘十进制数16),得到一个20位的值,然后加上16位的偏移量.,同一物理地址可以由不同的段地址和偏移量表示.例如:CS=3000H,IP=2000H,物理地址=32000H CS=3100H,IP=1000H,物理地址=32000H CS=3200H,IP=0000H,物理地址=32000H段地址的引入,为程序在内存中浮动创造了条件.因为一般用户程序只涉及偏移地址,段地址在程序装入内存时由操作系统分配,所以一个程序可在内存中任何一个逻辑段(64KB)中运行.,归纳段寄存器和其他寄存器组合指向存储单元示意图如下:,联系实验:13181100606孔红英老师,