zoukankan      html  css  js  c++  java
  • 8086CPU寄存器

    8086  CPU 中寄存器总共为 14 个,且均为 16 位 。即 AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个。而这 14 个寄存器按照一定方式又分为了通用寄存器,控制寄存器和段寄存器。

    通用寄存器:

    AX,BX,CX,DX 称作为数据寄存器:

    AX (Accumulator):累加寄存器,也称之为累加器;

    BX (Base):基地址寄存器;

    CX (Count):计数器寄存器;

    DX (Data):数据寄存器;

    SP 和 BP 又称作为指针寄存器:

    SP (Stack Pointer):堆栈指针寄存器;

    BP (Base Pointer):基指针寄存器;

    SI 和 DI 又称作为变址寄存器:

    SI (Source Index):源变址寄存器;

    DI (Destination Index):目的变址寄存器;

    控制寄存器:

    IP (Instruction Pointer):指令指针寄存器;

    FLAG:标志寄存器;

    段寄存器:

    CS (Code Segment):代码段寄存器;

    DS (Data Segment):数据段寄存器;

    SS (Stack Segment):堆栈段寄存器;

    ES (Extra Segment):附加段寄存器;

    数据寄存器(AX,BX,CX,DX):

    AX 寄存器可以分为两个独立的 8 位的 AH 和 AL 寄存器;

    BX 寄存器可以分为两个独立的 8 位的 BH 和 BL 寄存器;

    CX 寄存器可以分为两个独立的 8 位的 CH 和 CL 寄存器;

    DX 寄存器可以分为两个独立的 8 位的 DH 和 DL 寄存器;

    除了上面 4 个数据寄存器以外,其他寄存器均不可以分为两个独立的 8 位寄存器 ;

    CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址,其中  CS  为代码段寄存器,而   IP  为指令指针寄存器 。

    在任何时刻,SS:SP  都是指向栈顶元素 。

    DS 寄存器和 ES 寄存器:

    DS  寄存器和  ES  寄存器都属于段寄存器,其实它们和  CS  寄存器以及  SS  寄存器用起来区别不大,既然是段寄存器的话,自然它们存放的就是某个段地址了 。我们已经知道,如果  CPU  要访问一个内存单元时,我们必须要提供一个指向这个内存单元的物理地址给  CPU ,而我们也知道在  8086  CPU  中,物理地址是由段地址左移 4  位,然后加上偏移地址形成的,所以,我们也就只需要提供段地址和偏移地址即 OK 。8086  CPU  呢,提供了一个  DS  寄存器,并且通常都是通过这个  DS  段寄存器来存放要访问的数据的段地址 。DS(Data  Segment):很显然,DS 中存放的是数据段的段地址 。但是这里不得不再点一下,那就是我们对段的支持是在  CPU  上体现的,而不是在内存中实现了段,所以事实上我们使用的段其实是一个逻辑概念,即是我们自己定义的,再说白了,我定义一个段,我说它是数据段那它就是数据段,我说它是代码段那么它就是代码段,它们其实都是一块连续的内存而已,至于为什么要区分为数据段和代码段,很明显,是用来给我们编程提供方便的,即我们在自己的思想上或者说是编码习惯上规定,数据放数据段中,代码放代码段中 。而我们在使用数据段的时候,为了方便或者说是代码的编写方便起见,我们一般把数据段的段地址放在  DS  寄存器中,当然,如果你硬要觉得  DS  不顺眼,那你可以换个  ES  也是一样的,至于  ES(Extra  Segment)  段寄存器的话,自然,是一个附加段寄存器,如果再说得过分点,就当它是个扩展吧,当你发现,你几个段寄存器不够用的时候,你可以考虑使用   ES  段寄存器,在使用方式上,则和其他的段寄存器没什么区别  。

  • 相关阅读:
    【SSRS】入门篇(六) -- 分组和总计
    【SSRS】入门篇(五) -- 设置报表格式
    【SSRS】入门篇(四) -- 向报表添加数据
    【SSRS】入门篇(三) -- 为报表定义数据集
    【SSRS】入门篇(二) -- 建立数据源
    【SSRS】入门篇(一) -- 创建SSRS项目
    【MS SQL】数据库维护计划之数据库备份(二)
    【MS SQL】数据库维护计划之数据库备份(一)
    【MS SQL】查看任务执行进度
    c++ 在客户端的GCC使用
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/3905825.html
Copyright © 2011-2022 走看看