显示或编辑从软盘读取的数据

时间:2013-05-01 20:25:10

标签: assembly

嗨伙计们有问题,希望你帮我解决这个问题。我有一个关于为我的操作系统制作一个简单的胖系统的功课。我最后有我的代码。我正在我的floopy_0上写一些字符串,我正在读它但是怎么能编辑或制作它呢?我不知道。 ı必读后才能读取我的软盘中的脂肪系统。因此,我必须在floopy上访问我的readed fat文件,或者在屏幕上进行比较或显示。 这个怎么运作: 在表标签ı有我的cripted数据和前7个字节是我的程序名称,  8是它的种类 - 可以是0或1(asm或txt) 9-10(clinder数量) 11-12(扇区号)  13(头号) 和14-15是大小(它有多少扇区)。例如:

table db "apple  0001002", 0Dh,0Ah 
  db "orange 0010102", 0Dh,0Ah 
  db "clean  0020502", 0Dh,0Ah 
  db "story  0001502", 0 

这就是我在我的clinder 1部门1和头部0(我的脂肪在哪里)写的内容。我必须从readed文件中读取clinder扇区和头号,以读取在我的内核中输入的程序 这是我的问题:  “怎么可能用它来显示在screan上,以及可以做些什么来选择程序呢? 例如:当老师在我的内核中写“apple”时。它必须启动苹果计划。 ı有程序和ı可以运行它,但我不知道该怎么做后ı读我的脂肪,并在我的程序列表中比较“苹果”。如果它在我的列表中,它可以运行它,但如何检查它在我的列表中???

最大的交易是我必须从我的FLOOPY读取我的胖子我必须检查名字教师我是否已经阅读了FATFİLE?请帮助我怎么做?

1 个答案:

答案 0 :(得分:0)

编辑文件是将内容读入内存,在内存中更改内容并将其写回磁盘。

例如,在收到来自其中一个用户应用程序的openFile系统调用后,您加载该文件,记录它正被应用程序使用(因此没有其他应用程序可以同时使用它) ,创建一个文件信息块,其中包含某些资源标识符(例如文件路径)等数据,是否为读取写入追加打开,一个文件指针,保存当前要在文件中访问的内存地址(例如,最初为0,并通过读/写操作向上增长),文件大小和开头的地址内存中的文件。此外,指示内容是否已被修改的标志可能是有用的。完成后,将文件信息数据结构的地址返回给用户应用程序。

然后可以调用应用程序,将指针与其他必要参数readFile一起传回,以便从文件writeFile读取给定数量的连续字节,以写入给定的字节数从缓冲区到文件,seekFile文件指针设置为文件中的给定偏移量(文件缓冲区中的* N * th字节,即文件的基址)在内存中+ N )和closeFile单独使用句柄(信息块的地址)将内存中的更改写回磁盘并释放文件,以便其他进程可以使用它

当然有比这更复杂的方法,但这个简单的方法适用于小型系统。


显示数据是另一回事,是另一个模块的责任(实际上甚至不是单个模块,而是其中一些模块)。在这里,事物围绕80x25字符屏幕旋转,从0xB8000(0B800h:0000)开始连续存储区域,每个字符有两个字节:第一个用于ASCII字符代码本身,第二个用于元属性,如背景颜色,前景颜色,闪烁。字符颜色用4位指定,最高位是'light-flag',其余位分别用于RGB(例如1100b或0Ch是浅红色)。上半字节控制背景颜色,但最高位,而不是'light-flag',是闪烁标志,对于BG,你只能被限制为8颜色。

请记住,您作为内核不是显示文件数据的人。决定如何处理从文件中读取的数据不是您的责任。 用户应用程序可能会调用您的writeLine系统调用来显示任何字符串 - 这可能是它刚刚要求您提供的文件数据。


稍微偏离主题,但属于上一段是用户输入命令的 shell (或点击其中的窗口和按钮)只是一个利用操作的常规用户应用程序系统功能根据用户要求。