• 8086/8088CPU的储存器结构(二)


    一、储存单元

    1.存储单元的地址

    (1)定义:将存储单元编号,即为地址

    (2)表示:十六进制

    2.存储单元的内容

    定义:存储单元中存放的信息称为该存储单元的内容

    表示:存储地址加()

    若X单元中存放这Y,而Y又是一个地址,则可用(y)=((X))来表示Y单元的内容

    (字节单元名称)=具体内容

    注意区分字节单元和字单元

    字节单元8位,字单元16位(低地址的内容作低八位,高地址的内容作高八位),

    双字单元,根据字单元,往高地址类推,共32位

    二、内存分配

    1.存储器地址分段的原因和方法

    (1)原因:CPU有20根地址总线A19~A0,可以访问存储器的最大容量为2^20B=1024KB=1MB.

        但是,在CPU中所有可用来存放地址的寄存器都是16位的,用什么来提供20位的地址呢?

    此时储存地址分段就派上用场。把1MB的存储空间划分为若干个段,每个段由1到64KB(即65536B)个连续的字节单元组成。每个段是一个可独立寻址的逻辑单位。

    (2)分段的基本规则

    每个段最大可达64KB,因此,段内地址可用16位来表示。 但是计算机对段的起始地址有限制,段不能起始于任意地址,必须从任意一小段的首地址开始。

    计算机规定:从0地址开始,每16个字节为一小段

    (3)段地址

    表示一个段的开始

    (4)偏移地址

    在段内相当于段起始地址的偏移值。当偏移量为0,就是这个段的起始单元,当偏移量为0FFFFS时,就是这个段的最后一个字节单元。

    (5)物理地址和逻辑地址

    每一个存储单元都有两种形式的地址,即物理地址和逻辑地址。

    每一个存储单元的物理地址是唯一的,就是这个单元的地址编码。 

    在程序设计中,程序员使用的是逻辑地址,而不使用物理地址,这不仅有利于程序的开发,且对存储器的动态管理也是有利的。

    一个逻辑地址是由段地址和偏移地址两部分组成,而且都是无符号的16为二进制数

    2.物理地址的形成

    计算公式

    物理地址=段地址×10H+偏移地址  (段地址向左平移一位加上偏移地址)

    每个存储单元物理地址是唯一的,但是可由不同的段地址和不同的偏移地址组成 

    3.隐含段和偏移寄存器

    缺省16位段+偏移寻址组合

    偏移地址存在地主要用途
    CSIP指令寻址
    SSSP或者BP堆栈寻址
    DSBX, DI,SI或16位数数据寻址
    ES串指令DI目标串寻址

  • 相关阅读:
    springboot网络安全平台设计毕业设计源码042335
    Ubuntu下MySQL无法启动和访问的问题解决与修复
    【物理】斜面交点之处机械能/动量损失问题
    bleve全文检索实现站内搜索(Go 搭建 qiucode.cn 之十)
    Python实验项目6 :文件操作与模块化
    xhs图片获取并且转换成PDF,实现了我考研期间一直想实现的想法
    智慧工地源码 手册文档 app 数据大屏、硬件对接、萤石云
    【Rust 日报】2022-11-25 Rust 真的要上天了!
    Redis之Lua脚本讲解
    SpringMVC基础概述
  • 原文地址:https://blog.csdn.net/Charlotte_He/article/details/140388348