Cấu trúc của MCB (Memory Control Block).

Một phần của tài liệu THIẾT KẾ CHƯƠNG TRÌNH CHỐNG VIRUS (Trang 40 - 41)

III. Quản lý vùng nhớ vμ Tổ chức, thi hμnh File d−ới DOS.

3. Cấu trúc của MCB (Memory Control Block).

Nh− chúng ta đã nói ở trên, phần vùng nhớ tạm thời đ−ợc chia thành các khối tạo thành chuỗi, mỗi khối đ−ợc quản lý bằng một cấu trúc đầu khối gọi là MCB.

MCB có kích th−ớc 16 byte, đặt ngay ở đầu vùng nhớ mà nó quản lý, cấu trúc của MCB nh− sau:

Offse t

Siz e

Item Nội dung

+0 1 ID Byte nhận diện loại của MCB +1 2 PSP PSP của MCB. +3 2 Size Kích th−ớc vùng nhớ mà MCB quản lý. +5 0B h Resev ed Dành riêng

+10h Khối vùng nhớ bắt đầu từ đây và chấm dứt ở byte (Size*10h) tính từ đây.

Giá trị của các tr−ờng trong cấu trúc trên có ý nghĩa nh− sau:

- ID: Là byte nhận diện xem MCB này có phải là MCB cuối cùng của chuỗi hay ch−a. nếu ch−a là cuối chuỗi, byte này có giá trị 4Dh, ng−ợc lại sẽ có giá trị 5Ah.

- PSP: Cho biết vùng nhớ do MCB này quản lý hiện còn trống hay đang đ−ợc dùng cho ch−ơng trình nào. Nếu giá trị là 0 thì ch−a có ch−ơng trình nào sử dụng, ng−ợc lại noc là giá trị PSP của ch−ơng trình đã xin cấp phát vùng nhớ này. Căn cứ vào giá trị trong PSP mà DOS biết đ−ợc vùng nhớ nào là của ch−ơng trình vừa chấm dứt để giải phóng vùng nhớ đó.

- Size: Là kích th−ớc theo đoạn của khối vùng nhớ mà MCB quản lý. Để xác định đ−ợc MCB đầu tiên, dùng chức năng 52h của ngắt 21h. Sau khi thực hiện chức năng này, ES:BX trỏ tới khối tham biến của DOS mà tr−ớc đó 2 byte (ở ES:[BX-2]) là giá trị segment của MCB đầu tiên. Các

MCB tiếp theo sẽ đ−ợc tính bằng cách cộng kích th−ớc của khối MCB tr−ớc nó với 1.

Đoạn ch−ơng trình sau minh họa cách duyệt qua các MCB: mov ah,52h

int 21h sub bx,2

mov ax,word ptr es:[bx]

mov es,ax ; es = đoạn của MCB đầu tiên Next:

mov al,byte ptr es:[0] ; Lấy ID của MCB cmp al,5Ah ; Là phần tử cuối?

je OK ; đúng, kết thúc

mov bx,word ptr es:[1] ; bx = PSP mov ax,word ptr es:[3] ; ax = Size call Print_MCB mov dx,ax mov ax,es add ax,dx inc ax mov es,ax jmp Next OK: call Print_MCB int 20h

Một phần của tài liệu THIẾT KẾ CHƯƠNG TRÌNH CHỐNG VIRUS (Trang 40 - 41)

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

(135 trang)