当前位置:   article > 正文

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

as -o bootloader.o bootloader.s

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

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

  1. #define BOOTSEG 0x07C0
  2. .code16
  3. .section ".bstext", "ax"
  4. .global bootsect_start
  5. bootsect_start:
  6. # Normalize the start address
  7. ljmp $BOOTSEG, $start2
  8. start2:
  9. movw %cs, %ax
  10. movw %ax, %ds
  11. movw %ax, %es
  12. movw %ax, %ss
  13. xorw %sp, %sp
  14. sti
  15. cld
  16. movw $bugger_off_msg, %si
  17. msg_loop:
  18. lodsb
  19. andb %al, %al
  20. jz bs_die
  21. movb $0xe, %ah
  22. movw $7, %bx
  23. int $0x10
  24. jmp msg_loop
  25. bs_die:
  26. # A
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号