Real Mode

在 real mode 中,memory 的使用被限制在 1 MByte(220 bytes) 內,可用的 address 範圍為 0x00000 ~ 0xFFFFF。

由 memory address 的可用範圍可知,存取需要 20 bits 的長度,但在 8086 的 CPU 架構中僅有 16-bit register,因此必須使用兩個 16 bits 值的組合來表示一個 memory address。
其中前面的 16 bits 稱為 selector,必須存於 segment register 中,而後面的 16 bits 稱為 offset,其中實際 memory address 的計算方式如下:

16 * selector + offset (即為 selector 補 0 到後方再與 offset 相加)

而 real mode 有幾個問題:

  1. 單一 selector 只能參照到 64K 大小的 memory,但如果程式碼大小超過 64K,就必須強制分成多個片段來執行;同樣的,不只程式碼,連太大的資料也是會有相同問題。
  2. segment address 的衝突問題,舉例來說:04808 可以被以下幾個組合所參照:
    • 047C:0048 (047C0 + 0048 = 04808)
    • 047D:0038 (047D0 + 0038 = 04808)
    • 047E:0028 (047E0 + 0028 = 04808)

由於種種問題,造成在 real mode 中設計程式是一件非常困難的事情。

最新文章

  1. 你可能不知道的陷阱, IEnumerable接口
  2. Android 常用开发工具以及Mac常用软件
  3. python异常处理
  4. [好文要转]【关于block使用的5点注意事项】
  5. jquery点赞和取消点赞插件
  6. Android 数据库SQLite 写入SD卡
  7. BZOJ 2733 & splay的合并
  8. PhoneGap中navigator.notification.confirm的用法详解
  9. HDU 3966 Aragorn's Story
  10. .Net文件*夹*操作
  11. html的空格和换行显示【摘自网络】
  12. POJ 3041 Asteroids (最小点覆盖集)
  13. NodeJS用递归实现异步操作的链式调用,完成一个简易的命令行输入输出REPL交互接口
  14. ThinkPHP中URL解析原理,以及URL路由使用教程!
  15. css - div垂直方向滚动
  16. Java基础知识强化26:Object类之hashCode()方法、getClass()方法
  17. [C语言练习]学生学籍管理系统
  18. 有两个序列a,b,大小都为n,序列元素的值是任意整数,无序。
  19. 拾人牙慧篇之——linux文件挂载,基于nfs的文件共享系统安装配置
  20. 树莓派.设置无线网卡为AP工作模式(pi2和pi3)

热门文章

  1. 11.SUSE Linux服务器系统网卡配置重启问题
  2. tenorflow 模型调优
  3. 记一次在mac上源码编译curl,使其支持NSS的过程
  4. ffmpeg windows下编译安装
  5. [python 学习] 类
  6. JavaWeb(八):Filter和Listener
  7. B/S大文件断点续传
  8. HTML基础入门学习
  9. .net core跨平台
  10. 银联高校极客挑战赛 初赛 第一场 B