当前位置: 首页 > 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 $

相关文章:

  • 二维平面点集相似问题思考及优化
  • 《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 视频截图
  • 交易类网站做支付宝功能/免费b站推广软件
  • 本地域名服务器/菏泽seo
  • 免费企业建网站/2000元代理微信朋友圈广告
  • 电商网站怎么做推广/dw网站制作
  • 淄博网站制作设计/株洲网站设计
  • 网站备案要先怎么做/小网站广告投放