郁闷。求教引导程序,大于1024柱面,扩展int 13h
MBR的引导程序只能引导1023柱面以内,但是通过扩展int 13h调用可以突破这个限制。小弟研究了半天都不成功,大都按照调用标准来做的,还有一些疑问,各位大虾请帮帮忙,谢谢。
几个疑问:
1.启动大于1023柱面的分区,是否是通过扩展int 13h将扇区读到0:7c00h处,然后jump到7c00h的地方继续执行就能引导。(假设那个分区可引导)
比如说有一个DOS的Fat32分区在1023柱面以外,是否通过以上步骤就能引导?我看到过有引导程序可以引完成,但不知道是不是我上面所说的步骤。
2.大概的代码如下,其中有错误吗?
ds=0
mov bx,7C00h
push si
mov ax,bx
xchg si,bx
mov si,offset PacketSize+600h
mov di,si
mov word ptr [si],0010h
mov word ptr [si+02h],0001h
mov word ptr [si+04h],ax
mov word ptr [si+06h],ds
mov ax,word ptr [bx+08h]
mov word ptr [si+08h],ax
mov ax,word ptr [bx+0AH]
mov word ptr [si+0AH],ax
mov word ptr [si+0ch],0000h
mov word ptr [si+0eh],0000h
mov dl,80h
mov ax,4200h
;mov bx,55aah
int 13h
pop si ;这里Si是不是要指向可引导的分区
jnc Goboot;调到7c00h除继续执行
;DAP
PacketSize db 10h ;1B
Reserved db 00h ;1B
BlockCount db 01h,00h ;2B
BufferAddr db 00h,00h,00h,7Ch ;4B
BlockNum db 00h,00h,00h,00h,00h,00h,00h,00h ;8b
3. int 19h怎么用?