8086的分段寻址技术学习总结(Segmented Addressing)
计算机最小粒度的数据单位是bit,但是为每个bit都分配地址不仅浪费资源,同时存取效率低。因此转而用8bits(也就是1个字节,1byte)来占用一个地址。
那么16位的地址线能够访问的地址空间大小为216bytes,与之所对应就是在16位的地址线的另一端用了16位的寄存器来驱动16位宽度的寻址地址。
现在的问题时,我们有20根地址线(也就是有220bytes=2Mb的存储空间),却只有16位寄存器时。怎么利用这16位的寄存器(216bytes<220bytes)去访问2Mb的存储空间?

显然一个16位的寄存器只能访问到216bytes,那么两个呢?不得了,可就是216*216bytes=4Gb,这远远大于我们想要访问220bytes大小的存储空间。问题的决解方案就是多加一个寄存器...
下面来看一下使用2个16位的寄存器是如何去访问220bytes的存储空间的。

从上图可以明显的看出:
实际物理地址 = 段地址左移4位 + 段上偏移量
段地址:段地址用于分段寻址的时候定位段的位置。第一个则寄存器用于表示段地址,段地址最多可以有216K个,每段对应的存储空间大小就是216bytes=64Kb。
这时如果有一组大于64Kb的数据或是指令就得占用多个段,也就是所谓的分段储存。虽然段地址理论上可以有216K,但实际上只需要8个(24*216=220)段就足以访问220bytes的储存空间。
而更常用的使用方法是定义了4个段寄存器:
CS(Code segment)指向代码段,代码段用于储存程序的指令;
DS(Data Segment)指向数据段,数据段用于暂存原始数据和处理后的中间结果及最终结果;
SS(Stack Segment)指向堆栈段,堆栈段用于形成堆栈区;
ES(Extra Segment)指向扩展段,扩展段与数据段类似,一般情况下,数据段用于储存局部变量,扩展段用于储存全局变量。
8086的分段寻址技术学习总结(Segmented Addressing)的更多相关文章
- IT软件人员的技术学习内容(写给技术迷茫中的你) - 项目管理系列文章
前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想 ...
- IT技术学习指导之Linux系统入门的4个阶段(纯干货带图)
IT技术学习指导之Linux系统入门的4个阶段(纯干货带图) 全世界60%的人都在使用Linux.几乎没有人没有受到Linux系统的"恩惠",我们享受的大量服务(包括网页服务.聊天 ...
- EMV技术学习和研究(转)
刚开始学习EMV&PBOC,磕磕碰碰,感谢xuture的<EMV技术学习和研究>给了很大帮助,让我少走了很多弯路,也感谢广俊.surge.艾零.小SO.Spinach.龙行天下的帮 ...
- Java多线程技术学习笔记(二)
目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和w ...
- 【记录一次windows技术学习】使用笔记本DOS命令搭建WLAN热点
[记录一次windows技术学习]使用笔记本DOS命令搭建WLAN热点 时间:2017-10-14 22:36:13 撰写者:AK末影人 [转发请注明出处] --------------------- ...
- 绝版珍珍藏:web前端技术学习指南
绝版珍珍藏:web前端技术学习指南 优秀的Web前端开发工程师要在知识体系上既要有广度和深度!应该具备快速学习能力. 前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务器端的 ...
- Android so注入(inject)和Hook技术学习(三)——Got表hook之导出表hook
前文介绍了导入表hook,现在来说下导出表的hook.导出表的hook的流程如下.1.获取动态库基值 void* get_module_base(pid_t pid, const char* modu ...
- 亲爱的,我是一条Linux运维技术学习路径呀。
根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...
- Java技术学习路线
转载 作者:David 链接:https://www.zhihu.com/question/25255189/answer/86898400来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
随机推荐
- PHP常见面试题总结
1.include 和 require 都能把另外一个文件包含到当前文件中 他们有什么区别?include 和 include_once 又有什么区别? 二者区别只有一个,那就是对包含文件的需求程度 ...
- MySQL 参数- Innodb_File_Per_Table(独立表空间)
Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间.共享表空间以及独立表空间都是针对数据的存储方式而言的. 共享表空间某一个数据库的所有 ...
- PHP文件头BOM头问题
前几天我们公司服务器出现了一个离奇的问题,服务器与本地文件代码完全一致,本地运行正常,到了测试环境服务器之后,各种问题一个又一个浮现,先是后台验证码不显示,以为是session写入失败,又是怀疑gd库 ...
- 发布iOS应用时,Xcode报错:Application failed codesign verification.
如下图,在发布应用时,因为codesign问题卡住了.尝试修改Target中的code sign setting,没有效果. 接着,在Developer Center删除所有证书,甚至包括Apps I ...
- Java--JDBC连接与Django--DATABASES设置
JDBC 简介 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 JavaAPI,可以为多种关系 数据库提供统一访问,它由一组用 ...
- MongoDB基础介绍安装与使用
MongoDB已经日益成为流程和主流的数据库了,原因有两个:第一个就是技术优势,第二就是便利性,个人使用部署都很方便. MongoDB的优缺点,以及使用场景 优点: 面向文档存储(自由读高,不需要定义 ...
- 求指定区间内与n互素的数的个数 容斥原理
题意:给定整数n和r,求区间[1, r]中与n互素的数的个数. 详细见容斥定理 详细代码如下 int solve(int r, int n) { vector<int>p; p.clear ...
- UVA1601 状态搜索
很有意思的一道题,就是迷宫问题的增强版.但是细节很多,有一个技巧就是把每个可以走的位置编号方便状态判重. AC代码: #include<cstdio> #include<cstrin ...
- C语言老司机学Python (二)
标准数据类型: 共6种:Number(数字),String(字符串),List(列表),Tuple(元组),Sets(集合),Dictionary(字典) 本次学习主要是和数据类型混个脸熟,知道每样东 ...
- home目录迁移至新分区
在用户home目录越来越大时,就可以考虑将home目录迁移至新的分区. 1.创建新分区. fidisk /dev/sda:用磁盘管理器打开磁盘 n:新建 +10g :设置分区为10G w :保存 保存 ...