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

MyOS之Makefile入门

Makefile 入门

在 day02 文件夹中(文件夹需要复制到z_tools同级目录下),执行make.bat 会报错imgout BPB data error.

原因是:JMP entry的未知放错了。

JMP entry 指令直接从程序开头跳转到了 entry 标签。但是,在你的代码中,entry 标签定义在 RESB 18 之后。这看起来没问题,但实际上entry标签的位置并不在BPB数据定义的末尾,导致跳转后程序无法正常执行,edimg工具在检查BPB表时发现了不匹配的数据,从而报错

修改方法:将改行放到 RESB 18 行后

完整代码如下:

; hello-os
; TAB=4ORG     0x7c00; 标准FAT12格式软盘专用的代码DB      0xeb, 0x4e, 0x90DB      "HELLOIPL"DW      512DB      1DW      1DB      2DW      224DW      2880DB      0xf0DW      9DW      18DW      2DD      0DD      2880DB      0,0,0x29DD      0xffffffffDB      "HELLO-OS   "DB      "FAT12   "RESB    18              ; 先空出18字节; ========== 关键修改:将 JMP entry 移动到这里 ==========JMP     entry           ; 移动至此,BPB数据定义完成后才进行跳转; 程序主体
entry:                          ; 入口标签MOV     AX,0MOV     SS,AXMOV     SP,0x7c00MOV     DS,AXMOV     ES,AX
; ... 其余代码保持不变 ...msg:DB      0x0a, 0x0aDB      "hello, world"DB      0x0aDB      0RESB    0x7dfe-$DB      0x55, 0xaa

edimg.exe 这个工具在制作镜像时,会严格按照偏移量去读取BPB数据。将 JMP entry 指令放在BPB数据块(RESB 18)之后,确保了从偏移量 0x03 到 0x3D 的这59个字节全部是正确的、连续的磁盘参数数据。

这样修改后,计算机从 0x7c00 地址开始执行,会先顺序通过这59字节的BPB数据(作为数据,不是代码),然后在第60字节处才执行到 JMP entry 指令,正确跳转到你的主程序,开始打印 "hello, world"。

注:该答案参考deepseek回答

http://www.jsqmd.com/news/873311/

相关文章:

  • 14002开源:黄大年茶思屋 难题揭榜 第140期 非均匀雷达阵列的高精度高效率计算和排布算法 标准化解题写作框架黄大年茶思屋 难题揭榜 第140期
  • 银行业务学习:深入理解直贴(贴现)、转贴现、再贴现
  • 华硕笔记本性能控制终极指南:用G-Helper告别臃肿,重获系统掌控权
  • G-Helper终极指南:华硕笔记本显示优化与色彩管理深度解析
  • Python抖音机器人实战指南:3步实现智能颜值检测与自动化运营
  • 14003开源:黄大年茶思屋 难题揭榜 第140期 异构大规模资源协同分配多目标优化问题 标准化解题写作框架
  • 基于SpringBoot的旅游网站的设计与实现(源码+论文)
  • WeChatExporter深度解析:永久保存微信聊天记录的完整技术方案
  • 创建MQTT连接时如何设置参数?
  • 告别handshake timeout:手把手教你配置NVM镜像源,并附上Node.js各版本国内高速下载地址大全
  • 2026 年免费投票制作平台哪个最好用 丨平台深度测评报告 - 资讯纵览
  • 避坑指南:用MounRiver Studio一键烧录沁恒CH32V208时,WCH-LinkRV连接失败怎么办?
  • 工业计算机是什么?哪个好用?
  • 14004开源:黄大年茶思屋 难题揭榜 第140期 超大规模网络数据面编码建模 标准化解题写作框架
  • 高端设计制造业SD-WAN跨域组网深度解析:头部无人机企业如何实现异地数据高效安全回传和协作
  • 国产化项目实战:SpringBoot 2.6.2 + MyBatis-Plus 3.5.2 连接人大金仓Kingbase 8.6.0保姆级教程
  • Envoy支持Go Wasm插件,就真的更安全了吗?
  • 中国AI调用量是美国的2倍,但真正重要的不是这个数字
  • 2026年绵阳装修流程权威解读:透明装修开创者教你全程把控装修质量 - 优家闲谈
  • C++ Lambda 捕获陷阱:`[]` 与显式值捕获的线程安全之争
  • 视频号视频怎么保存到相册?2026年视频号视频保存到相册的完整方法 - 科技大爆炸
  • 城市地下管网可视化监控管理系统方案
  • USD转GLTF 技术教程文档(论坛纯净版)
  • RFID固定资产管理系统供应商全景解析:技术实力与行业应用深度评测
  • (课堂笔记)银行客户画像七大类指标(人行征信报告)
  • 如何高效实现Navicat密码安全恢复:开源解密工具技术架构解析
  • 2026年免费投票制作平台哪个最好用丨平台深度测评报告 - 资讯纵览
  • 14005开源:黄大年茶思屋 难题揭榜 第140期 低复杂度FEC软解码算法 标准化解题写作框架
  • taotoken的按token计费模式如何帮助个人开发者控制实验成本
  • 终极BepInEx指南:5分钟掌握游戏模组开发完整流程