精华内容
下载资源
问答
  • CPU寻址

    2018-01-12 21:36:30
    title:CPU寻址 date: tags: categories: IT description: CPU寻址 本文摘自《汇编原理(第二版)》,作者王爽 CPU组成 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。...

    title:CPU寻址
    date:
    tags:
    categories: IT

    description:

    CPU寻址


    本文摘自《汇编原理(第二版)》,作者王爽

    CPU组成

    一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。简单的讲,在CPU中:

    • 运算器进信息处理;
    • 寄存器进行信息存储;
    • 控制器控制各种器件进行工作;
    • 内部总线连接各种器件,在它们之间进行数据的传送。

    通用寄存器

    8086CPU的所有寄存器都是16位的。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
    8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个独立使用的8位寄存器来用:例如AX可分为AH和AL。
    出于对兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据:字节和字。

    将AX分为AH和AI使用时,CPU在执行指令的时候认为AH和AL是两个不相关的寄存器。不要错误的认为i,诸如add al,93H的指令产生的进位会存储在ah中,add al,93H进行的8位运算。

    CPU如何在内部形成内存单元的物理地址

    8086是16位结构的CPU,什么是16位结构的CPU呢?

    1. 运算器一次最多可以处理16位的数据; 
    2. 存储器的最大宽度为16位;
    3. 寄存器和运算器之间的通路为16位。
    

    这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息最大长度是16位的(是不是32位系统与64位系统也是这样,除了在内存上有差别还在性能上有差别?)。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位的CPU,能一次性处理、传输、暂存16位的地址。但是,8086有20位地址总线,怎么办?
    8086CPU采用一种在内部用两个16位地址合成(通过地址加法器)的方法来形成一个20位物理地址。
    当8086CPU要读写内存时:

    1. CPU中的相关部件提供两个16位的地址,一个成为段地址,另一个称为偏移地址;
    2. 段地址和偏移地址通过内部总线送入一个成位地址加法器的部件;
    3. 地址加法器将两个16位地址合成为一个20位的物理地址;
    4. 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
    5. 输入输出控制电路将20位物理地址送上地址总线;
    6. 20位物理地址被地址总线传送到存储器。

    地址加法器采用物理地址=段地址×16+偏移地址的方式合成物理地址。
    例如两个16位,1230和00C8,1230*16=12300(左移4位)。12300+00C8=123C8。

    段的概念

    段地址包含着段的概念,其实不是内存分段,段的划分来自CPU,由于8086CPU用“基础地址(段地址*16)+偏移地址=物理地址”的方式给出的内存单元的物理地址,使得我们可以用分段的方式来管理内存。
    对于同一地址比如10000H~100FFH的内存单元,可以有很多种表示方式
    1. 基础地址为10000H,段地址为1000H,大小为100H;
    2. 可以认为10000H~1007FH、10080H~100FFH内存单元组成两个段,它们的基础地址为:10000H和10080H,段地址为:1000H和1008H,大小都为80H。

    有两点需要注意:

    • 段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;
    • 偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB

    段寄存器

    段地址在8086CPU的段寄存器中存放。8086CPU有4个段寄存器:CS、DS、SS、ES。其中CS用来存放指令的段地址。

    CS和IP

    CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读指令的地址。CS为代码段寄存器,IP为指令指针寄存器,即CS*16+IP。
    8086CPU的工作过程:
    1. 从CS:IP指向的内存单元读取指令,读取指令进入指令缓冲器;
    2. IP指向下一条指令;
    3. 执行指令。(转到步骤1,重复这个过程)

    8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
    在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。现在,如果提出一个问题:CPU根据什么将内存中的信息看作指令?如何回答?我们可以说,CPU将CS:IP指向的内存单元中的内容看作指令。

    注意move指令不能改变CS、IP寄存器中的内容。能够改变CS、IP的内容的指令被统称为转移指令。如jump指令。

    这本书中的第二章实验1可以多看几遍

    展开全文
  • CPU寻址范围计算

    千次阅读 2018-07-30 12:09:38
    CPU寻址的范围 内存的每个地址单元是1个字节(Byte) CPU寻址能力以指可寻址的单元(Byte)总量 32位CPU寻址范围计算: 2^32 = 4294967296(Byte) = 4194304 KB = 4096 MB = 4GB...

    内存的每个地址单元是1个字节(Byte)
    CPU寻址能力以指可寻址的单元(Byte)总量
    32位CPU寻址范围计算:
    2^32 = 4294967296(Byte) = 4194304 KB = 4096 MB = 4GB

    展开全文
  • 8086CPU 寻址方式

    2020-03-29 18:54:09
    8086CPU 寻址方式: SA:段地址 EA:偏移地址

    8086CPU 寻址方式:

    SA:段地址
    EA:偏移地址
    在这里插入图片描述

    展开全文
  • CPU寻址方式--8086为例

    2021-05-27 14:43:01
    CPU寻址方式--8086为例 首先说明cpu为啥要段基址+段内偏移地址寻址,因为8086地址线20位,所以地址范围=2^20 = 1MB,但是8086寄存器都是16位的,所以用寄存器寻址的话,只能寻2^16 < 2^20,也就是有一部分地址寻...

    CPU寻址方式--8086为例

    首先说明cpu为啥要段基址+段内偏移地址寻址,因为8086地址线20位,所以地址范围=2^20 = 1MB,但是8086寄存器都是16位的,所以用寄存器寻址的话,只能寻2^16 < 2^20,也就是有一部分地址寻不到,所以使用段基址<<<4+段内偏移地址,这样结果就是可以寻址全部地址。

    入正题,CPU寻址方式大致分为3种,分别是

    1. 寄存器寻址

    “数”在寄存器中,直接从寄存器中拿数据。

    mov ax,0x10

    mov dx,0x9

    mov ax,bx

    2. 立即数寻址

    “数”不在寄存器中,也不在内存区,而是直接给出的一个具体数。

    mov ax,0x80 这个同时也是寄存器寻址

    3. 内存寻址

    内存寻址,寻找的数在内存中。这个数的地址在寄存器中,所以内存寻址仍然要用到寄存器。

    内存寻址又可以分为

    3.1 直接寻址

    操作数给出的作为地址,以【】表示地址

    mov ax, [0x1234]

     

    3.2 基址寻址

    以bx 或者 bp中数作为偏移地址,ds作为段基址

    mov bx,0x10

    mov ax,bx 此时 ax = ds:bx

     

    3.3 变址寻址

    以si 或者 di中数作为偏移地址,ds作为段基址

    mov ax,[ds+si]

     

    3.4 基址变址寻址

    基址+变址 即 bx或者bp + si或者di,ds作为段基址

    mov ax,[ds:bx+si]

     

    为什么需要这么多寻址方式

    因为他们的硬件实现不同,想要不同的效果必须采用不同寻址方式

     

    感谢观看,如有错误,欢迎评论区指正

    展开全文
  • CPU寻址能力的理解 地址总线和寻址能力 假设一个CPU有8条地址总线,那么该CPU的寻址能力是2^8 Byte。那为什么单位不是bit的呢? 首先,我们先看8条地址总线,每一条地址总线有0和1两种状态,也就是说8条线总共有2^...
  • CPU寻址方式

    千次阅读 2018-09-22 17:19:41
    而处理器是根据地址从存储单元中取出指令来执行的,根据CPU访问数据(寻址)形式的不同划分了以下几种寻址方式: 寻址方式 寄存器寻址 立即数寻址 内存寻址 直接寻址 基址寻址 变址寻...
  • CPU寻址过程方框图

    千次阅读 2016-07-03 23:18:43
    1.CPU寻址过程方框图    CPU寻址过程方框图如下图所示。  下面解释信号标识的含义。    (1)DS#:CPU地址选通信号,低电平有效。地址选通信号,就是好像我们出行一样,有几条路可供选择,具体选择走哪一...
  • cpu寻址空间(能力)理解

    千次阅读 2020-04-06 18:48:44
    1、cpu寻址能力是由地址总线的条数N决定的。 寻址能力= 2的N次方 2、内存大小是以字节为单位的,每个字节单元都有一个地址。 3、以32位地址总线为例分析, cpu的寻址能力是 2^32 = 4G cpu功能存储0~2^32-1,共...
  • CPU寻址范围(寻址空间)一系列问题 标签: 存储硬件驱动电话制造产品 2012-02-26 16:09 14157人阅读 评论(1) 收藏 举报 分类: 计算机基础(1) 版权声明:本文为博主原创文章...
  • 8086 CPU 寻址方式

    千次阅读 2013-06-20 22:55:55
    8086 CPU 寻址方式灵活。有以下几种  idata 表示常量  1. [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 mov ax, ds:[0] ,表示把 ds 寄存器中...
  • CPU寻址:现代处理器使用的是一种称为虚拟寻址的寻址方式。使用虚拟寻址,CPU需要将虚拟地址翻译成物理地址,这样才能访问到真实的物理内存。实际上完成虚拟地址转换为物理地址转换的硬件是CPU中含有一个被称为内存...
  • CPU寻址范围

    2014-07-03 09:59:21
    一、寻址空间  寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ... CPU最大能查找多大范围的地址叫做寻址能力 ,CPU寻址能力以字节
  • 一、什么叫寻址空间?  寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ... CPU最大能查找多大范围的地址叫做寻址能力 ,CPU寻址
  • 8086CPU寻址方式详解

    2021-09-21 21:33:47
    寻址方式 定义 寻址方式:求操作数所在地或者所在存储器地址单元的方式。 指令中的操作数,大多数都在存储器单元当中,也可以在寄存器里面,也可以是在指令中立即给出的常数。我们把求得它们的方式称为寻址方式。 ...
  • CPU寻址问题

    2015-07-01 10:13:45
     寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户...
  • CPU寻址方式与过程

    千次阅读 2013-10-28 22:19:01
    在看了上一篇转载的文章后,自己也仔细搜索研究了下关于CPU寻址方面的东西,写下来吧。 首先,说到寻址,当然离不开各种各种总线啦,先来看下我们的计算机系统内的总线结构图啦(下图来自大话存储)   如图,主板上...
  • CPU寻址能力的理解

    千次阅读 2020-04-23 17:14:10
    问题:32位总线的寻址范围为什么是4G?...其中 这里的4G单位是Byte, 因为计算机的存储单元是 Byte, CPU寻址单元也是 Byte. 即在0~2^ 32 - 1 这个范围内,每个地址都指向一个存储单元,每个存储单元...
  • CPU寻址方式总

    2018-04-02 20:48:47
    转自新浪微博,有一定的补充和修改作者: shmilylffWindows汇编语言程序设计——操作数的寻址方式 ==============================操作数的寻址方式============================== 寻址方式就是在汇编语言程序中...
  • 【1】CPU寻址方式 现代的处理器使用的都是一种叫做虚拟地址寻址(Virtual Addressing) 的寻址方式 使用虚拟地址,CPU要将虚拟地址翻译成物理地址才能访问实际的物理内存 内存管理单元(MMU): CPU内部的一个硬件...
  • CPU寻址以及内存对齐

    2020-10-10 16:57:53
    内存寻址 ‘ Golang结构体内存对齐
  • 关于CPU寻址能力的理解。

    千次阅读 2011-12-27 17:24:13
    刚开始学汇编,纠结在了CPU寻址能力上了。。 比如:拿8086 CPU来说,有20根地址总线 寻址能力为什么不是 2^20 bit,而是2^20 byte?。。。。。。后来总算是弄懂了。 其实,仔细想想,是我理解错了。2的20次方 代表...
  • 在学习汇编的时候,碰到了这样一个问题:某CPU寻址能力为8KB,当时就很疑惑,为什么寻址能力的单位是KB,书上解释说,寻址能力是指CPU最大能够寻找多大范围,那这样不应该是以“个”为单位吗 (当然这个问题对熟手...
  • 浅谈CPU寻址内存机制

    千次阅读 2018-10-07 10:49:57
    内存控制器结构如图1所示,cpu寻址内存物理地址过程如图2所示,注意内存控制器在cpu内部,为了方便画图讲解才放到cpu外部。  图 1  图 2 有人可能会想把页表放在三级Cache中就不同频繁的访问内存了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,249
精华内容 30,499
关键字:

cpu寻址