一个非常简单的问题!

swaz23 2009-05-09 04:39:54
看自己动手写操作系统这本书书。
在软盘中读loader.bin的时候判断是否已经读完是这样写
cmp ax,0xFFF
jz ...

而前面又写道:FAT项的值代表的是文件下一个簇号,但如果值大于或者等于0xFF8,则表示当前簇已经是本文件的最后一个簇.

既然大于或者等于0xFF8就表示是最后一个簇,那么为什么只要cmp ax,0xFFF就可以了呢?
...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
swaz23 2009-05-20
  • 打赏
  • 举报
回复
哎,好复杂也
garymao8888 2009-05-15
  • 打赏
  • 举报
回复
学习之
goodider 2009-05-15
  • 打赏
  • 举报
回复
这是规定吧。
swaz23 2009-05-14
  • 打赏
  • 举报
回复
up up
swaz23 2009-05-12
  • 打赏
  • 举报
回复
我这里使用的是FAT12
文件最后一个簇是 0xFF8 - 0xFFF

为什么只要 cmp ax,0xFFF 呢
而不是cmp ax,0xFF8
或者cmp ax,0xFF9之类的。。
我还是不太明白,不好意思
goodider 2009-05-09
  • 打赏
  • 举报
回复
看最后那个表你就明白了。
goodider 2009-05-09
  • 打赏
  • 举报
回复
文件分配表
一个分区分成同等大小的簇,也就是连续空间的小块。簇的大小随着FAT文件系统的类型以及分区大小而不同,典型的簇大小介于2KB到32KB之间。每个文件根据它的大小可能占有一个或者多个簇;这样,一个文件就由这些这些(称为单链表)簇链所表示。然而,这些链并不一定一个接着一个在磁盘上存储,它们经常是在整个数据区域零散的储存。

文件分配表(FAT)是映射到分区每个簇的条目列表。每个条目记录下面五种信息中的一种。

链中下一个簇的地址
一个特殊的文件结束符(EOF)符号指示链的结束
一个特殊的符号标示坏簇
一个特殊的符号标示保留簇
0来表示空闲簇
每个版本的FAT文件系统使用不同大小的FAT条目。这个大小已经由名字表示出来,例如FAT16文件系统的每个条目使用16位表示,32位文件系统使用32位表示。这个不同意味着FAT32系统的文件分配表能比FAT16映射更多的簇,它也允许FAT32有更大的分区大小。这也使得FAT32比FAT16更能有效地利用磁盘空间,因为每个驱动器能够寻址更小的簇,这也就意味着更少的空间浪费。

FAT条目值:

FAT12 FAT16 FAT32 描述
0x000 0x0000 0x?0000000 空闲簇
0x001 0x0001 0x?0000001 保留簇
0x002 - 0xFEF 0x0002 - 0xFFEF 0x?0000002 - 0x?FFFFFEF 被占用的簇;指向下一个簇
0xFF0 - 0xFF6 0xFFF0 - 0xFFF6 0x?FFFFFF0 - 0x?FFFFFF6 保留值
0xFF7 0xFFF7 0x?FFFFFF7 坏簇
0xFF8 - 0xFFF 0xFFF8 - 0xFFFF 0x?FFFFFF8 - 0x?FFFFFFF 文件最后一个簇

注意FAT32只使用32位中的28位。高4位通常是0但它们是保留位,不要更改它们。在上面的表中它们用问号表示。
swaz23 2009-05-09
  • 打赏
  • 举报
回复
jz LOADED

LOADED:
;显示已经读完。


这里和jz没有关系的
goodider 2009-05-09
  • 打赏
  • 举报
回复
jz后面是什么?

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧