首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

怎么实现多分区引导

2012-03-15 
如何实现多分区引导?我试图直接跳转到对应分区的系统引导代码,但是都死机了(FAT32分区),使用TD跟踪到对应

如何实现多分区引导?
我试图直接跳转到对应分区的系统引导代码,但是都死机了(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

热点排行