zoukankan      html  css  js  c++  java
  • 汇编第二章_寄存器


    一个典型的CPU由 运算器,控制器,寄存器等器件构成.
    (1) 运算器进行信息处理.
    (2) 寄存器进行信息存储.
    (3) 控制器控制各种器件进行工作.
    (4) 内部总线连接各种器件,在它们之间进行数据的传送.

    寄存器是CPU中程序员可以用指令读写的部件,
    通过改变各种寄存器中的内容可以实现对CPU的控制.

    8086CPU有14个寄存器,且都是16位的:
    AX BX CX DX SI DI SP BP IP CS SS DS ES PSW
    为了与上一代CPU兼容,8086CPU的AX BX CX DX这4个寄存器都可以分成两个独立使用8位寄存器.
    AX : AH AL
    BX : BH BL
    CX : CH CL
    DX : DH DL
    注意 AL 和 AH 都是作为独立的8为寄存器来使用的.

    8086CPU可以一次性处理以下两种尺寸的数据:
    字节 字(word) 1 word = 2 byte(高位字节 低位字节)

    通用寄存器: AX BX CX DX 这4个寄存器通常用来存放一般性的数据.

    十六进制后面一般加H 二进制后边加B

    8086CPU有20位地址总线,但是是16位结构,所以使用两个16位地址合成的方法来形成一个20位的物理地址.
    地址加法器采用: 物理地址 = 段地址 * 16 + 偏移地址
    同时定义: 段地址 = 起始地址(基础地址) / 16
    本质含义是:
       CPU在访问内存时,
      用一个基础地址(段地址 * 16) 和
      一个相对于基础地址的偏移地址相加,
      给出内存单元的物理地址.

    内存并没有分段, 端的划分来自于CPU.
    在编程需要的时候,可以将若干地址连续的内存单元看作一个段,
    用 段地址 * 16 定位段的 起始地址, 用 偏移地址 定位段中 内存单元.
    由于段地址 * 16 是 16的倍数,所以一个段的起始地址一定也是16的倍数.
    偏移地址为16位, 16位地址的寻址能力为64KB, 所以一个段的长度最大为64KB.

    CPU如何区别内存中的数据和指令的: CS:IP寄存器指向的内存单元的内容是指令.

  • 相关阅读:
    SWT中如何居中显示?
    项目一 默认构造函数和带参数的构造函数
    解决ubuntu中java1.6显示中文乱码问题
    网络程序为什么要处理SIGPIPE
    SQL 数据类型大全
    poj1275 差分约束
    Oracle分组
    Android利用ViewPager实现滑动广告板
    扩展spring mvc的拦截器,实现AOP的环绕增加效果
    [Ext.Net]GridPanel之存储过程分页Sql版本
  • 原文地址:https://www.cnblogs.com/cgjh/p/10351190.html
Copyright © 2011-2022 走看看