自己动手实现操作系统引导程序(OS bootloader)——借助QEMU/GDB/losetup/dd等工具

本文详细介绍了如何从头开始编写操作系统引导程序,包括汇编代码解释、编译链接、制作引导软盘镜像的过程,并利用QEMU和GDB进行调试。通过这段代码,仅在屏幕上显示信息,不加载实际操作系统。
摘要由CSDN通过智能技术生成

        引导程序可以认为是PC加电启动后运行的第一段代码,它是一段长度为512字节的16位运行于实模式的代码。事实上,机器启动后会首先运行0xFFFF0处(也有的资料说是0xFFFFFFF0,BIOS这块我也不熟:-( )ROM中的BIOS代码,之后会跳转到0x07C00处执行引导程序。

        1,首先给出一段完整的示例代码,此代码只为说明引导程序的执行流程,不具有加载实际操作系统的功能,只是在屏幕上打印一段信息。

#define BOOTSEG 0x07C0
          .code16
          .section ".bstext", "ax"
          .global bootsect_start
  bootsect_start:
  
          # Normalize the start address
          ljmp    $BOOTSEG, $start2
  
  start2:
          movw    %cs, %ax
          movw    %ax, %ds
          movw    %ax, %es
          movw    %ax, %ss
          xorw    %sp, %sp
          sti
          cld
  
          movw    $bugger_off_msg, %si
  
  msg_loop:
          lodsb
          andb    %al, %al
          jz      bs_die
          movb    $0xe, %ah
          movw    $7, %bx
          int     $0x10
          jmp     msg_loop
  
  bs_die:
          # A
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值