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

《操作系统真相还原》——加载器

显存

将上一章的中断输出,变为显存输出
在这里插入图片描述

加载器

在这里插入图片描述
使用mbr引导程序从磁盘中加载loader程序。

MBR

%include "boot.inc"
SECTION MBR vstart=0x7c00         mov ax,cs      mov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00mov ax,0xb800mov gs,ax;clear screenmov     ax, 0x600mov     bx, 0x700mov     cx, 0          mov     dx, 0x184f	  int     0x10            ; int 0x10mov eax, LOADER_START_SECTIONmov cx,1mov bx, LOADER_BASE_ADDR
call rd_disk_m_16 ; read data from diskjmp LOADER_BASE_ADDR
rd_disk_m_16:mov esi, eaxmov di, cxmov dx, 0x1f2mov al, clout dx, almov eax, esimov dx, 0x1f3out dx, almov cl, 8shr eax, clmov dx, 0x1f4out dx,alshr eax, clmov dx, 0x1f5out dx, alshr eax, cland al, 0x0for al, 0xe0mov dx, 0x1f6out dx, almov al, 0x20mov dx, 0x1f7out dx, al.not_ready:nopin al, dxand al, 0x88cmp al, 0x08jnz .not_readymov ax, dimov dx, 256mul dxmov cx, axmov dx, 0x1f0
.go_on_read:in ax, dxmov [bx], axadd bx, 2loop .go_on_readret	 times 510-($-$$) db 0db 0x55,0xaa

Loader

%include "boot.inc"
SECTION Loader vstart=LOADER_BASE_ADDR        mov byte [gs:0x00],'2'mov byte [gs:0x01],0xA4 mov byte [gs:0x02],' 'mov byte [gs:0x03],0xA4mov byte [gs:0x04],'M'mov byte [gs:0x05],0xA4mov byte [gs:0x06],'B'mov byte [gs:0x07],0xA4mov byte [gs:0x08],'R'mov byte [gs:0x09],0xA4 jmp $
http://www.dtcms.com/a/223663.html

相关文章:

  • 二维平面点集相似问题思考及优化
  • 《java创世手记》---java基础篇(下)
  • python37天打卡
  • 智慧工厂整体解决方案
  • win32相关(创建线程)
  • 【速写】PPOTrainer样例与错误思考(少量DAPO)
  • VMware使用时出现的问题,此文章会不断更新分享使用过程中会出现的问题
  • 软件评测机构如何保障质量?检测资质、技术实力缺一不可
  • 在CentOS7上使用tree查看目录树
  • 网络编程4-epoll
  • CloudCompare-源码分析-处理滚轮事件
  • 【软件】navicat 官方免费版
  • type system_app, domain, coredomain; 和 typeattribute system_app coredomain; 区别
  • GraalVM加持下的Quarkus极速启动
  • Day40打卡 @浙大疏锦行
  • CesiumInstancedMesh 实例
  • 数据库主键与索引详解
  • Nature:多模态大模型LLMs如何驱动多组学与生命科学研究新范式?
  • Hash 的工程优势: port range 匹配
  • embbeding 视频截图
  • 循序渐进PersistentVolumes与PersistentVolumeClaim
  • AI感知与行动:考拉悠然发布空间智能世界模型,让AI走进物理世界
  • 如何解决MySQL Workbench中的错误Error Code: 1175
  • ToolsSet之:十六进制及二进制编辑运算工具
  • SFINAE(替换并不是错误)机制详解详解
  • 【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
  • C++ 之多线程和互斥锁原理和使用详解
  • TestHubo V1.1.0版本发布,新增用例评审功能,确保测试用例质量,提升测试用例覆盖率
  • shell管道笔记
  • 统计C盘各种扩展名文件大小总和及数量的PowerShell脚本