编写一个对文件按字节写入的程序floppyWrite.exe

王朝vc·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

我写了一个基于x86的boot。想通过软盘启动。但是没有软盘,所以就安装了一个Vitual PC,然后虚拟了一个软盘,当然,这个软盘就是一个文件。我猜这个文件的第一个字节就是对应于实际的软盘的0面0道1扇。我想把可执行文件按照字节直接写到这个文件中去。结果证明,我得猜想是正确的。我得boot能够正常工作。

把关键代码写出来:

说明:BootSctr.img是启动程序的镜像。

fl.vfd是虚拟软盘的文件

void CFloppyWriterDlg::OnButton1()

{

HANDLE hFile=CreateFile("BootSctr.img",GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

BYTE bt[512];

memset(bt,0,512);

DWORD dwRead;

ReadFile(hFile,bt,512,&dwRead,NULL);

CloseHandle(hFile);

//MessageBox(bt,"haha",0);

HANDLE rFile=CreateFile("fl.vfd",GENERIC_WRITE | GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

WriteFile(rFile,bt,512,&dwRead,NULL);

CloseHandle(rFile);

}

顺便把boot的代码贴出来

org 07c00h

mov ax,cs

mov ds,ax

mov es,ax

call DispStr

jmp $

DispStr:

mov ax,Bootmessage

mov bp,ax

mov cx,16

mov ax,01301h

mov bx,000ch

mov dl,0

int 10h

ret

Bootmessage : db "Hello, OS world!"

times 510-($-$$) db 0

dw 0xaa55

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航