如何读emmc里的引导程序

番茄系统家园 · 2021-08-30 13:20:28

如何读emmc里的引导程序

1.修改程序

;%;做时把这行注释掉;启用这行就用-生成.com文件用于调试%%%;一共读取10个柱面,共10柱面*2面*18扇区*512字节;把软盘按格式填充start:JMPinit;跳转指令DB0x90;空DBDD用来写单字节DBNotOneOS;厂商名8字节DB用来写双字节DW512;每个扇区大小512字节DW用来写4字节DB1;每个簇的扇区数DW1;Boot占的扇区DB2;有2个FAT表DW224;根目录大小224DW2880;磁盘扇区总数2880DB0xf0;介质描述符磁盘种类必须为0xf0DW9;每个FAT扇区数DW18;每个磁道18个扇区DW2;2个磁头DD0;隐藏扇区数DD2880;同上磁盘大小DB0,0,0x29;0x29扩展引用标记DD0xffffffff;无意义固定这么写DBNotOneOS;磁盘名(卷标)11字节DBFAT12;磁盘格式名8字节RESB18;空18个字节填充0x00init:MOVAX,0MOVSS,AXMOVSP,0x7c00;堆栈空间从0x7c00向前MOVDS,AX;读取磁盘MOVAX,0x0820;把磁盘数据加载到内存0x0820处。0x8000~0x81ff的512字节给启动区用的所以从0x8200开始MOVES,AX;注意ES:BX是指向的地址后面还需要对BX赋值0;初始化磁盘接口MOVCH,0;柱面0MOVDH,0;磁头0MOVCL,2;扇区2readloop:MOVSI,0;记录失败次数retry:MOVAH,0x02;0x02读磁盘MOVAL,1;读1个扇区MOVBX,0MOVDL,0x00;A驱动器INT0x13;BIOS读磁盘功能JNCnext;成功跳转ADDSI,1;失败加一次CMPSI,5;到5次就跳到errorJAEerrorMOVAH,0x00;复位磁盘功能MOVDL,0x00;A驱动器INT0x13;重置磁盘驱动器JMPretry;重试next:MOVAX,ES;内存地址向后移动0x0020ADDAX,0x0020MOVES,AX;通过AX给ES加0x0020ADDCL,1;扇区1CMPCL,18;有没有到18个扇区JBEreadloop;CL18,就跳到readloopMOVCL,1ADDDH,1CMPDH,2JBreadloop;如果DH2则跳到readloopMOVDH,0ADDCH,1CMPCH,CYLSJBreadloop;如果CH

2.编译生成镜像

makeimg

3.在Win7虚拟机中打开A盘装载镜像

相关阅读

  • win7系统停止支持后你还会继续使用win7系统吗?
  • emmc硬盘装linux
  • 如何读emmc里的引导程序
  • 免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/53978.html
    猜你喜欢
    最新应用
    热门应用