EÊ ÂỚỚ ÊỚỚ EÊ ÂỚỚỚ ÊỚỚỚ EÊ | ÂỚỚỚỚ> day

Một phần của tài liệu Giáo trình ngôn ngữ assembly (Trang 98 - 100)

- (AT and later only)

O EÊ ÂỚỚ ÊỚỚ EÊ ÂỚỚỚ ÊỚỚỚ EÊ | ÂỚỚỚỚ> day

OÂỚỚỚỚỚỚỚỚỚỚỚỚỚ> month

OÂỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚ> year-1980 (0-119 valid) Byte đaău tieđn cụa filename mang các ý nghĩa như sau:

Giá trị 0 : directory entry còn trông (chưa dùng đên) Giá trị E5h : directory entry đã bị xóa bỏ

Các giá trị khác : directory entry đang được sử dúng Đôi với thư múc con:

File size luođn baỉng 0 --> kích thước thư múc chư có theơ suy từ FAT.

Entry đaău có name là . (moơt dâu châm) mang thođng tin veă vị trí, ngày giờ táo laơp, cluster baĩt đaău cụa chính thư múc con đó.

Entry thứ hai có name là .. (hai dâu châm) mang thođng tin veă vị trí, ngày giờ táo laơp, cluster baĩt đaău cụa thư múc chứa thư múc con đó. (nêu giá trị cluster baỉng 0 --> thư múc mé là root)

14.6MINH HĨA VEĂ TOƠ CHỨC FAT VAØ THƯ MÚC

starting cluster number ỚỚEƠ

Directory [---v---]

Entry ỚỚ |M Y F I L E T X T|a||tim|dat|08size | Ù---|---EƠ OẴÙỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚEÊ 00 01 02 03 04 05 06 07 |8 09 0a 0b 0c 0d 0e 0f ---v--- 00 |ID||ff||03=>04=>05=>ff||00||00||09=>0a=>0b=>15||00||00||00||00| ---|--- OẴÙỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚỚEÊ ---v--- 10 |00||00||00||00||00||16=>17=>19||f7||1a=>1b=>ff||00||00||00||00| ---|---AÙ--- OÂỚỚỚỚỚỚỚEÊ 14.7LOGICAL SECTOR

Các sector trong moơt volume được MSDOS đánh sô từ 0 trở đi. Các sector với cách đánh sô như vaơy gĩi là logical sector. Veă bạn chât, logical sector và relative sector tương tự nhau. Veă phương dieơn tính toán, relative sector baỉng với logical sector coơng theđm vị trí baĩt đaău cụa volume.

Ta neđn dùng interrupt 25h đeơ đĩc các logical sector. interrupt 26h đeơ ghi các logical sector. Input: AL = drive number (0=A, 1=B, etc.)

DS:BX = Ỵbuffer

CX = sô lượng sector đĩc/ghi (<FFFFh)

CX = FFFFh --> tác vú tređn BIG DOS partitions (>32M) DS:BX = Địa chư cụa transfer packet (10 bytes)

DS:[BX+0] sector baĩt đaău (DWORD)

DS:[BX+4] sô lượng sectors đĩc/ghi (WORD) DS:[BX+6] offset cụa buffer (WORD)

DS:[BX+8] segment cụa buffer (WORD) Output: CF = 1 --> AX = error code

Lưu ý : + Tât cạ các thanh ghi sẽ bị thay đoơi trừ DS, ES, SS, SP

Các interrupt này kêt thúc baỉng leơnh retf, do đó sẽ đeơ lái cờ hieơu trong stack khi kêt thúc.

Logical sector baĩt đaău cụa moơt cluster tính baỉng cođng thức sau : root—sects = (RootSize * 32) / SecSize

first—data = ResSecs + (FatSize * FatCnt) + root—sects logical—sector = first—data + ((cluster—no - 2) * ClusSize)

CHƯƠNG 15 :

Một phần của tài liệu Giáo trình ngôn ngữ assembly (Trang 98 - 100)

Tải bản đầy đủ (PDF)

(114 trang)