Lập trình xử lý đĩa và file
LẬP TRÌNH XỬ LÝ ĐĨA&FILE CƠ BẢN VỀ LƯU TRỮ TRÊN ĐĨA TỪ MỘT ỨNG DỤNG HIỂN THỊ SECTOR MỘT ỨNG DỤNG HIỂN THỊ CLUSTER CÁC CHỨC NĂNG VỀ FILE Ở MỨC HỆ THỐNG QUẢN LÝ ĐĨA VÀ THƯ MỤC TRUY XUẤT ĐĨA VỚI INT 13H CỦA ROMBIOS BÀI TẬP GiỚI THIỆU FILE VÀ LẬP TRÌNH XỬ LÝ FILE 09/19/12 LAP TRINH XU LY DIA TU CƠ BẢN VỀ LƯU TRỮ TRÊN ĐĨA TỪ Ngôn ngữ ASM vượt trội ngôn ngữ khác khả xử lý đĩa Ta xem xét việc lưu trữ thông tin đĩa theo mức độ : mức phần cứng/BIOS mức phần mềm/DOS mức phần cứng :lưu trữ thông tin liên quan đến cách liệu lưu trữ cách vật lý đĩa từ? mức phần mềm : việc lưu trữ quản lý tiện ích quản lý File HĐH DOS 09/19/12 LAP TRINH XU LY DIA TU 09/19/12 LAP TRINH XU LY DIA TU 09/19/12 LAP TRINH XU LY DIA TU CÁC ĐẶC TÍNH LUẬN LÝ & VẬT LÝ CỦA ĐĨA TỪ Ở mức vật lý : đĩa tổ chức thành Tracks, Cylinders, Sectors Khả lưu trữ đĩa mô tả thông sô : C (cylinder number) H (Head side) R (sector number) 09/19/12 LAP TRINH XU LY DIA TU 09/19/12 LAP TRINH XU LY DIA TU CÁC KHÁI NIỆM TRACK, CYLINDER, SECTOR Tracks : vòng tròn đồng tâm tạo bề mặt đĩa Cylinder : tập tracks bán kính chồng đĩa Mặt đĩa có track có nhiêu Cylinder Sector : đọan track (cung từ) có khả lưu trữ 512 bytes liệu Các sector đánh số track đĩa tồn nhiều sector số hiệu 09/19/12 LAP TRINH XU LY DIA TU 09/19/12 LAP TRINH XU LY DIA TU Ở mức luận lý : đĩa tổ chức thành Clusters, files mà DOS dùng để cấp phát vùng lưu trữ cho liệu cần lưu trữ Cluster : nhóm gồm 2,4,6 sector kề Đó đơn vị cấp phát vùng lưu trữ cho liệu (file) Các cluster đánh số Nếu liệu cần lưu trữ byte hệ điều hành cấp phát cluster số bytes/cluster hay sector/cluster tùy thuộc vào loại đĩa 09/19/12 LAP TRINH XU LY DIA TU TƯƠNG QUAN GIỮA SECTOR VẬT LÝ VÀ SECTOR LOGIC TRÊN ĐĨA MỀM MẶT ĐĨA TRACK SECTOR SECTOR LOGIC THÔNG TIN 0 0 0 2-5 6-9 1-3 1-4 5-8 9-11 4-9 12-17 Dữ liệu 1-9 18-26 Dữ liệu 09/19/12 LAP TRINH XU LY DIA TU BOOT RECORD FAT Thư mục gốc Thư mục gốc 10 MỞ FILE HÀM 3CH INT 21H AH = 3CH DS:DX địa chuổi ASCII (chuổi tên File kết thúc byte 0) CL = thuộc tính File Nếu thành cơng, AX = thẻ File Nếu CF set có lỗi, mã lỗi chứa AX (lỗi 3,4,5) 09/19/12 LAP TRINH XU LY DIA TU 51 Viết code mở File với thuộc tính đọc, tên File FILE1 Fname DB ‘FILE1’,0 INT 21H FHANDLE DW ? MOV FHANDLE, AX MOV AX,@DATA JC OPEN_ERROR MOV DS,AX ……… MOV AH,3CH MOV CL,1 LEA DX,FNAME 09/19/12 LAP TRINH XU LY DIA TU 52 CHỨC NĂNG MỞ FILE ĐÃ CÓ SẴN HÀM 3Dh INT 21H OPEN FILE AH = 3DH DS:DX = địa chuổi ASCII (chuổi tên File kết thúc byte 0) AL = mã truy cập : mở để đọc : mở để ghi : mở để đọc ghi Thành cơng, AX = Fhandle Có lỗi Mã lỗi chứa AX (2,4,5,12) 09/19/12 LAP TRINH XU LY DIA TU 53 CHỨC NĂNG MỞ FILE ĐÃ CÓ SẴN HÀM 3Dh INT 21H OPEN FILE MOV AH, 3DH MOV AL, MOV DX, OFFSET FILENAME INT 21H JC DISPLAY_ERROR MOV INFILEHANDLE, AX … INFILE DB ‘ D:\FILE1.DOC’, INFILEHANDLE DW ? 09/19/12 LAP TRINH XU LY DIA TU 54 CHỨC NĂNG 3EH ĐÓNG FILE ĐIỀU KIỆN : AH = 3EH BX = FILE HANDLE CẦN ĐÓNG XUẤT : KHÔNG LỖI CF = CÓ LỖI CF = EX : LỖI SỐ : INVALID HANDLE MOV AH, 3EH FILE HANDLE TRONG BX KHÔNG PHẢI LÀ THẺ FILE CỦA FILE ĐÃ MỞ MOV BX, INFILEHANDLE INT 21H JC DISPLAY_ERROR … INFILE DB ‘D:\FIEL1.DOC’, INFILEHANDLE DW ? 09/19/12 LAP TRINH XU LY DIA TU 55 CHỨC NĂNG 3FH ĐỌC FILE ĐỌC SỐ BYTES TỪ FILE LƯU VÀO BỘ NHỚ ĐIỀU KIỆN : AH = 3FH BX = FILE HANDLE , CX = SỐ BYTES CẦN ĐỌC DS:DX : ĐỊA CHỈ BỘ ĐỆM XUẤT : AX = SỐ BYTES ĐỌC ĐƯC, NẾU AX = HAY AX