读书笔记《30天自制操作系统》day01

http://blog.csdn.net/ltbylc/article/details/8309257


1. 计算机只知道01代码,计算机启动时从引导扇区开始执行,文件如下hellos.asm

 

[plain] view plain copy
  1.          
  2.        DB   0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f  
  3. DB  0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01, 0x00  
  4. DB  0x02, 0xe0, 0x00, 0x40, 0x0b, 0xf0, 0x09, 0x00  
  5. DB  0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00  
  6. DB  0x40, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x29, 0xff  
  7. DB  0xff, 0xff, 0xff, 0x48, 0x45, 0x4c, 0x4c, 0x4f  
  8. DB  0x2d, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x46, 0x41  
  9. DB  0x54, 0x31, 0x32, 0x20, 0x20, 0x20, 0x00, 0x00  
  10. RESB    16  
  11. DB  0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c  
  12. DB  0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a  
  13. DB  0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09  
  14. DB  0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb  
  15. DB  0xee, 0xf4, 0xeb, 0xfd, 0x0a, 0x0a, 0x68, 0x65  
  16. DB  0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72  
  17. DB  0x6c, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00  
  18. RESB    368  
  19. DB  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa  
  20. DB  0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  21. RESB    4600  
  22. DB  0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  23. RESB    1469432  


2. 使用nasm编译,直接生成软盘映像

[plain] view plain copy
  1. nasm -o helloos.img helloos.asm  


 

3.使用bochs可虚拟运行,helloos.bxrc

[plain] view plain copy
  1. romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000  
  2. megs: 16  
  3. vgaromimage: $BXSHARE\VGABIOS-lgpl-latest  
  4. floppya: 1_44=helloos.img, status=inserted  
  5. boot: a  
  6. log: bochsout.txt  
  7. parport1: enable=0  
  8. vga_update_interval: 300000  
  9. keyboard_serial_delay: 200  
  10. keyboard_paste_delay: 100000  
  11. floppy_command_delay: 50000  
  12. ips: 4000000  
  13. mouse: enabled=0  
  14. private_colormap: enabled=0  
  15. fullscreen: enabled=0  
  16. screenmode: name="sample"  
  17. i440fxsupport: enabled=0  


4. helloos1.asm=helloos.asm

[plain] view plain copy
  1. ;FAT12格式文件系统头部分  
  2.         DB      0xeb, 0x4e, 0x90  
  3.         DB      "HELLOIPL"        
  4.         DW      512       
  5.         DB      1         
  6.         DW      1         
  7.         DB      2         
  8.         DW      224   
  9.         DW      2880      
  10.         DB      0xf0      
  11.         DW      9     
  12.         DW      18    
  13.         DW      2     
  14.         DD      0     
  15.         DD      2880      
  16.         DB      0,0,0x29  
  17.         DD      0xffffffff  
  18.         DB      "HELLO-OS   "     
  19.         DB      "FAT12   "    
  20.         RESB    18            
  21. ;程序主体  
  22.         DB      0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c  
  23.         DB      0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a  
  24.         DB      0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09  
  25.         DB      0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb  
  26.         DB      0xee, 0xf4, 0xeb, 0xfd  
  27. ;显示信息部分  
  28.   
  29.         DB      0x0a, 0x0a    
  30.         DB      "hello, world"  
  31.         DB      0x0a          
  32.         DB      0  
  33.         ;原书中使用下面指令,但这个在nasm中不通过,故使用times  
  34.         ;RESB   0x1fe - $             
  35.         ;times 0x1fe - ($ - $$) DB 0  
  36.                 times 510 - ($-$$) DB 0  
  37.   
  38.         DB      0x55, 0xaa  
  39. ;启动区外输出部分  
  40.         DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  41.         RESB    4600  
  42.         DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  43.         RESB    1469432  


 

5. helloos2.asm=helloos1.asm

[plain] view plain copy
  1.         ORG     0x7c00            
  2.   
  3.         JMP     entry  
  4.         DB      0x90  
  5.         DB      "HELLOIPL"        
  6.         DW      512               
  7.         DB      1                 
  8.         DW      1             
  9.         DB      2             
  10.         DW      224               
  11.         DW      2880          
  12.         DB      0xf0          
  13.         DW      9             
  14.         DW      18            
  15.         DW      2             
  16.         DD      0             
  17.         DD      2880          
  18.         DB      0,0,0x29      
  19.         DD      0xffffffff        
  20.         DB      "HELLO-OS   "     
  21.         DB      "FAT12   "    
  22.         RESB    18            
  23.   
  24.   
  25. entry:  
  26.         MOV     AX,0              
  27.         MOV     SS,AX  
  28.         MOV     SP,0x7c00  
  29.         MOV     DS,AX  
  30.         MOV     ES,AX  
  31.   
  32.         MOV     SI,msg  
  33. putloop:  
  34.         MOV     AL,[SI]  
  35.         ADD     SI,1              
  36.         CMP     AL,0  
  37.         JE      fin  
  38.         MOV     AH,0x0e           
  39.         MOV     BX,15             
  40.         INT     0x10              
  41.         JMP     putloop  
  42. fin:  
  43.         HLT                       
  44.         JMP     fin               
  45.   
  46. msg:  
  47.         DB      0x0a, 0x0a        
  48.         DB      "hello, world"  
  49.         DB      0x0a              
  50.         DB      0  
  51.   
  52.         ;RESB   0x7dfe-$          
  53.         ;times   0x7dfe - ( $ - $$ ) DB 0  
  54.                 times 510-($-$$) DB 0  
  55.   
  56.         DB      0x55, 0xaa  
  57.   
  58.         DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  59.         RESB    4600  
  60.         DB      0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00  
  61.         RESB    1469432  

6. FAT12信息

FAT12是MS公司Dos所支持的文件系统之一,当软盘被标准格式化后:每个磁头80个磁道,每个磁道18个扇区,每个扇区512字节,所以标准软盘的容量为:2*80*18*512=1474560B=1440K=1.44M。文件系统数据结构为:

引导程序数据结构

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值