linux 汇编 变址寻址,【计组】偏移地址、段地址和寻址方式

本文介绍了Linux汇编中的逻辑地址和物理地址概念,逻辑地址由段地址和偏移地址组成,物理地址通过段地址左移一位与偏移地址相加得出。内容涵盖段地址、偏移地址的用途,以及四种寻址方式:立即寻址、寄存器寻址、存储器寻址,并详细解释了各种寻址方式的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、逻辑地址和物理地址

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

写法为 aaaa:bbbb

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

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

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

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

二、偏移地址和段地址

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

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

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

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

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

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

三、寻址方式

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

(书上用了“操作数”这个词,不知道当初又

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值