第二章 计算机基本原理

第二章 计算机基本原理

2.1 8086微机的基本结构

在这里插入图片描述

2.1.1 8086微机的基本结构图

对汇编语言程序员来说,计算机硬件的结构如下图所示(CPU、内存储器、接口(外设)):

2.1.2 微处理器

一、定义

  • CPU是中央处理器(Central Processing Unit)的简称,是计算机内部对数据进行处理并对处理过程进行控制的部件。

  • 伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上。这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器(MPU)”。

二、组成:

  • 运算器:完成各种算术运算和逻辑运算。
  • 控制器:取指令,经译码分析后发出各种控制命令,如取数、存数、发出执行指令的命令等。
  • 寄存器:CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。

三、8086微处理器的一般性能特点

  • 16位的内部结构,16位双向数据线;
  • 20位地址线,可寻址1M字节存储单元;
  • 较强的指令系统;
  • 利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口;
  • 中断功能强,可处理内部软件中断和外部中断,中断源可达256个;
  • 单一的+5V电源,单相时钟5MHz;
  • 8086可以和浮点运算器、I/O处理器或其他处理器组成多处理器系统,从而极大地提高了系统的数据吞吐能力和数据处理能力。

2.1.3 内存储器(主存储器)

一、定义

  • 存放程序和数据的部件;由许多内存单元组成;每个内存单元有一个地址。 8086计算机的内存以字节编址。

二、内存单元的地址

  • 内存单元的地址是为了标识和存取每一个存储单元,以正确地存放或取得信息,给每个存储单元规定一个唯一的地址(物理地址)。
  • 说明
    • 地址的形成:由CPU和存储芯片共同决定。
    • 物理地址的空间:呈线性增长,地址从0开始编号,顺序地每次加1。
    • 物理地址的表示:在机器里用无符号二进制数表示,书写格式为十六进制数。如23450H、0A209FH。
    • 表示的地址范围:8086地址总线为20位,可访问的字节单元地址范围为 00000H~0FFFFFH也就是1MB的寻址空间。

四、内存单元的内容

  • 定义:一个内存单元中存放的信息,每个单元中可存放一个字节。

  • 特点:可重复读取内存单元中的数据,写则覆盖原数据。

  • 内存容量:内存所具有的单元数。基本单位是B(字节)

  • 目前常用的容量单位:KB、MB、GB、TB等。传说中还有NB、DB、CB。

    • 字节(Byte):简写为B,1个字节由8个二进制位组成。是计算机中用来表示存储空间大小的基本容量单位。计算机内存的存储容量,磁盘的存储容量等都是以字节为单位表示的。
    • 位(bit):计算机所能表示的最小的数据单位。简称为位(bit,比特)。是计算机中最直接最基本的操作。

    关系:

    • 1 B = 8 b i t 1B=8bit

    • 1 K B = 1024 B = 2 10 B 1KB=1024B=2^{10} B

    • 1 M B = 1024 K B = 2 10 K B = 2 20 B 1MB=1024KB=2^{10}KB=2^{20} B

    • 1 G B = 1024 M B = 2 10 M B = 2 30 B 1GB=1024MB=2^{10}MB=2^{30} B

    • $1TB=1024GB=2{10}GB=2{40} B $

    • 1 P B = 2 10 T B 1 E B 2 10 P B 1 Z B 2 10 E B 1 Y B 2 10 Z B 1PB=2^{10}TB,1EB=2^{10}PB,1ZB=2^{10}EB,1YB=2^{10}ZB

五、字和字长

  • 在计算机中作为一个整体被存取、传送或处理的二进制位数称为一个字,每个字中二进制位数的长度,称为字长。
  • 一个字由若干个字节组成,不同的计算机系统的字长是不同的,常见的有8位、16位、32位、64位等,字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计算机性能的一个重要指标。
  • 字与字长的区别:
    • 字是单位,而字长是指标,指标需要用单位去衡量。正象生活中重量与公斤的关系,公斤是单位,重量是指标。
    • 字节长度是固定的;字的长度是不固定的,不同计算机的字长是不同的。 8086CPU中的1个字包含2个字节。

2.1.4 系统总线(内总线)

一、定义

  • 是将CPU与存储器及外部设备连接起来的,用来传输信息的一组公共导线。共有三条总线。

二、三条总线

  • 地址总线(AB):指出信息的来源和目的地。
  • 数据总线(DB):传送数据,数据总线赿宽,数据处理的能力就赿强。
  • 控制总线(CB):控制总线主要用来传送控制信号和时序信号。

三、总线图

2.2 8086的寄存器组与内存管理

2.2.1 8086CPU内部结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-auhO2lg4-1584326732857)(C:%5CUsers%5Chp%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200229111319362.png)]

2.2.2 8086通用寄存器

一、通用寄存器

  • 通用寄存器包括了8个16位的寄存器:AX、BX、CX、DX、SP、BP、DI及SI。可以细分为数据通用寄存器、指针寄存器和变址寄存器。

二、数据通用寄存器

  • 通用寄存器分为4个16位的寄存器。
  • 分类:
    • AX:作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。
    • BX:在计算存储器地址时,可作为基址寄存器使用。
    • CX:常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。
    • DX:在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址。
  • 这4个16位寄存器又可分别分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它们既可作为4个16位数据寄存器使用,也可作为8个8位数据寄存器使用,在编程时可存放源操作数、目的操作数或运算结果。数据寄存器是存放操作数、运算结果和运算的中间结果,以减少访问存储器的次数,或者存放从存储器读取的数据以及写入存储器的数据的寄存器。

三、指针寄存器

  • SP(堆栈指针寄存器): 与SS(堆栈段寄存器)一起确定栈顶的当前位置;
  • BP(基址指针寄存器): 与SS用来确定堆栈段中的某一存储单元的地址;

四、变址寄存器

  • SI(源变址寄存器):在串操作指令中,以SI表示源数据串的地址。
  • DI(目的变址寄存器):在串操作指令中,以DI表示目的数据串的地址。

这四个寄存器经常的用途是在存储器寻址时,提供偏移地址。用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍) 。

五、堆栈

  • 堆栈是按先进后出的的原则在内存中组织的一个存储区域。该区域一端固定一端活动,固定端称为栈底,而活动端称为栈顶。往堆栈中存入或取出信息都在栈顶进行。CPU中的堆栈指针SP始终指向栈顶,而堆栈段寄存器SS则指明了堆栈段的起始位置。
  • 堆栈是一个很重要的概念,也是编程的基本手法。堆栈的设置主要用来解决子程序嵌套,递归子程序及多级中断中一些比较难以处理的问题,还可用来保护现场,保存中间结果,及子程序和中断服务程序的调用和返回等。

2.2.3 8086专用寄存器

一、控制寄存器

  • 控制寄存器可分为指令指针寄存器和标准寄存器。

二、指令指针寄存器IP

  • IP是计算机中很重要的一个控制寄存器,用来存放代码段当中的偏移地址。在程序运行的过程中,它始终指向下一条指令的首地址,它和CS一起形成取下一条指令的实际地址

三、标志寄存器

  • Flags(标志寄存器) :共16位,一般把每一位分别使用,8086使用其中的9位,用于存放当前程序执行的状况和运算结果的特征。9个标志位可分为二组:

    • 状态标志:用于反映指令执行的结果(受算术运算和逻辑运算结果的影响)

      • 进位标志CF:

        主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

      • 奇偶标志PF:

        用于反映运算结果中低8位中含有“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则为0。

      • 溢出标志OF:

        用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

      • AF辅助进位标志(半进位标志):

        主要用来反映D3位向D4位产生进位或借位的情况,如果有进位或借位,那么,其值为1,否则其值为0。

      • ZF零标志:

        用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。

      • SF符号标志:

        用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1 。

    • 控制标志:通过执行特定指令来设置,以控制某些指令的执行方式。 控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。

      • TF(Trap Flag)追踪标志或跟踪标志:
        控制CPU是否进入单步调试方式。当TF=1时,每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。
      • 中断允许标志IF(Interrupt-enable Flag)
        用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。具体规定如下:
        • 当IF=1时,CPU响应外部的可屏蔽中断发出的中断请求
        • 当IF=0时,CPU不响应外部的可屏蔽中断发出的中断请求
          CPU的指令系统中有专门的指令来改变IF的值。
      • 方向标志DF(Direction Flag )
        • DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。当DF=0时,内存地址自动递增;当DF=1时,内存地址自动递减。CPU的指令系统中有专门的指令来改变DF的值。

四、段寄存器

  • 用于存放逻辑段的段基地址,将程序的不同部分放入相应段(逻辑段的概念后面将要介绍)
  • 分类:
    • CS:代码段寄存器
      代码段用于存放指令代码
    • DS:数据段寄存器
    • ES:附加段寄存器
      数据段和附加段用来存放操作数
    • SS:堆栈段寄存器
      堆栈段用于存放返回地址,保存寄存器内容,传递参数

2.2.4 8086的内存管理

一、8086的物理内存组织

  • 8086计算机的内存以字节编址,每个内存单元有一个惟一的地址,可存放一个字节。字节是8086程序对数据的最小存取单位。
  • 8086存取一个字或双字采用“小端方式”的方案:
    • 1个字占据两个相邻的内存单元。低字节放在低地址单元,高字节放在高地址单元;字的地址由
      其低地址来表示。
    • 双字类似字。对于同一个内存地址,既可以看作是字节单元的地址,也可以看作是字或双字单元的地址,取决于存取的数据类型。

二、内存的分段管理

  • 为何分段:

    • CPU有20根地址线,可直接访问的物理空间为1M字节,其编码区间为:00000H ~ FFFFFH。而CPU的数据总线是16位,寄存器也是16位或8位,它们的编码范围仅为:0000H ~ FFFH。这样,如果用16位寄存器来访问1MB内存的话,则只能访问内存的最低端的64KB,其它的内存空间将无法访问。为了能用16位寄存器来有效地访问1MB的存储空间,16位CPU采用了内存分段的管理模式。
  • 段的分法
    把1MB内存空间划分成若干个逻辑段(简称段),每个逻辑段的要求:

    • 逻辑段的起始地址(通常简称为段地址)必须是16的倍数,即最低4位二进制必须全为0。
    • 逻辑段的最大容量为64KB。
  • 逻辑地址的表示方法:段地址:偏移地址
    说明:

    • 段地址表示段的起始地址(xxxxxH),并不是任意一个单元的地址都能作段的起始地址,只有那些形式为xxxx0H的地址才能作段的起始地址,该起始地址存入16位寄存器时,将0省略即可。存放在DS、CS、ES、SS段寄存器中。
    • 每个段的大小最大64KB,但在实际编程中,系统根据需要来分配,不一定非要占用64KB的最大空间。
    • 逻辑段之间可以重叠,也可以不重叠。
      图中是各逻辑段之间的分布情况示意图,其中有相连的段(如C和D段)、不相连的段(如A和B段)以及相互重叠的段(如B和C段)。

偏移地址(段内偏移量或有效地址),表示段内某单元相对本段起始地址的偏移值(即该内存单元相对其所在段的段首址间的字节距离,偏移地址为16位,可直接放入16位寄存器中表示。

逻辑地址:存储单元地址的表达形式,由程序给出。
即 段地址:偏移地址
物理地址:存储单元在1MB空间内的实际地址,每一个内存单元有一个唯一的地址号。由系统根据逻辑地址自动转换生成的。

第3节 Intel的32位CPU在不同模式下寻址

效地址),表示段内某单元相对本段起始地址的偏移值(即该内存单元相对其所在段的段首址间的字节距离,偏移地址为16位,可直接放入16位寄存器中表示。

逻辑地址:存储单元地址的表达形式,由程序给出。
即 段地址:偏移地址
物理地址:存储单元在1MB空间内的实际地址,每一个内存单元有一个唯一的地址号。由系统根据逻辑地址自动转换生成的。

第3节 Intel的32位CPU在不同模式下寻址

奇偶标志PF:用于反映运算结果中低8位中含有“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则为0。

原创文章 165 获赞 197 访问量 8万+

猜你喜欢

转载自blog.csdn.net/weixin_43751983/article/details/104893737