当前位置:   article > 正文

操作系统实现---boot启动并读软盘_修改boot\bootsect.asm 中的汇编代码,使之在读取软盘 a 中的内核文件时,能够识别p

修改boot\bootsect.asm 中的汇编代码,使之在读取软盘 a 中的内核文件时,能够识别p

参照《linux完全剖析》一文中的程序自己写了

如下两个简单的程序:

boot.s

  1. ;这个程序将软驱的第二个扇区中的内容(kernel)读到
  2. ;内存0x1000:0000的位置然后跳转到该处执行
  3. ;
  4. ;
  5. ;
  6. org 07c00h
  7. jmp start
  8. msg:
  9. db "Now,begin to load kernel....",0ah
  10. msgLen equ $-msg
  11. start:
  12. mov ax,cs
  13. mov ds,ax
  14. mov es,ax
  15. mov ax,msg
  16. mov bp,ax
  17. mov cx,msgLen
  18. mov ax,01301h
  19. mov bx,000ch
  20. mov dl,0
  21. int 10h
  22. load:
  23. mov dx,0x0000 ;dh->磁头号,dl->驱动器号
  24. mov ax,0x1000
  25. mov es,ax
  26. xor bx,bx ;es:bx->the data 0x1000:0000
  27. mov ch,0 ;ch->磁道号
  28. mov cl,2 ;cl->起始扇区号
  29. mov ah,02h ;param
  30. mov al,01h ;how many blocks to read
  31. int 13h
  32. sys: ;jmp to the kernel
  33. jmp 0x1000:0
  34. times 510 -($-$$) db 0
  35. dw 0xaa55


2、sys.s

  1. mov ax,cs
  2. mov ds,ax
  3. mov es,ax
  4. mov ss,ax
  5. mov ax,msg
  6. mov bp,ax
  7. mov cx,msgLen
  8. mov ax,01301h
  9. mov bx,000ch
  10. mov dl,0
  11. int 10h
  12. jmp $
  13. msg:
  14. db "It's the world of kernel!&#
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/346583
推荐阅读
相关标签
  

闽ICP备14008679号