首页 > 编程知识 正文

不能cs和ip置新值(IP寄存器)

时间:2023-05-04 00:37:30 阅读:74739 作者:2497

前言我们刚开始学习汇编和操作系统,就会被一些寄存器弄得晕头转向。 可能是我傻了,抽象能力很低。 我知道关于CS和IP寄存器的概念,但是不知道他们的作用。

CS和IP寄存器的概念书中说明如下。

CS是代码段寄存器,IP是指令指针寄存器,他们合作指向CPU当前要读取的指令地址,可以理解为CS和IP结合构成了PC寄存器。 无论何时,8086CPU都将CS:IP指示的命令作为应接下来取出的执行命令。8086CPU的计算公式为(CS 4)|IP,CS向左移位4位。 因此,除了IP为什么要设计CS和IP寄存器之外,还阐述了CS和IP寄存器的概念,初学者可能会怀疑为什么要那么辛苦。 为什么不直接设计寄存器来代替CS和IP寄存器? 这关系到CPU的发展历史,在此我先说一个特别的感悟。CPU的发展是连续迭代的过程,新的设计要兼容旧的设计我不明白或者无视这句话的意思。 我们知道CPU是一项了不起的发明。 CPU是所有现代技术的大脑和辅助器,每一代使用成千上万的硬件产品。 除非是神,否则不能说每个人都能很快设计出永恒的体系结构。 这就是为什么CPU是逐步重复的产品,重复的原因是旧的体系结构和资源已经过时了。 虽然需要新的体系结构或优化,但在设计新的CPU体系结构时,还必须考虑兼容性,并考虑与上一代产品的兼容性。 这给设计者增加了设计难度,但也是不得已的事情。 那么,上述说了很多正确的废话。 接下来,简单说明为什么需要CS和IP寄存器。 首先关于历史,不能严格地说。

在古代CPU中,没有像现在的小型单片机那样的CS和IP寄存器。 内存很少,这很可怜。例如,16位CPU最多可以访问2 ^ 16字节(64Kb )的内存。 也就是说,地址线、数据线、寄存器都是16位,访问内容完全统一,不会混乱。 另外,在这种情况下,64Kb的内存空间随着APP应用的发展,对内存的需求也增加了(2021年,4G内存沦为乞丐配置),因此与上一代64Kb相比,8086处理器的设计目标是1M的大内存空间,上一代110 如上所述,要求非常好,现实问题摆在英特尔设计师面前。 地址线的宽度为20位,但CPU的算数逻辑运算单元(ALU)仍然为16位,而且令人尴尬的是,当时的制造技术很难将ALU加工成20位,即使有加工成20位的能力,也与上一代CPU兼容出于这些原因,英特尔工程师设计出了当时非常巧妙的方法分段方法。 即,利用前述CS:IP的组合算法,CS和IP都为16位,CS向左移位4位,并与IP相加,得到20位的地址。 这实现了从16位内存地址到20位实际地址的转换,段内存管理带来了明显的好处。 程序地址不再需要编码,也可以方便地确定调试错误,并支持更大的内存。

CPU通过CS和IP进行命令执行过程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。