当前位置: 首页 > news >正文

操作系统-day04-做个IMG

操作系统-day04-做个IMG

原文

  • 文件名会写在 0x002600 以后的地方
  • 文件的内容会写在 0x004200 以后的地方

ipl.nas

; haribote-ipl
; TAB=4CYLS	EQU		10				; 声明CYLS=10ORG		0x7c00			; 指明程序装载地址; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy codeJMP		entryDB		0x90DB		"HARIBOTE"		; 启动扇区名称(8字节)DW		512				; 每个扇区(sector)大小(必须512字节)DB		1				; 簇(cluster)大小(必须为1个扇区)DW		1				; FAT起始位置(一般为第一个扇区)DB		2				; FAT个数(必须为2)DW		224				; 根目录大小(一般为224项)DW		2880			; 该磁盘大小(必须为2880扇区1440*1024/512)DB		0xf0			; 磁盘类型(必须为0xf0)DW		9				; FAT的长度(必??9扇区)DW		18				; 一个磁道(track)有几个扇区(必须为18)DW		2				; 磁头数(必??2)DD		0				; 不使用分区,必须是0DD		2880			; 重写一次磁盘大小DB		0,0,0x29		; 意义不明(固定)DD		0xffffffff		; (可能是)卷标号码DB		"HARIBOTEOS "	; 磁盘的名称(必须为11字?,不足填空格)DB		"FAT12   "		; 磁盘格式名称(必??8字?,不足填空格)RESB	18				; 先空出18字节; 程序主体entry:MOV		AX,0			; 初始化寄存器MOV		SS,AXMOV		SP,0x7c00MOV		DS,AX; 读取磁盘MOV		AX,0x0820MOV		ES,AXMOV		CH,0			; 柱面0MOV		DH,0			; 磁头0MOV		CL,2			; 扇区2readloop:MOV		SI,0			; 记录失败次数寄存器retry:MOV		AH,0x02			; AH=0x02 : 读入磁盘MOV		AL,1			; 1个扇区MOV		BX,0MOV		DL,0x00			; A驱动器INT		0x13			; 调用磁盘BIOSJNC		next			; 没出错则跳转到nextADD		SI,1			; 往SI加1CMP		SI,5			; 比较SI与5JAE		error			; SI >= 5 跳转到errorMOV		AH,0x00MOV		DL,0x00			; A驱动器INT		0x13			; 重置驱动器JMP		retry
next:MOV		AX,ES			; 把内存地址后移0x200(512/16十六进制转换)ADD		AX,0x0020MOV		ES,AX			; ADD ES,0x020因为没有ADD ES,只能通过AX进行ADD		CL,1			; 往CL里面加1CMP		CL,18			; 比较CL与18JBE		readloop		; CL <= 18 跳转到readloopMOV		CL,1ADD		DH,1CMP		DH,2JB		readloop		; DH < 2 跳转到readloopMOV		DH,0ADD		CH,1CMP		CH,CYLSJB		readloop		; CH < CYLS 跳转到readloop; 读取完毕,跳转到haribote.sys执行!MOV		[0x0ff0],CH		; IPLがどこまで読んだのかをメモJMP		0xc200error:MOV		SI,msgputloop:MOV		AL,[SI]ADD		SI,1			; 给SI加1CMP		AL,0JE		finMOV		AH,0x0e			; 显示一个文字MOV		BX,15			; 指定字符颜色INT		0x10			; 调用显卡BIOSJMP		putloopfin:HLT						; 让CPU停止,等待指令JMP		fin				; 无限循环msg:DB		0x0a, 0x0a		; 换行两次DB		"load error"DB		0x0a			; 换行DB		0RESB	0x7dfe-$		; 填写0x00直到0x001feDB		0x55, 0xaa

haribote.nas

; haribote.nas - 纯实模式,全屏白色(或任何颜色)
; 编译:nask haribote.nas haribote.sys haribote.lst
; 配合原书 ipl.bin 使用ORG		0xc200; 设置 VGA 320x200 256色模式MOV		AL,0x13MOV		AH,0x00INT		0x10; 直接写显存(0xA0000)填充白色MOV		AX,0xA000MOV		ES,AXXOR		DI,DI			; ES:DI = 0xA000:0MOV		AL,0x0C			; 红色(0x0F 是亮白)MOV		CX,320*200		; 64000 个像素REP		STOSB			; 一次性填充整个屏幕fin:HLTJMP		fin
http://www.rkmt.cn/news/1429913.html

相关文章:

  • 无人机固件自由获取终极指南:5分钟掌握DankDroneDownloader完整使用方法
  • 2026年昆明奢侈品回收口碑排行榜,这几家最靠谱 - 资讯纵览
  • 八大网盘直链下载终极指南:LinkSwift 浏览器插件完全教程
  • 2026论文降AI率工具:11款工具实测谁配“靠谱”二字? - 降AI小能手
  • CSS 滚动条样式详解
  • 批量采购家具生产厂家 - 资讯纵览
  • EC11旋转编码器除了调音量还能干嘛?用STC单片机做个多功能旋钮控制器实战
  • 记忆主观观测
  • Vue-Vben-Admin 架构设计:现代中后台系统的可视化仪表盘技术实现
  • ACE-D1.2.1 About the ACE protocol
  • DTD水解反应活化能的计算
  • 批量采购家具哪个团队可靠 - 资讯纵览
  • 2026广州花都注册公司实操攻略:产业优势、避坑干货、本地靠谱代办汇总 - 资讯纵览
  • 全品类存储芯片汇总/DRAM/flash/HBM
  • 2026广州增城注册公司实操详解:创业优势、避坑要点与本地靠谱代办盘点 - 资讯纵览
  • 计算机汉字编码转换过程介绍
  • SQL Server解决代理作业脚本中调用链接服务器失败问题:NT SERVICE\SQLSERVERAGENT. Access to the remote server is denied
  • java复习笔记(3)
  • MapLibre GL JS第34课:使用addProtocol转换要素属性
  • GTA5 村长团队Blender Sollumz 人物制作+权重绘制全流程超详细教程
  • OpenAI GPT-5 Agent Mode 正式发布:最长24小时自主任务,AI编程智能体大战升级
  • TrafficMonitor插件完全指南:打造你的个性化桌面监控中心
  • 基于知识图谱与专家系统的散热材料智能推荐技术
  • 智能体协同下的数字孪生IOC:端流融合与场景编排的工程选型逻辑
  • 避坑指南:在LabVIEW 2023中设计波形发生器UI时,如何优雅管理控件状态与数据流?
  • 如何高效解密网易云音乐NCM文件:ncmdumpGUI完整技术解析与实战指南
  • 26年AI漫剧制作厂商排行榜多家深度格局解析 - 速递信息
  • 量子计算中的测量基优化与误差缓解技术
  • Mac重装系统卡在“最后1秒”?别慌,这可能是APFS格式和安装时间预估的锅
  • 新 E 选品牌源头厂家无溶剂 PU 烤火罩耐刮耐磨吗