30天自制操作系统笔记

编程技术  /  houtizong 发布于 3年前   92
第二天
; hello-os; TAB=4ORG0x7c00; 指明程序的装载地址; 以下用于标准fat32格式的软盘JMPentryDB0x90DB"HELLOIPL"; 启动区的名称可以是任意字符串DW512; 每个扇区(sector)的大小(必须是512个字节)DB1; 簇(cluster)的大小(必须是1个扇区)DW1; FAT的其实位置(一般从第一个扇区开始)DB2; FAT的个数(必须为2)DW224; 根目录的大小(一般设成224项)DW2880; 该磁盘的大小(必须是2880个扇区)DB0xf0; 磁盘种类(必须是0xf0)DW9; FAT的长度(必须是9个扇区)DW18; 1个磁头有几个扇区(必须是18)DW2; 磁头数(必须是2)DD0; 不使用分区(必须是0)DD2880; 重写一次磁盘大小DB0,0,0x29; 意义不明,固定DD0xffffffff; (可能是)卷标号代码DB"HELLO-OS   "; 磁盘的名称(11字节)DB"FAT12   "; 磁盘格式名称(8字节)RESB18; 先空出18字节; 程序主体entry:MOVAX,0; 初始化寄存器MOVSS,AXMOVSP,0x7c00MOVDS,AXMOVES,AXMOVSI,msgputloop:MOVAL,[SI]ADDSI,1; 给SI加1CMPAL,0JEfinMOVAH,0x0e; 显示一个文字MOVBX,15; 指定字符颜色INT0x10; 调用显卡BIOSJMPputloopfin:HLT; 让CPU停止,等待指令JMPfin; 无线循环msg:DB0x0a, 0x0a; 换行两次DB"hello, haohaohao"DB0x0a; 换行DB0RESB0x7dfe-$; 填写0x00直到0x7dfeDB0x55, 0xaa; 一下是启动区以外部分的输出DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB4600DB0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00RESB1469432

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客