汇编原理学习记录:物理地址=段地址*16+偏移地址

文章目录


知识点

8086计算机拥有20根地址总线和16根数据总线,地址总线中的16根和数据总线存在复用

数据总线的数量决定了数据总线的宽度,决定了处理器的位数,有多少根数据总线就是多少位的处理器。

在现代计算机系统中,寄存器的位数和数据总线的位数总是保持一致或相近的。

bash 复制代码
16 = 2^4 , 64 = 2^6 , 1024 = 2^10
bash 复制代码
1 MB = 1024 KB = 1024 * 1024 B

地址的单位为字节(B,byte)

bash 复制代码
1 B = 8 bit = 2^3 bit  ,bit表示位的意思,

虽然1B可以表示2^8个数,但是需要分清楚这些概念

计算请看:汇编原理计算方法:物理地址=段地址*16+偏移地址


个人思考解释

存储器大小为1MB

因为8086计算机的地址总线条数为20,可以标记2^20次方的字节空间,存储器的可寻址范围为1MB

(地址单位为字节,使用比特为单位没有意义)

bash 复制代码
因为:1 MB = 1024 KB = 1024 * 1024 B , 1024 = 2^10
所以:2^20 B = 2^10 KB = 1 MB

段的最大占用存储为64KB

8086计算机拥有16位的寄存器和16根数据总线,意味着一次最多传输16位的2进制数,从寄存器送出去的物理地址的寻址空间最大达到2的16次方

bash 复制代码
1 KB = 1024 B = 2^10 B , 64 = 2^6
2^16 B = 64 KB

若是段的最大占用存储空间设置为64KB,则段内的地址就可以使用这16位的数字来表示 。

(偏移地址一般为4位十六进制数或是16位二进制数)

这样,在一个段内,16位的偏移地址可以指向任意一个处在该段中的字节地址。

物理地址=段地址*16+偏移地址

对于固定的段地址,其寻址能力取决于偏移地址的个数,因为偏移地址存储在16位寄存器中,所以能够表示的最多地址数(二进制数)为

bash 复制代码
2^ 16 = 65536 B = 64 KB

因此对于固定的段地址,其最大寻址能力为64K。

bash 复制代码
20-16 = 4 , 2^4 = 16

段地址存储在十六位的段地址寄存器中。

可以看出,对于1MB的寻址空间,最多可以指定寻址空间不重叠的段地址数量为16个,最多可以指定寻址空间重叠的段地址数量为2^16个。

虽然按照1MB=16 * 64 KB来看,只需要16个以64KB为大小的段就可以覆盖全部的地址空间(也就是四位二进制数或是一位十六进制的段地址),但是并非所有的段都会占据那么大的存储空间,因此段地址是4位十六进制数,并非一位十六进制数。

相邻的段地址在物理地址上相差10H,只有物理地址最后一位为0的地址才能作为段地址,例如075A0H和075B0H。

因此,如果考虑两个段地址的最大寻址能力(64K字节数),可以看出这两个相邻段地址的寻址范围有很大一部分是重叠的。

重叠导致,段地址加上偏移地址可以推出唯一的物理地址,但是只通过物理地址却不能推出唯一的段地址和偏移地址。


至此,结束

相关推荐
旖旎夜光7 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
2501_943205057 小时前
【366期】Campfire:跨启动器的我的世界联机工具箱
经验分享
WEI_YANG_JU8 小时前
初中数学教学中合作学习的研究与实践
学习
码农小韩8 小时前
FPGA学习(一)——LED点灯与开发流程
学习·fpga开发·入门·环境配置·仿真·点灯
QVeris Friends8 小时前
QVeris MCP 连接到 ChatGPT:让 AI 调用专业数据
经验分享
李长渊哦8 小时前
Qoder 自定义子智能体(Subagent)学习笔记
chrome·笔记·学习
代码山河9 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
旖旎夜光10 小时前
【C++ 基础入门】命名空间、输入输出、缺省参数与函数重载
开发语言·c++·笔记·学习
瑞通软件源头厂家10 小时前
全栈国产化技术方案的五个关键层级与落地逻辑
经验分享
上海广测检测科技有限公司10 小时前
手机充电器 CCC 认证:2024 年 8 月后的目录口径、技术要点与单元划分
经验分享