文章目录

  • 1 代码段和数据段
  • 2 8086的分段机制
    • 2.1 8086的分段机制

1 代码段和数据段

对于我们的程序来说,通常分为代码段和数据段:

对于上面的代码使用的是绝对地址,当我们的操作系统把数据段不是加载在0x0100的地址时,就会出现访问数据的错误。这其实就是重定位的问题,需要借用段寄存器解决:


我们需要知道如下几点:

  1. 指令中的地址是数据在段内的偏移地址。
  2. 数据段寄存器DS中的值是数据段的段地址。
  3. 段地址+偏移地址=物理地址,也就是数据实际所在的地址。
  4. 重定位就是通过改变数据寄存器DS中的值来实现的。

2 8086的分段机制

2.1 8086的分段机制

8086的处理器地址引线:20根,那么逻辑地址就是20位。而我们的寄存器只有16位,为了解决这个问题:段地址实际上也是20位,将段寄存器中的值左移4位(每个分段必须加载到地址最低位为0的位置,相对于16进制表示而言)。偏移地址仍然是16位,也就意味着每个段的最大长度为65536个字节。


参考资料:

  1. 深度学习:C/C++、计算机体系

8086的内存分段机制相关推荐

  1. GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)

    接着前面的文章,这篇文章就来说说menory alignment -- 内存对齐. 一.为什么需要内存对齐? 无论做什么事情,我都习惯性的问自己:为什么我要去做这件事情? 是啊,这可能也是个大家都会去 ...

  2. 深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式

    linux中的分段机制 前面说了那么多关于分段机制的实现,其实,Linux以非常有限的方式使用分段.因为,Linux基本不使用分段的机制(注:并不是不使用,使用分段方式还是必须的,会简化程序的编写和运 ...

  3. Linux内存管理:内存寻址之分段机制与分页机制

    目录 Linux 内存寻址之分段机制 前言 分段到底是怎么回事? 实模式的诞生(16位处理器及寻址) 保护模式的诞生(32位处理器及寻址) IA32的内存寻址机制 寻址硬件 IA32的三种地址 MMU ...

  4. Linux内存管理之内存寻址:分段机制的实现方式

    Table of Contents linux中的分段机制 linux中的GDT 用户态和内核态的数据段以及代码段4个段 任务状态段TSS 寄存器保存区域 内层堆栈指针区域 地址映射寄存器区域 链接字 ...

  5. 内存分段分页机制理解

    现代操作系统,计算机内存是按照先分段再分页的方式管理的. 注意: 以下描述都是基于32位计算机进行描述的. 1. 分段 1) 程序直接使用物理地址的问题 考虑最原始,最直接的情况,程序中访问的地址都直 ...

  6. 内存分段分页机制理解_深度干货 | 真棒! 20 张图揭开内存管理的迷雾,瞬间豁然开朗...

    openEA开源周刊 openEA开源社区的官方运营载体 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:本篇跟大家说说内存管理,内存管理还是比较重要的一个 ...

  7. linux 内存 段,Linux内存储器管理之分段机制

    Linux内存管理之分段机制 逻辑地址就是我们普通的段+偏移的表现方式,而线性地址就是段+偏移之后算出来的一个地址,前者可以认 为是二维的地址,而后者可以理解是一维的.线性地址和虚拟地址的概念相接近, ...

  8. 内存分段分页机制理解_深入理解虚拟机,JVM高级特性-自动内存管理机制

    什么是自动内存管理机制? 对于java程序员来说,有一点是要比C/C++程序员要方便的,那就是程序在运行时,java程序不需要为每一个对象其编写对应的释放内存的代码,JVM虚拟机将为你在合适的时间去释 ...

  9. 【OS学习笔记】三十 保护模式九:段页式内存管理机制概述

    上几篇文章学习了任务切换相关知识,如下: [OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 今 ...

最新文章

  1. 信息系统项目管理知识--组织级项目管理
  2. C++ 11 深度学习(七)位运算常见操作
  3. React开发(243):dva概念7subscription
  4. java clone原理_cloneAble接口实现clone()原理
  5. 前端跨域,nginx反向代理的解决方案
  6. Linux下通过jstat命令查看jvm的GC情况
  7. boost安装_Boost编译与使用
  8. 关于interface
  9. 手把手教你创建 Alexa Smart Home Skill (二)
  10. WIN7激活工具拒绝访问cannot open file C:\OEMSF解决方法
  11. SQL在执行JOIN ON时,到底发生了什么?
  12. 不低调的巨人,史玉柱
  13. 金融市场一周简报(2017-08-18)
  14. 小甲鱼python入门笔记(三)
  15. vant-ui的官方入口
  16. The Untended Antiquity (二维树状数组 哈希)
  17. Hive left semi join ,select 和 where中不能出现右表字段/不会生成笛卡尔积
  18. AI助力黑客,下一代防火墙将力不从心
  19. 迄今最全的国内引进的凯迪克获奖绘本书单172本(1938年-2016年)
  20. Linux倒序赋值用molloc函数,请教一个C语言函数malloc的问题

热门文章

  1. 【控制】《多无人机协同控制技术》周伟老师-第9章-单无人机目标跟踪飞行控制策略
  2. Ardino基础教程 23_步进电机
  3. 2021/6/20~22 每天学习python 30分钟 -了解python - python的运算符
  4. arduino代码运行时间测试函数,代码性能运行时间测试方法
  5. 【PC工具】建议收藏!一个有N多日常生活学习办公小工具的神奇网站,推荐在线工具网站...
  6. 合成孔径雷达技术——概述
  7. 【注水功率分配】注水功率分配算法的MATLAB仿真
  8. JavaScript五十问——对比来说CSS的Grid与FlexBox(下篇)
  9. 对WIFI通信的一些理解(经常更新修改)
  10. asp:HyperLink vs asp:LinkButton