1.操作系统如何从BIOS到MBR的

1.1首先进入BIOS系统

BIOS系统保存在ROM可读存储器里面,在这里面并不会被掉电擦除。所有BIOS程序基本上不会改变。
这里产生3个问题:
1.BIOS是由谁加载的
2.BIOS被加载在哪里
3.BIOS的cs:ip是谁来更改的
BIOS程序保存在ROM里面,在开电的一瞬间CPU的CS:IP被强制初始化为0xF0000:0xFFF0。在实模式下被转化为0xFFFF0地址,在实模式下0xFFFFF是最大的寻址空间。在怎么小的空间里面保存不了BIOS的代码。所以这里存放的是转移指令 jmp far f000:e05b。BIOS代码真正的保存在0xfe05b处
BIOS所做的工作是检测内存和显卡等外设信息。当检测通过的时候,并初始化硬件后,开始在内存中0x000~0x3FF处建立数据结构,中断向量表并填写中断例程。

1.2当BIOS程序使命完成之后调用MBR(主引导)程序

BIOS通过跳转指令转移jmp 0:0x7c00实现的。
为什么跳转到0x7c00处呢?为的是不能让MBR程序过早的被破坏或者覆盖其他程序。
被认为是MBR程序,必须末尾两个字是0x55和0xaa,这样BIOS才把相应段认为是MBR段。

;主引导程序
;------------------------------------------------------------
SECTION MBR vstart=0x7c00         mov ax,cs      mov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00; 清屏 利用0x06号功能,上卷全部行,则可清屏。
; -----------------------------------------------------------
;INT 0x10   功能号:0x06       功能描述:上卷窗口
;------------------------------------------------------
;输入:
;AH 功能号= 0x06
;AL = 上卷的行数(如果为0,表示全部)
;BH = 上卷行属性
;(CL,CH) = 窗口左上角的(X,Y)位置
;(DL,DH) = 窗口右下角的(X,Y)位置
;无返回值:mov     ax, 0x600mov     bx, 0x700mov     cx, 0           ; 左上角: (0, 0)mov     dx, 0x184f     ; 右下角: (80,25),; VGA文本模式中,一行只能容纳80个字符,共25行。; 下标从0开始,所以0x18=24,0x4f=79int     0x10            ; int 0x10;;;;;;;;;    下面这三行代码是获取光标位置    ;;;;;;;;;
;.get_cursor获取当前光标位置,在光标位置处打印字符.mov ah, 3       ; 输入: 3号子功能是获取光标位置,需要存入ah寄存器mov bh, 0       ; bh寄存器存储的是待获取光标的页号int 0x10     ; 输出: ch=光标开始行,cl=光标结束行; dh=光标所在行号,dl=光标所在列号;;;;;;;;;    获取光标位置结束    ;;;;;;;;;;;;;;;;;;;;;;;;;     打印字符串    ;;;;;;;;;;;;还是用10h中断,不过这次是调用13号子功能打印字符串mov ax, message mov bp, ax       ; es:bp 为串首地址, es此时同cs一致,; 开头时已经为sreg初始化; 光标位置要用到dx寄存器中内容,cx中的光标位置可忽略mov cx, 5       ; cx 为串长度,不包括结束符0的字符个数mov ax, 0x1301    ; 子功能号13是显示字符及属性,要存入ah寄存器,; al设置写字符方式 ah=01: 显示字符串,光标跟随移动mov bx, 0x2       ; bh存储要显示的页号,此处是第0页,; bl中是字符属性, 属性黑底绿字(bl = 02h)int 0x10       ; 执行BIOS 0x10 号中断
;;;;;;;;;      打字字符串结束   ;;;;;;;;;;;;;;;jmp $       ; 使程序悬停在此message db "1 MBR"times 510-($-$$) db 0db 0x55,0xaa

这里贴上一个MBR主引导区的代码。
程序中的知识点:

1.SECTION MBR vstart=0x7c00

这里给编译器指明MBR开始的地址设置在0x7c00处,但是实际上程序的还是在本文件的开头处。这种写法只有提前规定了该段程序的地址,才可以进行声明。CPU就直接从这个地址处进行程序的执行。

2.INT 0x10或者INT 0x13

INT 0x10调用中断,在调用中断的时候,需要提前设置好寄存器的值,这样才能调用中断。

3. $ 和 $$

$表示当前行, $ $表示此section的虚拟起始地址。

4.times 510-( $ - $$) db 0

$ - $$标识程序所占的大小。并且510减去这个大小,表示这个程序字节大小到510个字节还有多少个字节。剩下的用0进行填写。

寄存器赋值

寄存器的值只能通过通用寄存器AX,BX,CX,DX进行间接复制,不能直接用立即数进行赋值。

1.操作系统如何从BIOS到MBR的相关推荐

  1. BIOS, UEFI, MBR, GPT, GRUB介绍

    1. 前言 在学习 Linux 系统启动原理之前,我们先了解下与操作系统启动相关的几个概念. 2. 与操作系统启动相关的几个概念 不管是 Windows 还是 Linux 操作系统,底层设备一般均为物 ...

  2. server系统万能网卡驱动离线版_科普一分钟|BIOS引导+MBR硬盘格式装系统方法

    [PConline 科普一分钟]对于DIYer来说,装系统是最简单不过的事了.然而身边总是有很多不懂怎么装系统的小白,你总不能每次被需要装系统是随传随到.今天我就给大家介绍一套我自己的纯净系统安装流程 ...

  3. 操作系统真象还原——12.初见MBR

    第1章 部署工作环境 CPU所能理解的指令格式是其在硬件上已经规定的,原则上只要按照IA-32 指令格式往二进制文件中写指令,就能够直接同CPU 对话了 虚拟机只是一个普通的进程,该进程模拟了硬件资源 ...

  4. 系统启动其实就2个步骤BIOS和MBR(和之后的init/systemd的关系)

    1.让计算机知道系统被放在哪个设备上了(BIOS) 计算机启动先启动bios,再去读MBR,MBR动了才会启动操作系统 2.让计算机知道哪里的分区是活动分区(MBR),找出来把系统引导到这里来 这两部 ...

  5. win7怎么跳过硬盘自检_科普一分钟|BIOS引导+MBR硬盘格式装系统方法

    [PConline 科普一分钟]对于DIYer来说,装系统是最简单不过的事了.然而身边总是有很多不懂怎么装系统的小白,你总不能每次被需要装系统是随传随到.今天我就给大家介绍一套我自己的纯净系统安装流程 ...

  6. easyuefi只能在基于uefi启动的_云计算学习体系-1.1-计算机硬件基础扩展知识BIOS/UEFI/MBR/GPT...

    我们每天都在用电脑,很多人可能每天都要面对多次Windows的启动过程,可是您知道在Windows的启动过程背后,你真真了解过吗?上文中我们认识了计算机的基本硬件,其中讲到BIOS和UEFI,下次内容 ...

  7. 【BIOS】MBR引导程序类型及详解

    一.前言 在了解MBR引导之前,先需要了解读取MBR之前,机器都干什么了. 直接总结其他博主的文章罗列在此,以便查阅: 首先我们要了解整个启动过程的轮廓,可以读下边这篇文章 计算机的启动过程(详细) ...

  8. 操作系统真象还原——3.完善MBR

    第3章 完善MBR 编译器的工作就是给各个符号进行编址,地址通常是相对于基址的偏移量 地址 = 上一个内容的基址 + 上一个内容的大小 section是伪指令,cpu不执行,起到划分代码逻辑的作用 v ...

  9. 传统bios安装linux分区,传统BIOS传统MBR分区,Clover硬盘安装基础教程

    在pcbeta潜水很久,发现安装Clover的帖子大部分都是:传统BIOS+GPT分区或者是UEFI主板.传统BIOS+MBR分区的帖子太少了,所以此片文章由此而生! 一.前提准备:1.不论你用cha ...

最新文章

  1. p40鸿蒙系统体验,苦心等待值了!华为P40成功运行鸿蒙OS,超级流畅
  2. Windows Service:用C#创建Windows Service
  3. 透过Win2008 R2窥视微软虚拟化帝国
  4. spring (四) SpringMVC的请求和响应
  5. c语言case label,an enum switch case label must be the unqualified name of an enumeration constant
  6. 对领域驱动设计的理解与实践
  7. Python4班平均成绩统计_回首过去,展望未来 | 欢迎大家来到E班第一次主题班会!...
  8. Delphi编程分割图片的方法
  9. 程序员别再迷茫,赚钱,方法比你想得更多
  10. 湖北省月降水量分布数据
  11. 软件流程和管理(四):PMP Stakeholder Management
  12. 牛客网Java笔试题目
  13. php 生成拼音缩写,php 输入汉字自动带出拼音和英文
  14. android wifi热点设置用户数,android 如何获取连接wifi热点的设备数量
  15. 网吧组建及相关技术(无盘技术;VLAN;PacketTrace)
  16. python正版软件多少钱_正版数据库软件需要多少钱
  17. invalid byte sequence for encoding utf8 0xcb 0xef
  18. 基于微信小程序云开(统计学生信息并导出excel)2.0版
  19. 腾讯短网址在线生成(url.cn短网址) 2020最新腾讯短网址生成api接口推荐
  20. 回溯法 n皇后 python 解法一

热门文章

  1. 16bit 180MS/s 高速数据采集卡的性能介绍
  2. 国产防盗版加密芯片安全性分析
  3. 饥荒机器人雷击_饥荒机器人雷击多次_饥荒机器人周围东西总被雷劈科技机器经常刚做好就被雷劈了烧掉了_滁州气象...
  4. 1104 -- 打折
  5. 微信小程序之实现两张图片合成一张并保存到相册
  6. 卫龙招股书再“失效”:上市二次遇挫,业绩增长迅猛,新增低俗标签?
  7. 360白名单有什么好处?什么是360白名单?
  8. z8350键盘主机刷linux,自动化运维之系统篇:cobbler批量安装系统主机搭建
  9. MES制造执行系统如何降本增效
  10. 关于中国大陆地区2021年9月和12月PMI认证考试合并举行的通知