西南IT社区
    • 注册
    • 登录
    • 搜索
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    了解寄存器的基本概念

    技术答疑
    寄存器的基本概念
    1
    1
    11
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • liazei33
      liazei33 最后由 编辑

        在计算机领域, 对于某种特定的计算机设计而言,字是用于表示其自然的数据单位的术语。在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。 字长在计算机结构和操作的多个方面均有体现。计算机中大多数寄存器的尺寸是一个字长。计算机处理的典型数值也可能是以字长为单位。

        一个典型的cpu 由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。
        区别:内部总线实现cpu 内部各个器件之间的联系。外部总线实现cpu和主板上其他器件的联系。
        8086 cpu 有14个寄存器,他们的名称为: AX、BX、CX、DX、SI、DI、SP、IP、CS、SS、DS、ES、PSW。8086 cpu所有的寄存器都是16位的,可以存放两个字节。
        为什么8086的寄存器是16位的? 这个比较的好理解哈,因为要做加法,没有16位存不下去。
        现在cpu 是64位,那么寄存器起码得是64位,不然没法实现加法。cpu 64位之所以可以使用32位的软件,那是因为64位的cpu兼容了32位的。AX、BX、CX、DX 通常用来存放一般性的数据,称为通用寄存器。寄存器的逻辑结构:EAX 就是32位的cpu的叫法。
      bc55ef0d-d5a8-4e8f-9044-6a70660c8ec3-image.png
        数据18:二进制表示:10010;在寄存器ax中的存储。
      f2cf589f-9e30-40ae-a803-63d72f9184d0-image.png
        然后16位的寄存器存储的最大值为:2的16次方-1。这里就有人问了,万一计算的比16位还多的数字怎么办呢? 这个靠设计解决,比如说有一个32位的数字要计算,那么可以设计2个16位去处理,这种要靠设计去实现了,cpu 能做的只有这个。

      8086 上一代的cpu 寄存器都是8位的;为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。

        然后怎么兼容的,那是因为AX 可以分为AH和AL,那么AH 是8位的。那么其他的也是这样BX 分为BH和BL。CX 分为CH和CL。DX分为DH和DL

        这些分出来的就是8位的。说白了就是兼容兼容这些指令了。AH 表示高位,AL表示低位。 所以8位的程序,只能用到AL这种低位的。一个32位程序也不要想换成64位cpu就能跑的更快,没有这回事。
      7deb6bac-91cd-44b5-9268-74c04703da34-image.png
        AX的低8位(0-7)构成了AL寄存器,高8位(8位-15位)构成了AH寄存器。AH和AL寄存器可以独立使用的8位寄存器。
      cfd59159-21ea-419a-a4f5-27e535fe5536-image.png
        一个字可以存储在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      F
      漫
      成
      Y
      洋
      书
      Y
      D
      U
      Y
      娇
      玩
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号