• 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
    

    启动效果如图所示

  • 相关阅读:
    MySQL修改时区的方法小结
    MYSQL日期 字符串 时间戳互转
    2017php经典面试题
    PHP获得真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
    开放api接口签名验证
    MySql之ALTER命令用法详细解读(转)
    easyUI datagrid 清空
    webApi文档好帮手-apidoc使用教程
    驼峰命名和下划线命名互转php实现
    SQL Server 数据导入Mysql详细教程
  • 原文地址:https://www.cnblogs.com/wangdongfang/p/14224403.html
Copyright © 2020-2023  润新知