第三章主要是讲IA32架构IntelCPU的相关内容,因为只有了解了CPU的一些特性,才能够写出操作系统,这也是操作系统为什么和硬件CPU有关系的原因。同样也是因为只是为了了解CPU的特性,第三章主要就是通过汇编代码去熟悉这些特性,因此借助DOS去执行也无妨。

从汇编源码编译成执行文件,所有变量和地址都是按照线性地址编译出来的。虽然实模式和保护模式的寻址方法不一样,但是只要他们计算的线性地址结果是一样的,那获取的内容也就是一样的。保护模式的优势就是通过分段的方法(即段式存储机制)与汇编源码的SECTION可以对应起来,从汇编源码的编写角度来看就简单了很多。

从汇编源码生成的执行程序是一个纯二进制文件,就是程序执行的内存影像和二进制文件是一样的。并且执行程序文件的汇编指令是按照线性地址一直排下去的。执行程序在内存的起始线性地址是按照约定放置的,例如com文件起始地址是0100h。执行程序的数据段地址可以是通过源码设置的。

汇编程序可以选择2种执行方式

(1,在虚拟机直接执行,要求编译出来的程序不能大于512字节;显然通过2,在DOS环境下执行更好一些)
(我这里使用DOSBox的环境,没有使用虚拟机的FreeDos,不需要通过linux把二进制程序复制到软盘上让FreeDos去识别)

1,在虚拟机直接执行  
按照起始地址org    07c00h编译成二进制程序,复制到引导软盘下,在虚拟机下开机执行。
nasm pmtest1.asm -o pmtest1.bin
dd  if=pmtest1.bin  of=a.img  bs=512  count=1  conv=notrunc

2,在DOS环境下执行
按照起始地址org    0100h编译成二进制程序,直接在DOS下执行即可。
nasm pmtest1b.asm -o pmtest1.com 
在DOS环境下执行 pmtest1.com

orange's一个操作系统的实现--学习过程  第三章:a  为什么需要认识IA32架构IntelCPU保护模式相关推荐

  1. 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程

    在<<Orange's 一个操作系统的实现>>一书中有时使用了org 0100h,为何是0100h?因为书中的例子是为了突破引导扇区512字节的限制, 而将asm文件编译为.c ...

  2. 《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-无特权级转换)...

    在上次的代码基础上,添加一个代码段作为通过调用门转移的目标段.了解一下调用的工作方法,代码分析如下: <<红色标识部分为新增代码>> ; =================== ...

  3. Orange‘s’ 一个操作系统的实现

    突然想要随时记录一下实验过程中的各种问题,因此有了此文档: 由于是中途开始的,所以就偷懒直接跳过了vm.ubuntu32位16.04.bochs2.6.8.nasm的安装,下面开始正文内容: 2022 ...

  4. 《Orange's 一个操作系统的实现》学习笔记--LDT

    LDT(Local Descriptor Table)它和GDT差不多,都是描述符表(Descriptor Table)区别仅仅在于全局(Global)和局部(Local)的不同.局部描述符表可以有若 ...

  5. 《Orange’s 一个操作系统的实现》3.保护模式4----LDT(Local Descriptor Table)

    还是在原有代码基础上进行修改,加入LDT的使用,代码分析如下(红色部分为新增代码): 本程序是在原有完成大内存读写测试完成后,调用局部任务显示字符L ; ======================= ...

  6. 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析

    1.pm.inc定义了描述符.选择子及相关位数的取值 ; 描述符图示 ; 图示一 ; ;  ------ ┏━━┳━━┓高地址 ;         ┃ 7  ┃ 段 ┃ ;         ┣━━┫  ...

  7. 《Orange’s 一个操作系统的实现》1.搭建操作系统开发环境

    书中给出了两种环境:windows和linux,平台选择根据自己喜好.本人这里选择ubuntu10.04+virtualbox作为开发平台. 1.下载.安装VirtualBox     http:// ...

  8. Orange‘s 一个操作系统的实现--Bochs遇到的问题

    1.Message: dlopen failed for module 'x': file not found 这是未安装bochs-x的缘故 解决方案: sudo apt-get install b ...

  9. 2.ZooKeeper客户端Curator「第三章 ZooKeeper Java客户端」「架构之路ZooKeeper理论和实战」

    前言 上一篇文章 介绍了zookeeper原生API的使用,使用过原生API不得不说,有很多的问题,比如:不能递归创建和删除节点.Watcher只能使用一次.还有很多可以解决分布式应用问题的api(比 ...

  10. IA-32系统编程指南 - 第三章 保护模式的内存管理【2】

    第三章 保护模式的内存管理[2]     [作者:lion3875 原创文章 参考文献<Intel 64 and IA-32 system programming guide>]     ...

最新文章

  1. POJ3040给奶牛发工资
  2. Linux 小知识翻译 - 「NTP」
  3. HOOK -- IAT HOOK 本进程MessageBox
  4. Ubuntu16.04下面的vs code出现Unable to activate CppCheck analyzer
  5. python 框架 优化_python+unittest框架第六天unittest之优化测试报告
  6. mysql 索引表的应用_MySQL查询优化之索引的应用详解
  7. 一年级大括号问题专项训练_新人教版一年级数学上册5.9解决问题(减法)微课视频辅导|课后练习...
  8. 三菱FX Q FX5U PLC 程序加密,使用ST结构化文
  9. 种子点生长算法下——三维种子点生长
  10. c语言常量指什么作用,c语言字符常量是什么
  11. ue4蓝图碰撞检测的类型_UE4蓝图碰撞检测解析
  12. 【开箱即用】HTML5教程
  13. GIT 中如何打标签
  14. 战神引擎各类修改地址中文注释汇总
  15. android 个人云存储,个人云存储app-个人云安卓版-地之图下载
  16. 2023-spring 2.探险营地 — 字符串
  17. 很抱歉,EXCEL遇到错误,使其无法正常工作,因此需要关闭EXCEL。是否希望我们立即修复?...
  18. 使用cmd查看端口号
  19. 4.1-知识图谱在金融领域中的应用实践
  20. 从Windchill说PLM的入门指南——(听听不专业小编的胡说八道)

热门文章

  1. 如何给服务器文件设置权限,如何设置服务器文件权限
  2. 已经更CSS《一篇文章让你从HTML零基础入门前端开发》12.22
  3. 应急响应中的入侵排查和权限维持
  4. [架构之路-32]:目标系统 - 系统软件 - Linux OS用户空间程序的启动、关闭、监管 -- init进程
  5. 让创意设计更加简单:在线设计平台Canva登陆中国
  6. 用pyqt原生功能实现自由屏幕截图
  7. mongodb 使用$lookup做多表关联处理
  8. 桥接路由器总是掉线_tplink路由器桥接掉线怎么办
  9. 为什么要创建SRT?
  10. html中fixed属性,CSSposition属性中:fixed使用详解