小镇的夕阳|修改硬盘MBR代码,用1024字节实现一个操作系统启动管理器
这是写于2007年的日志 , 现发布出来 , 供有需要的参考 。
【小镇的夕阳|修改硬盘MBR代码,用1024字节实现一个操作系统启动管理器】目的:通过修改MBR代码 , 实现在电脑开机的时候 , 选择不同硬盘分区上的操作系统 。
实现方法:需要一个安装程序 , 该安装程序实现提取硬盘分区信息 , 并将操作系统信息写入到启动代码里 , 然后将修改后的代码写入到硬盘的0磁头0磁道2到3扇区内 。
对MBR的修改(下面代码不包含对MBR的修改):探测到Ctrl或alt或shit按下时 , 将自定义选择与启动代码从0磁头0磁道2到3扇区里读出 , 加载到内存0000:7C00处执行 。
以下为自定义的启动代码(0磁头0磁道2到3扇区):加载之后 , 将自身从0000:7C00处搬到0000:0600处运行 , 根据选择的启动分区的参数 , 将启动分区的第一扇区读取到0000:7C00处 , 然后跳转到0000:7C00处启动相应的操作系统 。
如果是linux操作系统的话 , 需要将linux操作系统的启动管理器安装到某个分区上 , 而不能安装到MBR(该启动管理器安装后 , 会破坏原始的MBR , 会导致linux启动不了) 。
[780]启动条数(1-N)(通过安装程序 , 将启动分区信息与提示信息写入到这里 。 )
[781]当前显示行
[782]当前所选择的行
[783]字串显示颜色
[900]欢迎信息起始地址
[940]操作说明起始地址
[990]读盘错误提示起始地址
:7C00 FC CLD
:7C01 BE007C MOV SI,7C00
:7C04 BF0006 MOV DI,0600
:7C07 B90004 MOV CX,0400
:7C0A F3 REPZ
:7C0B A4 MOVSB (搬动自身到0000:0600处)
:7C0C E9008A JMP 060F(跳转到新地址运行)
:060F B81200 MOV AX,0012
:0612 CD10 INT 10(将显示更改到采色模式)
:0614 BE0009 MOV SI,0900
:0617 B002 MOV AL,02
:0619 A28307 MOV [0783],AL
:061C E8F700 CALL 0716
:061F B001 MOV AL,01
:0621 A28107 MOV [0781],AL
:0624 A28207 MOV [0782],AL
:0627 E8A600 CALL 06D0
:062A BA0119 MOV DX,1901
:062D B402 MOV AH,02
:062F B700 MOV BH,00
:0631 CD10 INT 10
:0633 BE4009 MOV SI,0940
:0636 B00E MOV AL,0E
:0638 A28307 MOV [0783],AL
:063B E8D800 CALL 0716
:063E B400 MOV AH,00
:0640 CD16 INT 16
:0642 80FC48 CMP AH,48#up
:0645 740C JZ 0653
:0647 80FC50 CMP AH,50#down
:064A 741D JZ 0669
:064C 80FC1C CMP AH,1C#enter
:064F 7431 JZ 0682
:0651 EBEB JMP 063E
:0653 A08207 MOV AL,[0782]
:0656 3C01 CMP AL,01
:0658 7404 JZ 065E
:065A FEC8 DEC AL
:065C EB03 JMP 0661
:065E A08007 MOV AL,[0780]
:0661 A28207 MOV [0782],AL
:0664 E86900 CALL 06D0
:0667 EBD5 JMP 063E
:0669 A08207 MOV AL,[0782]
:066C 8A1E8007 MOV BL,[0780]
:0670 38D8 CMP AL,BL
:0672 7404 JZ 0678
:0674 FEC0 INC AL
:0676 EB02 JMP 067A
:0678 B001 MOV AL,01
:067A A28207 MOV [0782],AL
:067D E85000 CALL 06D0
:0680 EBBC JMP 063E
:0682 A08207 MOV AL,[0782]
:0685 FEC8 DEC AL
:0687 B110 MOV CL,10
:0689 F6E1 MUL CL
:068B 05000A ADD AX,0A00
:068E 89C6 MOV SI,AX
:0690 B442 MOV AH,42
:0692 B280 MOV DL,80
:0694 CD13 INT 13
:0696 80FC00 CMP AH,00
:0699 7402 JZ 069D
:069B 7503 JNZ 06A0
:069D E96075 JMP 7C00
:06A0 BA0114 MOV DX,1401
:06A3 B402 MOV AH,02
- 医院|最温暖的重逢!“医患同看落日余晖”主角再次一起看夕阳
- 澎湃新闻|时隔半年87岁武汉老人与上海援鄂医生重逢,又看了一次夕阳
- 西开小镇|汉云谷数据交易中心、数字科技银行、再制造中心落户三亚崖州湾
- 艾希大人|欧阳娜娜夕阳下露温柔侧颜 穿印花衬衫搭马甲变文艺少女
- 法治日报|美疾控中心被迫修改新冠肺炎检测指南
- 【】对标国际残奥委会新标志 北京冬残奥会会徽修改
- 环球网|北京冬残奥会会徽修改!为啥改,改了啥?
- 北京冬残奥会会徽修改!为啥改,改了啥?
- 小镇的夕阳|除了中美之外华为还有哪些供应商?欧洲、日本,台湾都在这里
- 奔蓝|玻利维亚乌尤尼小镇旅游攻略:世界上最大的盐沼