汇编(二)

目录

    • 总线概述
    • 地址总线
    • 数据总线
    • 控制总线
    • 总线练习
    • 内存
    • 寄存器
      • 通用寄存器
    • 字和字节
    • 注意

总线概述

汇编(二)_第1张图片

  • 每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互
  • 总线:一根根导线的集合
  • 总线的分类
    • 地址总线
    • 数据总线
    • 控制总线

微型计算机基本结构
汇编(二)_第2张图片

  • 举个例子
    汇编(二)_第3张图片

地址总线

  • 地址总线的宽度决定了CPU的寻址能力
  • 8086的地址总线宽度是20,所以其寻址能力是1M(2^20)
    汇编(二)_第4张图片

数据总线

  • 它的宽度决定了CPU的单次数据传送量,也就是数据传送速度
  • 8086的数据总线宽度是16,所以单次最大传递2个字节
  • 8088的数据总线宽度是8,8086的数据总线宽度是16,分别向内存中写入89D8H(注意:这里是16进制,后方的H是单词Hexadecimal的意思),如下

8088CPU分两次传送89D8,第一次传送D8,第二次传送89
汇编(二)_第5张图片

8086CPU一次就可传送89D8
汇编(二)_第6张图片

控制总线

  • 它的宽度决定了CPU对其他器件的控制能力、能有多少种控制

总线练习

  • 一个CPU的寻址能力为8K,那么它的地址总线的宽度为(13根)
  • 8080,8088,80286,80386 的地址总线宽度分别为16根, 20根, 24根, 32根。那么它们的寻址能力分别为(64K),(1M),(16M),(4G)
  • 8080, 8088, 8086, 80286, 80386 的数据总线宽度分别为8根,8根,16根,16根,32根。那么它们一次可以传输的数据为:(1B),(1B),(2B),(2B),(4B)
  • 从内存中读取1024字节的数据,8086至少要读(512次),80386至少要读(256次)

内存

各类存储区的逻辑连接
汇编(二)_第7张图片

各类存储区的逻辑连接 - 物理地址对应图
汇编(二)_第8张图片

各类存储器的物理地址情况
汇编(二)_第9张图片
内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位2^20个不同的内存单元(内存地址范围0x00000 ~ 0xFFFFF),所以8086可以利用的内存空间大小为1MB
0x00000 ~ 0x9FFFF:主存储器。可读可写
0xA0000 ~ 0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写
0xC0000 ~ 0xFFFFF:存储各种硬件/系统信息。只读

寄存器

CPU的典型构成
汇编(二)_第10张图片

  • 对程序员来说,CPU中最主要的部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制(程序员控制CPU,CPU控制其他硬件设备,程序员通过控制CPU进而间接地控制其他硬件设备)
  • 不同型号的CPU,寄存器的个数,结构和名称是不相同的(8086是16位结构的CPU)
  • 8086有14个寄存器
    • 都是16位寄存器
    • 可以存放2个字节

8086内部寄存器
汇编(二)_第11张图片

通用寄存器

  • AX,BX,CX,DX 这4个寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)
  • 通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算
  • 假设内存中有块红色的内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间

通用寄存器的作用
汇编(二)_第12张图片
CPU首先会将红色内存空间的值放入到AX寄存器中:mov ax, 红色内存空间
然后让AX寄存器与1相加:add ax, 1
最后将结果赋值给蓝色内存空间:mov 蓝色内存空间, ax

  • AX,BX,CX,DX 这4个通用寄存器都是16位的,如下图所示
    汇编(二)_第13张图片
  • 上一代8086的寄存器都是8位的,为了保证兼容,AX,BX,CX,DX 都可以分为2个独立的8位寄存器来使用
    • H代表高位寄存器
    • L代表低位寄存器
      汇编(二)_第14张图片
      汇编(二)_第15张图片

字和字节

  • 在汇编的数据存储中,有2个比较常用的单位
    • 字节:Byte,1个字节由8bit组成,可以存储在8位寄存器中
    • 字:word,一个字由2个字节组成,这2个字节分别称为字的高字节和低字节
  • 比如十进制数据20000(4E20H,0100 1110 0010 0000B),高字节的值是78(十进制),低字节的值是32(十进制)
    汇编(二)_第16张图片
  • 一个字可以存在1个16位寄存器中,这个字的高字节、低字节分别存储在这个寄存器的高8位寄存器、低8位寄存器中

注意

  • 32位CPU,64位CPU中的32和64,指的不是地址总线的宽度,指的是数据总线的宽度。这里有一个巧合,32位的CPU数据总线和地址总线都是32根,因为32位CPU其寻址能力为4GB,只能使用4GB内存的这特殊性被广泛所知,所以容易让人误解为CPU的位数,指的就是地址总线的宽度。
  • 目前市面上的CPU,地址总线的最大宽度为40根,其寻址能力为1T。所以目前,计算机能利用的最大内存为1T。
  • 数据总线的宽度 == 寄存器的位数,数据总线的宽度直接影响CPU的执行效率,即数据总线的宽度直接影响CPU的吞吐量。
  • Mac,iPhone 5s以上的机型,其CPU为64位的CPU,其数据总线的宽度为64,其寄存器一次能存储64位(8Byte)的数据,其数据总线一次能传输8Byte的数据。
  • RAM:随机存取存储器(Random Access Memory),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
  • ROM:只读存储器(Read-Only Memory),是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。

你可能感兴趣的:(汇编基础)