汇编(二)

来源:互联网 发布:日历行程软件 编辑:程序博客网 时间:2024/06/15 05:06

总线


CPU

CPU


  • 每一个CPU新品都有许多管脚,这些管脚和总线相连,CPU通过总线根外部器件进行交互

  • 总线:一根根导线的集合

  • 总线的分类

    • 地址总线

    • 数据总线

    • 控制总线

这里写图片描述


举个例子


这里写图片描述


  • 地址总线

    • 它的宽度决定了CPU的寻址能力

    • 8086的地址总线宽度是20,所以寻址能力是1M(2^20)

这里写图片描述


  • 数据总线

    • 它的宽度决定了CPU的单次数据传送量,也就是数据传送速度

    • 8086的数据总线宽度是16,所以单次最大传递2个字节的数据

  • 控制总线

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

数据总线

  • 8088的数据总线宽度是8,8086的数据总线宽度是16,分别向内存中写入89D8H如下图: 注意这里是16进制,后方的H是单词Hexadecimal的意思

这里写图片描述

8088


这里写图片描述

8086


这里写图片描述

各类存储区的逻辑连接


这里写图片描述

各类存储器的逻辑连接-物理地址对应图

这里写图片描述

各类存储器的无力地址情况


  • 内存地址空间的大小手CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位2^20个不同的内存单元(内存地址范围0x00000 ~ 0xFFFFF), 所以8086的内存空间大小为1MB

  • 0x00000 ~ 0x9FFFF:主存储器。可读可写

  • 0xA0000 ~ 0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写

  • 0xC0000 ~ 0xFFFFF:存储各种硬件\系统信息。只读

寄存器

内部部件之间由总线连接

这里写图片描述

CPU的典型构成

  • 对程序员来说,CPU中最重要部件是寄存器,可以通过改变寄存器的内容实现对CPU的控制

  • 不同的CPU,寄存器的个数、结构是不相同的(8086是16位结构的CPU)

  • 8086有14个寄存器

    • 都是16位的寄存器

    • 可以存放2个字节

      这里写图片描述

      8086内部寄存器

通用寄存器

  • AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,称为通用寄存器(又时也有特定用途)

  • 通常,CPU会线将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行计算

  • 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间

    这里写图片描述

    001

    • CPU首先会将红色内存空间的值放到AX寄存器中:mov ax,红色内存空间
    • 然后让AX寄存器与1相加:add ax, 1
    • 最后将值赋给内存空间:mov 蓝色内存空间,ax
  • AX、BX、CX、DX这4个通用寄存器都是16为的,如下图所示

    这里写图片描述

  • 上一代8086的寄存器都是8位的,为了保证兼容,AX、BX、CX、DX都可分为2个独立的8位寄存器来使用

    • H代表高位寄存器

    • L代表低位寄存器

    这里写图片描述


    这里写图片描述


字和字节

  • 在汇编的数据存储中,有2个比较常用的单位

    • 字节: byte, 1个字节由8bit组成,可以存储在8位寄存器中

    • 字:word, 1个字由两个字节组成,这两个字节分别称为字的高字节和低字节

  • 比如数据20000(4E20H, 0100111000100000B),高字节的值是78,底字节的值是32

    这里写图片描述


  • 1个字节可存在1个16位寄存器中,这个字的高字节、底字节分别存储在这个寄存器的高8位寄存器、低8位寄存器中