0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文看懂汇编语言中有效地址和偏移地址的区别

姚小熊27 来源:网络整理 2018-04-16 09:55 次阅读

汇编中偏移地址的理解

偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行16位(16进制的话4X4,用4位表示,0x0000-0xFFFF)的运算,而8086/8088有20(16进制的话4X5,用5位表示,0x00000-0xFFFFF)条地址线。为了方便只能进行16运算的8086/8088CPU,于是我们便将5位变成两个4位,也即把物理地址分成段地址和偏移地址,如下图所示:

一文看懂汇编语言中有效地址和偏移地址的区别

那么通过段地址和偏移地址怎么得到物理地址呢?

物理地址=段地址*16(10进制)+偏移地址。(2进制的话,也就是段地址《《4|偏移地址)。

有效地址的理解

有效地址EA是一16位无符号数,表示操作数所在单元到段首的距离即逻辑地址的偏移地址。当操作数是存放在存储器中时,存储器的存储单元的物理地址有两部分组成。一部分是偏移地址;一部分是段地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址可由各种成分组成,称为有效地址,用EA表示。可以通过存储器寻址方式获得有效地址。

有效地址可以由几部分组成:基址寄存器内容、变址寄存器内容、比例因子和位移量。

如何由有效地址求得物理地址

物理地址指CPU寻址主存时使用的20位地址,它确定了某一实际位置的内存单元。(2分)内存单元物理地址可由段址和段内的偏移量确定。内存单元在段内的偏移量称为有效地址(EA)。

物理地址=段址×16+段内的偏移量。

一文看懂汇编语言中有效地址和偏移地址的区别

有效操作地址寻址方式

根据指令内容确定操作数地址的过程称为寻址。完善的寻址方式可为用户组织和使用数据提供方便。

①直接寻址:指令地址域中表示的是操作数地址。

②间接寻址:指令地址域中表示的是操作数地址的地址即指令地址码对应的存储单元所给出的是地址A,操作数据存放在地址A指示的主存单元内。有的计算机的指令可以多次间接寻址,如A指示的主存单元内存放的是另一地址B,而操作数据存放在B指示的主存单元内,称为多重间接寻址。

③立即寻址:指令地址域中表示的是操作数本身。

④变址寻址:指令地址域中表示的是变址寄存器号i和位移值D。将指定的变址寄存器内容E与位移值D相加,其和E+D为操作数地址。许多计算机具有双变址功能,即将两个变址寄存器内容与位移值相加,得操作数地址。变址寻址有利于数组操作和程序共用。同时,位移值长度可短于地址长度,因而指令长度可以缩短。

⑤相对寻址:指令地址域中表示的是位移值D。程序计数器内容(即本条指令的地址)K与位移值D相加,得操作数地址K+D。当程序在主存储器浮动时,相对寻址能保持原有程序功能。此外,还有自增寻址、自减寻址、组合寻址等寻址方式。寻址方式可由操作码确定,也可在地址域中设标志,指明寻址方式。

汇编语言中有效地址和偏移地址的区别

在8086的机子上,有效地址=段地址左移4位+偏移地址,偏移地址与有效地址是一样的。但是就ibm的硬件来说,他们的寻址方式也分为2种,一是实地址寻址方式,另一种是保护虚地址寻址方式。此两种寻址方式非常不同,在8086的机子上,有效地址=段地址左移4位+偏移地址,因为它只有实地址寻址方式,而在286之后,就存在虚地址寻址方式,这就涉及到有关段以及描述符,描述符表,和其他的问题,请您自己参见有关接口的书。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 偏移地址
    +关注

    关注

    0

    文章

    3

    浏览量

    7459
收藏 人收藏

    评论

    相关推荐

    #硬声创作季 汇编语言(7)段地址偏移地址和物理地址

    编程语言汇编语言
    Mr_haohao
    发布于 :2022年08月29日 23:06:47

    汇编语言(7)段地址偏移地址和物理地址#硬声创作季

    汇编语言汇编
    电子学习
    发布于 :2022年11月12日 12:00:47

    请问arm的汇编语言中有没有什么指令可以达到上述效果的?

    问题:单片机中的汇编语言可以用ORG指定外部中断的标号地址比如:ORG0003HJMPINT_0那arm的汇编语言中有没有什么指令可以达到上述的效果
    发表于 06-27 05:02

    请问.C语言中可以嵌套汇编语言吗?

    .C语言中可以嵌套汇编语言
    发表于 09-20 05:55

    请问C语言中可以嵌套汇编语言吗?

    C语言中可以嵌套汇编语言
    发表于 09-25 05:55

    有效地址是什么?形式地址又是什么?有何区别

    有效地址是什么?形式地址又是什么?有何区别?补码加减法是指什么?
    发表于 07-16 11:33

    什么是汇编语言

    基于C++宝典的学习、什么是汇编语言汇编语言种功能很强的程序设计语言,也是利用了计算机所有硬件特性并能直接控制硬件的
    发表于 07-19 06:05

    ARM汇编语言中对立即数有要求吗

    在 ARM 汇编语言中,对立即数的有要求,我记得原来没有这样说了。现在反而糊涂了,用立即数时候,很小心很忌讳,不会像 51 下随心所欲的使用了,有对立即数熟悉的朋友站出来给大家释疑.谢谢
    发表于 11-15 11:43

    汇编语言自学教程

    汇编语言自学教程 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址
    发表于 03-15 14:24 511次下载

    汇编语言详解

    汇编语言(Assembly Language)是面向机器的程序设计语言。   汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替
    发表于 06-30 10:28 4158次阅读

    Linux中的汇编语言

    在阅读Linux源代码时,你可能碰到汇编语言片段,有些汇编语言出现在以.S为扩展名的汇编文件中,在这种文件中,整个程序全部由汇编语言组成
    发表于 04-07 20:43 55次下载

    C语言汇编语言混合编程方法和C语言中断处理方法

    C语言汇编语言混合编程方法和C语言中断处理方法,new
    发表于 01-06 14:36 36次下载

    什么叫偏移地址_偏移地址怎么计算

    本文开始介绍了什么是偏移地址或概念,其次介绍了偏移地址的计算方法及段地址偏移
    的头像 发表于 04-16 09:42 10.7w次阅读
    什么叫<b class='flag-5'>偏移</b><b class='flag-5'>地址</b>_<b class='flag-5'>偏移</b><b class='flag-5'>地址</b>怎么计算

    高级语言汇编语言_机器语言区别

    本文首先介绍了高级语言的优缺点、汇编语言的优缺点及使用汇编语言的理由,其次介绍了机器语言的优缺点,最后阐述了高级语言
    的头像 发表于 04-16 10:28 3w次阅读

    汇编语言中常用的伪指令

    汇编语言中除常用指令外,还有些用来对“汇编”过程进行控制、或者对符号、标号赋值的指令。在汇编过程中,这些指令不被翻译成机器码,因此称为“伪指令”。
    发表于 11-11 10:03 7828次阅读
    <b class='flag-5'>汇编语言中</b>常用的伪指令