如何实现多分区引导?
我试图直接跳转到对应分区的系统引导代码,但是都死机了(FAT32分区),使用TD跟踪到对应分区的系统引导代码: DL=80 AH =08 INT13 中断后,屏幕一闪进入就死机了,很奇怪为什么会在这个获取硬盘参数的中断死机.下面是我的测试代码相关代码:
; 扩展磁盘服务所使用的地址包
;====================================================================
DAP_PACKET_SIZE DB 10H ; 包的大小为16字节
DAP_RESERVED1 DB 00H ; 保留字节
DAP_READ_SECTORS DB 01H ; 要处理的扇区数(1 - 127 )
DAP_RESERVED2 DB 00H ; 保留字节
DAP_BUFFER_OFF DW 7C00H ; 缓冲区偏移
DAP_BUFFER_SEG DW 0000H ; 缓冲区段地址
DAP_SECTOR_LOW DD 0000H ; 起始扇区号的低32位
DAP_SECTOR_HIGH DD 0000H ; 起始扇区号的高32位
....................
LEA SI,DAP_PACKET_SIZE
MOV DL,80h
MOV AH,42H
INT 13H
XOR AX,AX
MOV ES,AX
MOV DI,7C00H
ADD DI,446
; ADD DI,32
MOV AX,ES:[DI+8+2]
MOV [DAP_SECTOR_LOW+2],AX
MOV AX,ES:[DI+8]
MOV [DAP_SECTOR_LOW],AX
LEA SI,DAP_PACKET_SIZE
MOV DL,80h
MOV AH,42H
INT 13H
MOV DL,80H
MOV AL,8
INT 13H
PUSHF
MOV AX,0
PUSH AX
MOV AX,7C00H
PUSH AX
MOV DL,80H
MOV DH,2
IRET
程序编译为DOS下的EXE
问题:可不可以不改变引导标志 去引导一个分区,那些可以引导任意分区(包括逻辑分区)的程序的原理是什么呢?
希望能详细的解答......
[解决办法]
完全可以,甚至引导标记都可以由我们来定义,只有我们控制了引导扇区,我们就控制了一切引导权……
[解决办法]
可以改变引导标志,建议先研究一下win98的引导代码,研究透了,就可以自己写了.
[解决办法]
设活动分区,构造分区表项,找bootsector