• 自制一个能显示helloworld的最简单OS


    《自己动手写操作系统》

      org 07c00h
      mov ax,cs
      mov ds,ax
      mov es,ax
      call DispStr
      jmp $
    DispStr:
      mov ax,BootMessage
      mov bp,ax
      mov cx,16
      mov ax,01301h
      mov bx,000ch
      mov dl,0
      int 10h
      ret
    BootMessage:   db "Hello,OS world!"
    times 510-($-$$) db 0
    dw  0xaa55

    在自己电脑安装nasm。

    官网下载地址:http://www.nasm.us/pub/nasm/releasebuilds/2.12/win64/

    这样就编译为bin的可执行文件,通过软盘启动计算机,便是操作系统的雏形。

    之后要做的是将这个bin文件转换为img文件,我花了几个小时在网上寻找解决办法,最后通过一个winhex的神奇小工具解决了。

    具体办法:使用 WinHex 用winhex打开 t.bin 文件,按 ctrl+A 选择全部内容,然后点右键->edit- >copy all->hex values,然后用 winhex 新建一个文件,在弹出窗口选择大小为 1.44M。把刚才复制的十六进制值粘贴至新文件。保存为t.img。

     用vmware虚拟机启动这个img文件。

    首先创建一个空白的虚拟机,也就是创建时选择稍后安装os。

    然后右键点击该虚拟机,选择设置。

    在硬件里添加软盘->使用软盘影像->将刚才制作的t.img加载进来。

    然后开启虚拟机,成功显示hello world文字。

    原理分析总结:当计算机通电启动时,会加电自检,然后寻找启动盘,如果是从软盘启动,计算机会寻找0面0磁道1扇区。发现他如果以0xaa55结束会认为这是一个引导扇区。boot sector。

    一个正确的boot sector除了必须以0xaa55结束,还应该包括至少512B执行码。

    一旦BIOS发现了引导扇区,会将这512B内容加载至0000:7c00处。然后跳转至0000:7c00处将控制权交给这段代码。

  • 相关阅读:
    windows上phpstudy配置memcache
    获取全站详情链接,并输出为txt文本
    Linux 宝塔面板免费版开启 waf 防火墙的方法
    where条件多种情况
    网站加https
    git常用命令
    缓存
    Stream转换成byte[] 、将 byte[] 转成 Stream 、Stream和文件的转换、从文件读取 Stream
    C#发送邮件
    Ref和Out的区别
  • 原文地址:https://www.cnblogs.com/rixiang/p/5264401.html
Copyright © 2020-2023  润新知