书山小站

记录我的程序人生

#0 操作系统 - 魔法吟唱开始

请输入图片描述

0 操作系统 - 魔法吟唱开始

本文是笔者结合阅读书籍整理的笔记加作者自己的总结

0x0 计算机启动

  • 启动过程(按下电源键)

    • 上电在加载程序
    • 启动BIOS程序
  • 关于计算机内存几个问题

    • 由计算机地址总线确定,最大运行内存
    • 并不是最大内存就是可使用的内存,一部分内存需要留给 外部接口,例如显示适配器...

0x1 Bios如何启动

  • 上电后CS寄存器和IP寄存器会初始化为指向BIOS 的地址

    • 段地址 * 16 + 偏移地址

      • 段地址为什么要乘以16(十六进制 10)

        • 如果寄存器都是 8位寄存器 , 那么 两个寄存器 也就是16位,8086CPU的计算机架构里有20根地址总线。 也就是说最大支持2的20次方。

          那么问题来了:

          • 如果想访问 1M 也就是 2的20次方的地址 。
          • 表达不出来,所以需要扩展乘一下16(十进制)。变成可表达20位。
  • BIos作了什么:

    • 检查系统的各项硬件,最后一项校验0盘0道0扇区.

      • 如果扇区摸为是 0x55,0xaa确定为存在引导程序MBR
    • jmp 0:0x7c00

0x2 MBR 系统引导

  • 在BIOS结束检查后会跳转到0x7C00 地址
  • MBR的任务:

    • MBR的任务是加载某个程序到指定位置,程序一般是内核加载器
  • MBR大小限制:

    • 一般是512字节,因为一个扇区就是512字节
    • 扇区最后两个字节必须是0x55,0xaa

Nasm 汇编小知识

  • $

    • 代表本行地址
  • $$ - 本Section的地址

  • section vstart = **

    • **代表当前区块开始的内存地址

Linux dd命令

dd if=要读取的文件 of= 要输写入的文件 bs= 块的大小 count =拷贝块的个数 [seek=要跳过多少块] conv = 如何转换文件

附录

  • Llinux 安装dosbox apt install dosbox

0x3 汇编 aboutVstar(NASM)

  • section vstar=xxx解释

    • 基于xxx地址进行编码,后面的指令基于xxx地址的相对位置
编译器以相对于文件开头偏移来编址的好处是利于重定位

发表评论

电子邮件地址不会被公开。 必填项已用*标注