30天自制操作系统——第十八天运行应用程序

读取文件内容

我们在运行应用程序之前,先来实现读取文件内容的功能吧。

在Windows的命令行窗口中也有这样的功能,当我们输入“type 文件名”时,就会显示文件的内容。

在这里插入图片描述

定义一个文件信息结构:

struct FILEINFO{
   
	unsigned char name[8],ext[3],type;
	char reserve[10];
	unsigned short time,date,clustno;
	unsigned int size;
}

其中clustno变量,代表文件从哪个扇区号开始存放。

我们可以根据下面的公式,根据扇区号计算出文件在磁盘映像中的地址:
磁 盘 映 像 中 的 地 址 = c l u s t n o ∗ 512 + 0 x 003 e 00 磁盘映像中的地址 = clustno*512 +0x003e00 =clustno512+0x003e00

这里有的同学会好奇,最后为什么是加上0x003e00呢?

这个放在后面说明,我们先用这个公式把文件中的内容读取出来。

bootpack.c节选:

/* 判断是否是type命令 */
if (cmdline[0] == 't' && cmdline[1] == 'y' && cmdline[2] == 'p' &&  cmdline[3] == 'e' && cmdline[4] == ' ')	
	/* s[0~10]用空格填充,用于存放文件名 */
    for (y = 0; y < 11; y++) {
   
	s[y] = ' ';
	}
	y = 0;
     /* 读取cmdline[5~] 复制到 s[0~] */
	for (x = 5; y < 11 && cmdline[x] != 0; x++) {
   
        /* 遇到“.”接下来就是扩展名 */
		if (cmdline[x] == '.' && y <= 8) {
   
			y = 8;
		} else 
  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值