操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

如何编写对文件按字节写入的程序

2005-9-26 网友评论 0 条 点击进入论坛

  我写了一个基于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

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 用户名: 密码:
  匿名发表
今日推荐
技术文库(共有 45972 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
移动开发
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail