[fw]Real Mode addressing
2024-09-06 00:22:51
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 有幾個問題:
- 單一 selector 只能參照到 64K 大小的 memory,但如果程式碼大小超過 64K,就必須強制分成多個片段來執行;同樣的,不只程式碼,連太大的資料也是會有相同問題。
- segment address 的衝突問題,舉例來說:04808 可以被以下幾個組合所參照:
- 047C:0048 (047C0 + 0048 = 04808)
- 047D:0038 (047D0 + 0038 = 04808)
- 047E:0028 (047E0 + 0028 = 04808)
由於種種問題,造成在 real mode 中設計程式是一件非常困難的事情。
最新文章
- 你可能不知道的陷阱, IEnumerable接口
- Android 常用开发工具以及Mac常用软件
- python异常处理
- [好文要转]【关于block使用的5点注意事项】
- jquery点赞和取消点赞插件
- Android 数据库SQLite 写入SD卡
- BZOJ 2733 &; splay的合并
- PhoneGap中navigator.notification.confirm的用法详解
- HDU 3966 Aragorn's Story
- .Net文件*夹*操作
- html的空格和换行显示【摘自网络】
- POJ 3041 Asteroids (最小点覆盖集)
- NodeJS用递归实现异步操作的链式调用,完成一个简易的命令行输入输出REPL交互接口
- ThinkPHP中URL解析原理,以及URL路由使用教程!
- css - div垂直方向滚动
- Java基础知识强化26:Object类之hashCode()方法、getClass()方法
- [C语言练习]学生学籍管理系统
- 有两个序列a,b,大小都为n,序列元素的值是任意整数,无序。
- 拾人牙慧篇之——linux文件挂载,基于nfs的文件共享系统安装配置
- 树莓派.设置无线网卡为AP工作模式(pi2和pi3)