一、逻辑地址和物理地址

物理地址可以理解成是某个存储单元的真正的地址,然而地址总线有20位,寄存器们只有16位,无法完全访问到呀。所以就想到一个办法,搞出一个逻辑地址,之后编程都使用逻辑地址。

写法为 aaaa:bbbb

前者为段地址,后者为偏移地址

物理地址=段地址左移一位+偏移地址。

16进制左移一位相当于2进制左移4位,于是就是16+4=20位了。

(但是据说逻辑地址不唯一,这个地方现在还不太理解,而且这样的话如何避免呢?以后补。)

二、偏移地址和段地址

其实就是把内存人为地分成了好几个段。每个段都有一堆存储单元。

偏移地址就是在这个段的基础上,具体的存储单元位置。

就比如一栋楼有好几个单元(段地址),一个人具体住在几层几号房间(偏移地址)。这样找一户人家就比把所有住户都排好队一个一个找容易多了。

(现在想到的问题是,一个段有多少存储单元?有没有一堆操作数跨越两个段的可能性?如何避免?以后补)

段地址存储在段寄存器中。4个段寄存器:CS DS SS ES

偏移地址则可以用很多方式来表示,接下来会在寻址方式里介绍。

三、寻址方式

什么是寻址方式?就是我需要把某个值交给某个寄存器(可以不只是通用寄存器吗)。有的值直接给出来,有的值具体是多少不知道但是储存在别的地方。所以汇编语言中就有不同的表示方式表示值的位置。然后CPU根据不同的表示方式去找那个值。就是所谓的“寻址”。【但是为什么要寻“址”呢,叫寻“值”方式才会更方便更容易理解吧→_→

(书上用了“操作数”这个词,不知道当初又是怎么翻译的,原因是啥,反正挺误导人啊,这到底是什么还不太清楚。以后补)

寻址方式主要分为三种:

立即寻址;寄存器寻址;存储器寻址

  1. 立即寻址

    值直接给出来了。所以就直接把这个值交给寄存器就好了。

    e.g. MOV AX,1234H

    电脑很聪明的所以如果立即数是8位比如12H,而寄存器是16位,会自动把8位看成16位存成0012H。但是立即数位数比寄存器多就不行了,因为它一定哪个也不想放弃吧【笑】

  2. 寄存器寻址

    直译就好。值储存在另外一个寄存器了。所以就把值直接丢过去就好了。

    E.G. MOV AX,BX

    不用访问存储器,因为寄存器在CPU里,存储器是一个跟cpu平行的一个硬件部分,在cpu外面。所以这方法执行速度很快。

    另外可以在一个寄存器内部传递

    e.g. MOV AH,AL

  3. 存储器寻址

    这个有点麻烦了就。指令明明需要在cpu内执行,然后需要的值在存储器里。这又要引入一些新的名词。

    我们的偏移地址(有效地址)=基址+变址+位移量

    基址寄存器只有BX BP;变址寄存器只有SI DI

位移量也可以为负值!

要找的值在存储器里,具体在哪明显是个物理地址,然而cpu没法直接通过物理地址找到目标,只能通过逻辑地址找了。

段地址都在段寄存器里,但是偏移地址又有不同的给出方法。

如果偏移地址直接给出,我们称为

直接寻址

MOV AX,[1234H] ;之所以用[]我想就是为了和立即寻址做区分。

注意此情况段地址默认储存在DS中。

----------------------------------------------------------

如果偏移地址存储在另外一个寄存器里,称为

寄存器间接寻址

MOV AX,[BX]

注: 如果后面的这个寄存器是BP,那么默认的段寄存器是SS;否则仍是DS

----------------------------------------------------------

如果偏移地址一部分储存在寄存器里(基址或变址),另一部分直接表示(位移量),称为

寄存器相对寻址

可以这样理解,一个人知道某人具体住几单元(基址或变址),然后另一人则知道此人具体住哪间房,两人所知道的合起来就可以确定某人的具体地址了。位移量可以取负,所以想象成这栋楼地上地下都能住人吧。

MOV AX,[BX+1000H]==MOV AX,[BX]1000H

注: 如果后面的这个寄存器是BP,那么默认的段寄存器是SS;否则仍是DS

----------------------------------------------------------

如果偏移地址储存在两个寄存器里,就是基址和变址的和了。称为

基址变址寻址

MOV AX,[BX][SI];or MOV AX,[BX+SI]

注: 如果后面的这个寄存器是BP,那么默认的段寄存器是SS;否则仍是DS

----------------------------------------------------------

相对基址变址寻址

除了基址、变址,又加上位移量,构成我们的偏移地址。

MOV AX,[BX+SI+1000H]== MOV AX,1000H[BX][SI]

以上是8086的几种寻址方式,386以上就是在不同的位置乘上比例因子(1、2、4、8)

还没弄明白的记得之后补呀!!!!!

困死明天还有早课_(:зゝ∠)_

2015/11/20 凌晨2:09

转载于:https://my.oschina.net/u/2374598/blog/532994

【计组】偏移地址、段地址和寻址方式相关推荐

  1. 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析

    人的记忆总是不靠谱的,早在几年前就看过汇编语言,由于没有总结下来资料,所以忘记了很多,所以重新梳理下汇编方面的知识,与君共勉. ------------------------------------ ...

  2. 王爽汇编习题 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 ___ 到 ____。

    1 答案 : 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 2 解题过程: 物理地址=SA*16+EA EA的变化范围为0h~ffffh 物理地 ...

  3. 1MB等于多少BYTE?8086/8088寻址段地址与偏移地址解释

    8086/8088有20条地址线,它的直接寻址能力为1MB.也就是在一个系统中可以有多达1MB的存储器,地址从00000H-FFFFFH.给定任意一个20位物理地址,就可以从中取出需要的指令和操作数. ...

  4. 为什么要用段地址和偏移地址?

    本质含义 对于8086CUP而言 是一个16位结构的CPU 其具有的结构特性: (1)运算器一次最多可以处理16位的数据: (2)寄存器的最大宽度为16位: (3)寄存器和运算器之间的通路为16位 除 ...

  5. 逻辑地址(段地址,偏移地址)知识点全面回顾

    1.什么是逻辑地址? :逻辑地址是用户编程时使用的地址,分为段地址和偏移地址两部分. 逻辑地址表示形式:3020:055AH---------(汇编语言中,数字后面加H表示16进制) 2.为什么要用逻 ...

  6. 段地址和偏移地址是什么

    举个很简单的例子:如果说联合国用01表示中国,02表示美国,这里的01和02表示段地址.而各个国家的首都也是01,这个01就是偏移地址.那么0101就表示北京,0201表示华盛顿,这里段地址加偏移地址 ...

  7. JMU软件计组期末复习总结

    本篇博客是针对JMU软件专业的期末复习进行的知识点总结,知识点来回穿插,会比较凌乱,不适合预习使用. 因是参考老师给的提纲进行的总结,并没有覆盖这本书的所有知识点,有遗漏还请见谅. 本人能力有限,出现 ...

  8. 【计组理论期末考试模拟题】21级计科专业计算机组成原理

    [计组理论期末考试模拟题]21级计科专业计算机组成原理 一.选择题 二.多选题 三.填空题 四.程序填空题 五.编程题 一.选择题 2-1 在定点二进制运算器中,减法运算一般通过()来实现. A.原码 ...

  9. 【王道计组笔记】Cache高速缓存基本工作原理

    缓存器 的引入: [王道计组笔记]高速缓存器:局部性原理及性能分析_muse_age的博客-CSDN博客 1.主存的块放到Cache中哪个位置?CPU向缓存中读取一个数据过程? (1)空位随意放:全相 ...

最新文章

  1. 利用集群技术实现Web服务器的负载均衡
  2. spring-boot注解详解(四)
  3. 可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据
  4. java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...
  5. 华为路由器hilink怎么用_华为无线充电怎么用?MatePadPro无线充电使用方法
  6. Iterator(迭代器)遍历Collection集合元素
  7. EMLOG复制网站文字提醒弹窗源码美化版
  8. SD-WAN三大部署方式 用户现身说法谈优劣势
  9. 音视频开发(4)---Windows下Red5安装与使用入门
  10. ofo回应发币传闻:从未参与虚拟货币的发行 与GSE Lab合作已终止
  11. Geoserver+postSQL+openlayer实现路径规划
  12. 运行VS2008提示找不到一个或多个组件,请重新安装该应用程序错误的解决方法V
  13. 【4G模块】-有方科技Neoway-N720
  14. SQL经典50查询语句案例_3(查询所有同学的学号、姓名、选课数、总成绩)
  15. 主成分分析结果成分不显著_主成分分析结果
  16. contiki(官网简介翻译)介绍
  17. 注册微信小程序账号 APPID的获取
  18. 【Wing Loss】《Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks》
  19. 店盈通:如何打造赚钱的拼多多店铺?
  20. 找单身狗版本2(有两个单身狗)

热门文章

  1. 使用HBuilder插件市场感悟
  2. Cohort Analysis Using Python
  3. 边缘风行视频采集软件V1.0
  4. 8月22-23日 【广州】《社区商业项目开发定位、规划、招商、运营与模式创新》
  5. 《喜羊羊与灰太狼》中羊村的团队建设
  6. 一级注册消防工程师招生简章
  7. 【图像检测-显著性检测】基于蚁群算法优化图像视觉显着性检测附matlab代码
  8. 公众号快速涨粉方法汇总
  9. JDK8——IntStream
  10. 音箱箱体的分类(四)