8086计算机组织结构

  1.课前思考
  (1) 微计算机系统一般包括哪两部分?  答:软件于硬件系统
  (2) 8086微处理器主要由哪几部分组成?它们的功能是什么?
  (4) 在Intel系列微型机中是如何编址的?
  (5) 一个字节和一个字在存储器中是如何存储的?
  (6) 字单元的地址是偶数或是奇数时,访问存储器有什么不同?
  (7) 8086微型机可以访问的最大存储空间是多少?应用几位地址来表示?
  (8) 在8086微机中,如何提供20位的地址?如何形成物理地址?
  (9) 8086微机中,存储器空间可分为几种逻辑段?每段的可寻址空间是多大?段地址存放在哪些寄存器中?
  (10) CPU中有哪几类寄存器,它们各自的专门用途是什么?
  (11) 条件码标志和控制标志各包含几位?它们每位所表示的意义是什么?
  (12) 什么是DOS和BIOS功能调用?

  2.学习目标
  了解计算机系统的主要组成部分;掌握存储器地址分段的方法以及存储单元物理地址的形成方法;熟悉8086各类寄存器的用途;熟悉标志寄存器各标志位的意义。

  3.学习指南
  本章内容是汇编语言程序设计所需要了解的硬件知识,已熟悉计算机基本原理的学员可直接学习后面的章节。

  4.难重点
  存储器分段;存储器单元物理地址的形成;各寄存器的用途。 

  5.知识点
  2.1 80x86微处理器系列概况

  2.2 基于8086的微计算机系统
 ● 8086微处理器的基本组成 
 ● 微计算机的软件系统

  2.3 8086寄存器组
 ● 通用寄存器
 ● 专用寄存器
 ● 段寄存器

  2.4 8086微处理器的存储器管理
 ● 存储单元的地址和内容
 ● 存储器分段管理

  2.5 外部设备
 ● I/O端口
 ● DOS和BIOS功能调用


 

1.从8080/8085到8086
  8080计算机组织介绍

8086是1978年Intel公司推出的16位微处理器。与其前一代8位微处理器8080/8085相比,8086有如下几点进步:
  (1)8086有16位数据总线,处理器与外部传送数据时,一次可传送16位二进制数,而8080/8085一次只能传送8位。 
  (2)8086的寻址空间从8080/8085的64K字节提高到1M字节。 
  (3)8086采用了流水线技术,而8080/8085是非流水线结构。在一个具有流水线结构处理器的系统中,可以实现处理器的内部操作与存储器或I/O接口之间的数据传送操作重叠进行,从而提高了处理器的性能。 

  2.从8086到8088 
  8086的内部寄存器、功能部件、数据通路以及对外的数据总线均为16位宽度,它的出现是计算机技术上一个很大的进步。但是,当时已有的微处理器外围配套芯片的数据总线都是8位的,为了使用这些8位的外围芯片组成系统,Intel公司又推出了8088微处理器。8088的内部结构与8086基本相同,也提供16位的处理能力,但对外的数据总线设计成8位。 

  1981年IBM公司选择8088微处理器作为核心来设计IBM PC微计算机系统,推向市场后获得了巨大的成功,为后来的80x86系列微处理器成为主流微计算机的处理核心打下了基础。 

  3.80286、80386到Pentium微处理器 
  由于用户对PC机性能的要求迅速提高,Intel公司在1982年推出了80286微处理器,它仍然是16位结构。80286的内部及外部数据总线都是16位的,但它的地址线是24位的,可寻址16M字节的存储空间。80286有两种工作方式,即实模式和保护模式。实模式与8086工作方式相同,但速度比8086快。保护模式除了仍具有16M字节的存储器物理地址空间外,她还能为每个任务提供1G(230)字节的虚拟存储器地址空间。保护方式把操作系统及各任务所分配到的地址空间隔离开,避免程序之间的相互干扰,保证系统在多任务环境下正常工作。

  80386是1985年研制出的一个32位微处理器,内部及外部数据总线均为32位,地址线也为32位,因此它可处理4G(232)字节的物理存储空间。80386为每个任务提供的虚拟存储空间增加到64T(246)字节。

  1989年Intel公司又研制出新一代的微处理器80486,80486芯片内除了有一个与80386相同结构的主处理器外,还集成了一个浮点处理部件FPU以及一个8K字节的高速缓冲存储器(cache),使80486的计算速度和总体性能比80386有了明显的提高。

  1993年Intel公司又推出了Pentium微处理器,此后几乎每两年就推出一个新型号,至今市场上的Intel微处理器已是PentiumⅣ。由此可见,微处理器芯片的发展速度是非常快的。在微处理器的发展过程中,芯片主频越来越快,寻址空间越来越大,数据和地址总线也越来越宽,加之许多体系结构方面的改进措施,如流水线结构、存储器层次结构等,使微计算机的性能大大提高,其应用领域也更加广泛。

2.2 基于8086的微计算机系统

  计算机系统包括硬件和软件两部分。微计算机的硬件有包括中央处理器(CPU)的微处理器芯片、存储器(MEMORY)、输入/输出(I/O)接口三部分组成。软件是各种程序的总和,包括系统软件和应用软件。

  
2.2.1 8086微处理器的基本组成
 
  Intel 8086微处理器是一个16位结构,从图2.1中可以看出,整个微处理器分成两大功能部件,即执行部件(Execution Unit,EU)与总线接口部件(Bus Interface Unit,BIU)。EU与BIU通过内部总线连接,它们既可协同工作,又可独立工作。当EU与BIU各自独立工作时,就体现出8086内部操作具有并行性的特征。


  1. 执行部件(EU)
  执行部件EU是执行程序的的核心部件,完成指令译码、运算及其它操作的执行。执行部件由ALU(算术逻辑运算部件)、通用寄存器组、状态标志寄存器以及控制电路组成。


  2. 总线接口部件(BIU)
  总线接口部件BIU负责与存储器、I/O接口电路连接,并形成20位的地址码和16位的数据,通过总线进行数据传送。BIU由一些专用寄存器、指令队列缓冲器、地址加法器等功能部件组成。
2.2.2 微型计算机的软件系统
 
  计算机软件是计算机系统的重要组成部分,它可以分成系统软件和应用软件两大类。

  1. 系统软件
  系统软件是由计算机生产厂家提供给用户的一组程序,这些程序是控制和协调计算机及其外部设备,支持应用软件的开发和运行的各种软件。
  
  操作系统使系统软件的核心,它的功能是统一管理和分配计算机的软、硬件资源,提高计算机的工作效率。同时,为程序员提供方便、有效和可靠的计算机工作环境。目前微机上广泛使用的是Windows系列的操作系统。图2.2表示了系统软件的主要组成部分。
·文件管理系统:用来处理存储在外存储器中的大量信息,它可以和外存储器的设备驱动程序相连接,对存储在其中的信息以文件(File)的形式进行取、复制及其他管理操作。

  ·I/O驱动程序:用来对I/O设备进行控制或管理。

  ·文本编辑程序:用来建立、输入或修改文本,并使它存入内存或硬盘中。
文本是指由字母、数字、符号等组成的信息,它可以是一个用汇编语言编写的程序(称为汇编语言源程序),也可以是一组数据或一份报告。

  ·翻译程序:用于编写程序的计算机语言可分为三类:机器语言、汇编语言和高级语言。机器语言是用二进制代码指令来表示各种操作的计算机语言,它由0、1代码组成,可由计算机直接识别。
  
  汇编语言是一种用符号表示指令的程序设计语言,用它编写的程序必须由汇编程序翻译成机器语言程序,才能被计算机执行。汇编程序有MASM、TASM等多种版本。

  高级语言是接近于人类自然语言和数学表示的程序设计语言,用它编写的程序也必须翻译成机器语言才能在机器上执行。高级语言的翻译程序有两种方式:一种是编译程序,另一种是对高级语言程序边解释边执行的解释程序。

  ·连接程序:用来把要执行的程序与库文件或其他已经编译或翻译好的子程序(能完成一种独立功能的程序模块)连接在一起,形成机器能执行的程序。

  ·装入程序:用来把程序从外存储器装入到内存储器,以便机器执行。

  ·调试程序:是系统提供给用户调试程序的一种工具,微机上常用的调试程序是DEBUG,它有装入、修改、显示、单步执行和反汇编等调试功能。

  ·系统程序库:各种标准程序、子程序和一些文件的集合称为程序库,它可以被系统程序或用户程序调用。操作系统还允许用户建立程序库,以提高不同类型用户的工作效率。

  2. 应用软件
  应用软件是直接服务于用户的程序系统,一般分为两类。一类是为特定需要开发的实用程序,如财务软件,订票系统等;另一类是为了方便用户使用而提供的软件工具,如用于系统维护的PCTOOLS、NORTON,用于辅助设计的AUTOCAD,用于字表处理的的EXCEL等。
3. 段寄存器

  8086微处理器共有4个16位的段寄存器,在寻址内存单元时,用它们直接或间接地存放段地址。
  代码段寄存器CS:存放当前执行的程序的段地址。
  数据段寄存器DS:存放当前执行的程序所用操作数的段地址。
  堆栈段寄存器SS:存放当前执行的程序所用堆栈的段地址。
  附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。
1.存储单元的地址和内容
  计算机存储信息的基本单位是一个二进制位(bit)。一位可存储一个二进制数:0或1,每8位组成一个字节。

微机中常用的数据类型有:
  ·字节:存储器中存取信息的基本单位。我们常说某存储器容量是64MB,就是说该存储器有64M(1M=220)个字节。其位编号如图2.5(1)所示。
  ·字:一个字16位,占用两个字节,8086的字长就是16位的。一个字的位编号如图2.5(2)所示。
  ·双字:一个双字32位,由4个字节组成。其位编号如图2.5(3)所示。
  ·四字:一个四字64位,由8个字节组成。其位编号如图2.5(4)所示。

 在8086中,段寄存器和与其对应存放偏移地址的寄存器之间有一种默认的组合关系,如下所示:

          段寄存器             偏移地址寄存器
         fengexian.gif
            CS                  IP
           SS                SP或BP
           DS                BX、DI、SI 
           ES               DI(用于串指令)

  在这种默认的组合下,程序中不必专门指定其组合关系,但程序如用到非默认的组合关系,则必须用段跨越前缀(如ES:)加以说明。

  2.5 外部设备
 
  计算机运行时的程序和数据以及所产生的的结果都要通过输入/输出设备与人交互,或者保存在大容量的外存储器中,因此输入/输出设备(或简称外部设备)是计算机必不可少的组成部分,对外设进行有效的管理和信息传输是汇编语言的重要应用领域之一。

  从图2.1可见,外部设备与主机(微处理器和存储器)的通信是通过外设接口进行的。每个接口包括一组寄存器。一般说来,这些寄存器有三种不同的用途:

  1. 数据寄存器:用来存放要在外设和主机间传送的数据,这种寄存器实际上起缓冲器的作用。
  2. 状态寄存器:用来保存外部设备或接口的状态信息,以便微处理器在必要时测试外设状态,了解外设的工作情况。 
  3. 命令寄存器:CPU给外设或接口的控制命令通过此寄存器送给外部设备。例如,CPU要启动磁盘工作,必须发出启动命令等。

  各种外部设备都有以上三种类型的寄存器,只是每个接口所配备的寄存器数量是根据设备的需要确定的。

  为了便于主机访问外设,外设中的每个寄存器给予一个端口地址(又称端口号),由这些端口地址组成了一个独立于内存储器的I/O地址空间。80x86的I/O地址空间可达64KB,所以端口地址的范围是0000~FFFFH,用16位二进制代码来表示。端口可以是8位或16位。

  在80x86系列机中,由于I/O地址空间是独立编址的,所以系统提供了访问外设的输入/输出指令IN和OUT。

  为了便于用户使用外设,8086提供了两种类型的例行程序供用户调用。一种是BIOS(Basic Input/Output System),另一种是DOS(Disk Operating System)功能调用。它们都是系统编制的子程序,通过中断方式转入所需要的子程序去执行。用户通过调用DOS或BIOS例行程序来实现对外设的访问,降低了程序设计的复杂程度,缩短了开发周期。

【本章小结】
 
  1.计算机系统
  计算机系统包括硬件和软件两部分。硬件结构包括80X86微处理器、存储器和I/O子系统,这三个主要部分由系统总线连接在一起。软件分为系统软件和应用软件。操作系统是系统软件的核心,主要对系统的硬、软件资源进行管理,其中汇编程序是将汇编语言程序翻译成机器语言程序的一种系统程序。

  2.存储器
  存储器以字节为单位存储信息,一个字节单元对应一个地址编码,地址码用无符号整数来表示。8086微型机既能处理8位数据(字节),也能处理16位数据(字),字数据存储在连续的两个字节单元中。

  存储空间在逻辑上分为代码段、数据段、附加段和堆栈段,每个段可寻址64KB,段的起始地址分别由段寄存器CS、DS、ES、SS给出,段内地址称为偏移地址。

  存储器单元的物理地址(20位)的计算:物理地址=段地址×24+偏移地址。

  存储器的分段是很灵活的,各段之间可以相互独立,也可以互相重叠。

  3.8086寄存器组
  8086寄存器按功能可分为:①通用数据寄存器(AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL)②指针及变址寄存器(SP、BP、SI、DI)③段寄存器(CS、DS、ES、SS)④专用寄存器(IP、FLAGS)

  4.外部设备
  外设接口负责微处理器对I/O设备的控制和信息的传送,每个接口包括一组寄存器,分别存放控制信息、状态信息和数据信息。

  外设中的寄存器都分配一个端口地址,CPU与外设交换信息用两条专门的输入输出指令IN和OUT来完成。

  BIOS和DOS功能调用是系统提供给用户的例行程序,这些例行程序给程序员提供了易于使用的直接对硬件操作的子功能,程序员编程时可直接中断调用这些功能,而不必了解硬件操作的具体细节。