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寄存器指向的内存单元的内容是指令.

  • 相关阅读:
    实战-百度云[大文件/文件夹]下载限制破解
    IOCP之客户端及消息传递
    IOCP简单实现
    Charles V4系列更新 | 绿色特别版 | 视频教程
    Charles 3.11.5 绿色特别版
    VC运行库合集2005/2008/2010/2012/2013/2015
    手游测试之《弱网测试》
    后端性能测试不可不知的二三事
    linux性能指标及分析工具
    Shell笔记-04
  • 原文地址:https://www.cnblogs.com/cgjh/p/10351190.html
Copyright © 2011-2022 走看看