当前位置: 代码迷 >> 汇编语言 >> 怎么实现多分区引导
  详细解决方案

怎么实现多分区引导

热度:625   发布时间:2013-02-26 00:00:00.0
如何实现多分区引导?
我试图直接跳转到对应分区的系统引导代码,但是都死机了(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
  相关解决方案