首先说一下到目前为止U盘启动遇到的问题,首先的一个问题是“system volume information“,目前尚未解决,这个问题可能导致U盘启动失败,我猜测可能是由于每一次重新将OS写到U盘的时候原来的信息没有被清除,导致了在执行的时候把那些没有被覆盖掉的信息当成指令执行了。这个问题我会继续的追踪下去,力求能找到引起这个问题的真正原因是什么,如果有遇到同样问题的朋友,能留言相告。

下面是真机的运行截图(当然纯属装逼,哈哈)

下面还是展示ipl10.nas代码

; haribote-ipl
; TAB=4
CYLS    EQU     10              ; 十个柱面ORG     0x7c00          ; MBR在内存中的位置为(DS=0,0x07c00=DS+0x7c00); 系统相关设置信息JMP     entryDB      0x90DB      "HELLOIPL"      ; name of boot sectorDW      512             ; size of sectorDB      1               ; fDW      1               ; FAT first sectorDB      2               ; FAT numberDW      224             ; root dir sizeDW      2880            ; disk size in sectorDB      0xf0            ; disk typeDW      9               ; FAT lengthDW      18              ; 18 sector each roadDW      2               ; disk up down DD      0               ; no partitionDD      2880            ; reclaim the disk sizeDB      0,0,0x29        ; reserveDD      0xffffffff      ; might be column DB      "HELLO-OS   "   ; disk nameDB      "FAT12   "      ; disk fs typeRESB    18              ; reserve 18 byte; init程序入口entry:MOV     AX,0            ; MOV     SS,AXMOV     SP,0x7c00       ; heap stack initMOV     DS,AX           ; 初始化代码段的基地址在0x00000; 读取磁盘到内存0x08200的位置MOV     AX,0x0820MOV     ES,AXMOV     CH,0            ; cylinder numberMOV     DH,0            ; disk head numberMOV     CL,2            ; sector number
readloop:MOV     SI,0            ; failed times
; retry to read disk if failed, read one sector
retry:MOV     AH,0x02         ; AH=0x02 : 读磁盘MOV     AL,1            ; 1扇区MOV     BX,0;MOV        DL,0x00         ; A驱动器MOV     DL,0x80         ; 驱动器号很关键INT     0x13            ; 调用BIOS的函数例程JNC     nextADD     SI,1CMP     SI,5JAE     errorMOV     AH,0x00;MOV    DL,0x00MOV     DL,0x80        ; 驱动器号很关键INT     0x13JMP     retry
next:MOV     AX,ESADD     AX,0x0020 ;每读取一个扇区内存向后偏移(ES+=0x0020)<<4MOV     ES,AXADD     CL,1CMP     CL,62       ;62个扇区JBE     readloopMOV     CL,1ADD     DH,1CMP     DH,4       ;4磁头JB      readloopMOV     DH,0ADD     CH,1CMP     CH,4       ;4柱面JB      readloopMOV     [0x0ff0],CH JMP     0xc200
error:MOV     SI,msgJMP     putloop
ok:MOV     SI,msg1
putloop:MOV     AL,[SI]ADD     SI,1            ; SI设置为1CMP     AL,0JE      finMOV     AH,0x0e         ; 在teletype模式下显示字符MOV     BX,15           ; 页码BH=0x00,前景色BL=0x0fINT     0x10            ; BIOS显示服务JMP     putloop
fin:HLT                     ; 暂停处理器JMP     fin
msg1:DB      0x0a, 0x0a      ; 换行符DB      "READ OKKKK"DB      0x0a            ; 换行符DB      0
msg:DB      0x0a, 0x0a      ; 换行符DB      "load error"DB      0x0a            ; 换行符DB      0RESB    0x7dfe-$       ; (0x7dfe-当前位置)都填充0x00DB      0x55, 0xaa

学习这本书到目前为止,还是学到了不少东西,其中包括计算机启动流程、BIOS中断向量表,实模式,保护模式,IDT,GDT,LDT,TSS,内存管理,定时器管理(这个主要是依赖时钟中断,时钟中断可是和任务调度密切相关,需要特别的注意),系统调用API,各种异常中断处理,可执行应用程序的编写(这当中可是和保护模式有很大的联系),还有就是深刻的体验到了模块化编程的各种好处。

在学习此书的过程中,遇到了很多问题,所以在此书的学习过程中,同时也学习了很多相关的数据,包括《linux内核的设计与实现》(PS:学习这本书的原因是因为我选择的课程就是讲授linux的内核,当然还是对此书的学习提供了很多的帮助,主要是概念上的理解和操作系统体系架构的理解);《深入理解linux内核》这本书很厚,但是讲解的比较细,但是如果你对计算机系统结构不是很了解的话,前面和硬件相关的部分理解起来比较困难,这本书对于有一定基础的人应该静下心来细看,肯定是有很大的收获,同时我认为这本书也可以作为内核编程的人的一本参考书籍;还有就是《386intel》手册,对于要学习《30天自制操作系统》的人来说intel386的手册应该静下心来仔细阅读。相信如果你能把这几本书吃透,说明你的基础就真的特别的扎实了,不论你是准备编写应用程序,还是内核编程,还是嵌入式系统设计都不是问题。

平心静气,脚踏实地

《30天自制操作系统》U盘启动,真机运行(16天)相关推荐

  1. 30天自制操作系统U盘启动

    最近从某宝上看了一本书,叫<30天自制操作系统>,上网翻了一下pdf,感觉还可以,唯一的美中不足就是软盘启动,这2018年了,谁家还有软盘软驱啊?!于是翻了一下网上的资料,发现没什么可以用 ...

  2. 30天自制操作系统——用U盘启动自制系统

    文章转载 https://blog.csdn.net/nonekey/article/details/8758715 最近试读了<30天自制操作系统>的前两章,感觉很有意思. 但是发现里面 ...

  3. 关于U盘启动操作系统《30天自制操作系统》

    原本的启动是从img启动的,而且这个img是用FAT12文件系统进行格式化的(具体去搜索FAT12文件格式,这里给大家推荐一篇http://www.doc88.com/p-646605198560.h ...

  4. 30天自制操作系统 - 取代软盘,用U盘写入引导扇区

    背景 作者是在2006年发布此书的(翻译版是在2012年在中国发售),当时可能还能找到带有软驱的计算机.但是时过境迁,现在已经不存在这种老古董东西了. 简单总结一下学习到第三天的一些更变. 更变 书籍 ...

  5. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...

  6. 30天自制操作系统——第五天

    第五天 参考<30天自制操作系统>GDT&IDT - 谷月轩 - 博客 梳理一下文件 现在我们拥有这么9个文件: ipl10.nas InitialProgramLoader, 占 ...

  7. 30天自制操作系统第三天

    操作系统实验日志3 学号 201708010402 姓名 徐冰娜 专业年级班级 实验日期 2019.9.28 实验项目 第3天:进入32位模式并导入C语言 智能1701 30天自制操作系统第三天 操作 ...

  8. 30天自制操作系统——第一天制作一个Hello word操作系统

    入手一本<30天自制操作系统>,内容诙谐有趣,很适合对操作系统一窍不通的新手. 据作者所言,这本书的最终目标是从零开始编写一个五脏俱全的图形操作系统,不用什么基础,而且只需30天!! 没有 ...

  9. 计算机基础知识不牢但会编程,30天自制操作系统(一)从计算机结构到汇编程序入门(示例代码)...

    学习这本书不代表我要亲自动手把这本书中的代码敲一遍哦,只是借机来学习一下操作系统.之前有段时间也在看操作系统的知识,怎么说呢之前的看的书都是偏讲理论多一些,对于我这个非科班出身的来说,由于之前的计算机 ...

最新文章

  1. 你有没有想过你的上级为什么让你干这件事情,他想干什么
  2. WINCE6.0+S3C2443自动重启的实现
  3. [转贴]Ultimate List of Free Windows Software from Microsoft
  4. java天气预报webservice_webservice之实现天气预报
  5. [ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序
  6. 关于用C#编写ActiveX控件3(转)
  7. 使用ggplot2绘制心形
  8. JPA-update方法使用踩坑记
  9. 单片机 队列 C语言 OLED 示波器 心率波形 显示 MSP430F5529 pulsesensor ADS1292R
  10. java软件工程师培训学_Java软件工程师学习路线
  11. python爬取千图网_scrapy之千图网全站爬虫
  12. Python实现王者农药自动刷金币
  13. 智能合约自动化工具:示例指南
  14. Nand Flash 通过调整阈值的Retry方法简单描述
  15. 家电售后服务外包维修模式,该如何管理
  16. vue 首屏优化的解决方案
  17. 【Python CUDA版】河北工业大学计算机图像处理实验二:图像直方图及灰度变换
  18. 队友揭秘小贝更衣室落泪 有望效仿卡纳瓦罗参加世界杯
  19. 【IoT】产品设计:用实际案例,手把手教你写BRD(商业需求文档)
  20. 最新微信密友使用方法配合微x模块更完美无需root适合任何安卓手机

热门文章

  1. 详解android framework中StateMachine(HSM层次状态机)的实现
  2. jsp的MVC模式设计用户登陆注册
  3. linux 查端口 查进程 (全网最详细)
  4. 英语流利说显示服务器错误,英语口语流利说系列失望(附音频)
  5. 刘翔中科院计算机研究所,2017年中科院微生物研究所拟录取直博生核对通讯地址及寄送调档函通知...
  6. 工匠精神是吹牛,互联网时代需打磨“剑锋
  7. 关于ComponentName的使用
  8. bottleneck resnet网络_为何resnet的bottleneck block为何能增强特征学习能力?
  9. ERP BI和报表的区别
  10. 12款经典的白富美型 jQuery 图片轮播插件