zoukankan      html  css  js  c++  java
  • 30天自制操作系统-day3

    30天自制操作系统-day3

    前2天我们分别使用了直接使用二进制编辑器和简单的汇编指令生成了img文件,今天我们尝试一下使用稍微复杂一点的汇编指令

    os.asm文件内容如下:

    ; hello-os
    ; TAB=4
    ; 以下是FAT12标准软盘专用代码
    
    
    		DB		0xeb, 0x4e, 0x90
    		DB		"HELLOIPL"		; 启动区名称
    		DW		512				; 每个扇区的大小,必须是512字节
    		DB		1				; 簇的大小,为一个扇区
    		DW		1				; FAT的起始位置
    		DB		2				; FAT的个数,必须为2
    		DW		224				; 根目录的大小,一般设立为224项
    		DW		2880			; 磁盘大小,必须为2880个扇区
    		DB		0xf0			; 磁盘的种类,必须是0xf0
    		DW		9				; FAT的长度,一般为9扇区
    		DW		18				; 1个磁道
    		DW		2				; 磁头数
    		DD		0				; 不使用分区,必须是0
    		DD		2880			; 重写一遍磁盘大小
    		DB		0,0,0x29		; 意义不明,固定这样写
    		DD		0xffffffff		; 卷码编号
    		DB		"HELLO-OS   "	; 磁盘名称,11个字节
    		DB		"FAT12   "		; 磁盘格式名称,18字节
    		RESB	18				; 空出18字节
    
    

    ; 程序主题

    		DB		0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
    		DB		0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
    		DB		0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
    		DB		0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
    		DB		0xee, 0xf4, 0xeb, 0xfd
    
    

    ; 信息显示部分

    		DB		0x0a, 0x0a		; 2个换行
    		DB		"hello, world day3"   
    		DB		0x0a			; 改行
    		DB		0
    	
    		RESB	0x1fe-$			; 填写0x00,直到0x001fe,如果此处有报错,可以直接将表达式写成0x1fe-$-->373
    	
    		DB		0x55, 0xaa
    

    ; 以下是启动区以外的部分

    		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    		RESB	4600
    		DB		0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
    		RESB	1469432
    

    启动效果如图所示

  • 相关阅读:
    献给即将27岁的我
    oracle导表小结
    [译]第三章:什么是组织结构
    第三章:什么是组织结构
    第二章:什么是组织
    [译]第二章:什么是组织
    第一章:什么是管理
    [译]第一章:什么是管理
    [原]DbHelper-SQL数据库访问助手
    DbHelper-SQL数据库访问助手
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/14224403.html
Copyright © 2011-2022 走看看