1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản lý vùng nhớ và tổ chức, thi hành file dưới DOS

9 662 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 40,57 KB

Nội dung

III. Quản vùng nhớ Tổ chức, thi hành File dới DOS. 1. Sơ đồ vùng nhớ dới DOS. Vùng RAM nằm trong quyền điều khiển của DOS đợc chia thành hai phần chính: - Phần hệ điều hành: Bắt đầu từ địa chỉ thấp nhất 00000, nghĩa là nó bao gồm cả bảng vector ngắt, hệ điều hành (bao gồm các file hệ thống IO.SYS, MSDOS.SYS, các device driver đợc khai báo trong config.sys phần th- ờng trú của COMMAND.COM. Phần vùng nhớ của hệ điều hành này có kích thớc thay đổi tuỳ theo Version tuỳ theo số lợng các Device Driver. - Phần chơng trình tạm thời: Phần nhớ này còn đợc gọi là vùng nhớ hoạt động, là vùng nhớ ngay sau vùng hệ điều hành đạt đến địa chỉ cao nhất có thể. Vùng nhớ này đ- ợc tổ chức thành các khối tạo thành chuỗi. Các file đợc tải lên thi hành trong vùng nhớ này, cho nên vùng nhớ này chỉ mang tính tạm thời. Sơ đồ sau tóm tắt cấu trúc vùng nhớ: Địa chỉ Mô tả chức năng vùng nhớ 0000:000 0 Bảng vector ngắt: 256 * 4 byte. 0040:000 0 Vùng dữ liệu của ROM BIOS. 0050:000 0 Vùng dữ liệu của DOS. xxxx:000 0 Đoạn mã BIOS ở mức thấp của DOS. xxxx:000 0 Bộ xử ngắt của DOS (Int 21h) xxxx:000 Buffer DOS, các vùng dữ liệu, các bộ ĐKTB đã cài 0 đặt xxxx:000 0 Phần thờng trú của COMMAND.COM (khoảng 4K) gồm các bộ xử ngắt Int 22h, Int 23h, Int 24h. xxxx:000 0 Dữ liệu các chơng trình thờng trú (TSR). xxxx:000 0 Chơng trình ứng dụng hiện đang thực hiện. xxxx:000 0 Phần tạm trú của COMMAND.COM bao gồm bộ thông dịch lệnh, các lệnh nội trú, . Phần này sẽ đ- ợc nạp lại nếu có chơng trình nào ghi lên vùng này. A000:000 0 Vùng nhớ EGA-VGA cho một số Mode màn hình nhất định. B000:000 0 Vùng nhớ cho bộ điều hợp màn hình đơn sắc. B800:000 0 Vùng nhớ màn hình CGA. C800:000 0 Bắt đầu từ đây là vùng nhớ ROM (ngoại trú nội trú) 2. Một số chức năng liên quan đến vùng nhớ của DOS. a. Cấp phát vùng nhớ. Vào: AH = 48h BX = Kích thớc vùng nhớ cần cấp phát (tính theo paragraph). Gọi Int 21h Ra: Nếu CF = 1, thì AX chứa mã lỗi BX là số vùng nhớ tối đa còn lại còn dùng đợc. Ngợc lại, nếu CF = 0 thì việc cấp phát thành công AX chính là segment của vùng nhớDOS đã cấp phát theo yêu cầu. b. Giải phóng vùng nhớ. Chức năng này dùng để yêu cầu DOS giải phóng vùng nhớ đã cấp phát trớc đây mà bây giờ không còn sử dụng đến chúng. Khi chấm dứt một ch- ơng trình do DOS tải thi hành, quyền điều khiển đợc trả lại cho DOS, khi đó chính DOS cũng dùng chức năng này để giải phóng vùng nhớ trớc đây đã cấp phát cho chơng trình. Vào: AH = 49h ES = Segment của vùng nhớ cần giải phóng Ra: Nếu cờ CF = 1 là có lỗi, khi đó AX chứa mã lỗi. c. Điều chỉnh kích thớc vùng nhớ. Vào: AH = 4Ah ES = Segment của khối vùng nhớ cần điều chỉnh BX = Kích thớc yêu cầu điều chỉnh Ra: AX là mã lỗi nếu cờ CF =1, lúc đó BX là khối lớn nhất còn dùng đợc. 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 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 Reseve d Dành riêng +10h Khối vùng nhớ bắt đầu từ đây 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 cha. nếu cha 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 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ì cha 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 4. Quản tổ chức thi hành File dới DOS. a. Phân loại File. File là một cách tổ chức dữ liệu trên đĩa để DOS quản lý. Căn cứ vào mục đích nội dung, File đợc phân ra thành hai loại chính: - File dữ liệu: Dùng để chứa thông tin về một đối tợng. Dữ liệu có thể ở dạng Text hoặc dạng nhị phân. Để truy xuất các thông tin nh vậy cần có các chơng trình thi hành đợc truy xuất đến nó. - File thi hành: Nội dung của nó là tập mã lệnh máy nhằm thi hành một nhiệm vụ nào đó. Khi thi hành, đánh tên chơng trình tại dấu đợi lệnh của DOS, hoặc dùng chức năng 4Bh của Int 21h. File thi hànhđuôi .COM hoặc .EXE b. Cách tổ chức thi hành File khả thi của DOS. Để tổ chức thi hành một File khả thi, DOS tiến hành các bớc sau đây: - DOS tiến hành chọn một segment, địa chỉ segment này thờng là địa chỉ thấp nhất còn dùng đợc. Segment đợc chọn gọi là PSP (Program Segment Prefix), là cơ sở để tải chơng trình vào. - DOS tạo ra bản sao môi trờng của DOS cho chơng trình đợc nạp. - DOS điền vào PSP những nội dung cần thiết nh: tổng số vùng nhớ còn lại, địa chỉ Segment của môi trờng, 2 FCB, tham số dòng lệnh DTA, nội dung hiện thời của các ngắt 22h, 23h, 24h. - Tạo DTA ngầm định tại PSP:80h - Đọc 1Ch byte đầu của file vào để xác định xem file thuộc loại COM/EXE. Dấu hiệu để nhận dạng file .EXE là giá trị của hai byte đầu tiên là 4D5Ah hay 5A4Dh. Tùy theo loại file, tổ chức thi hành file sẽ đợc thực hiện tơng ứng. c. PSP (Program Segment Prefix). Nh chúng ta đã nói ở trên, PSP là cấu trúc do DOS tạo ra trớc khi tải file cần thi hành vào vùng nhớ. Cấu trúc PSP gồm 256 byte (100h), mô tả về cấu trúc này nh sau: Offse t Siz e Item Nội dung +0 2 Int 20h Ngắt chấm dứt chơng trình +2 2 MemTop Segment vùng nhớ kế còn dùng đợc +4 1 Reseved Dành riêng, thờng là 0 +5 5 CALL offset seg Lệnh gọi đến trình điều phối hàm của DOS +0Ah 4 Địa chỉ kết thúc chơng trình (Int 22h) +0Eh 4 Địa chỉ xử CtrlBreak (Int 23h) +12h 4 Địa chỉ xử lỗi nghiêm trọng (Int 24h) +16h 16h Reseved Vùng dành riêng cho DOS +2Ch 2 Địa chỉ đoạn các xâu môi trờng của DOS +2Eh 2E h Reseved Vùng dành riêng cho DOS +55h 7 FCB mở rộng 1 +5Ch 9 FCB 1 +65h 7 FCB mở rộng 2 +6Ch 20 FCB 2 +80h 1 Chiều dài tham số nhập từ dấu nhắc của DOS +81h 127 Các tham số nhập từ dấu nhắc của DOS +80h 128 Vùng DTA mặc định d. Thi hành file .COM Sau khi nhận diện file dạng .COM, file đợc tải ngay vào sau PSP mà không cần định vị lại, do đó kích thớc của nó bị giới hạn trong một phân đoạn 64K. DOS tiến hành thi hành file .COM nh sau: - Tất cả các thanh ghi đoạn CS, DS, SS, ES đều trỏ tới PSP. - SP đợc định vị để trỏ tới cuối segment PSP. - Tất cả mọi vùng nhớ đều đợc phân phối cho chơng trình. - Một giá trị 0 đợc đẩy vào stack, điều này đảm bảo sự kết thúc chắc chắn của chơng trình nếu cối chơng trình là lênh RET thay cho lệnh Int 20h. - Trao quyền điều khiển cho chơng trình (CS:IP) ngay tại đầu vào PSP:100h. e. Thi hành file EXE. Khác với file .COM, file .EXE không bị giới hạn trong một phân đoạn mà có thể mở rộng trong nhiều phân đoạn. Vì vậy, khi đợc nạp vào vùng nhớ, nó phải đợc định vị lại (Reallocate) theo các tham số trong một cấu trúc đầu file đợc gọi là Exe Header. Cấu trúc này nh sau: Offse t Siz e Item Nội dung +0 2 4D5Ah Ký hiệu nhận dạng file .EXE +2 2 PartPag Chiều dài của phần trang cuối +4 2 PageCnt Số trang (512 byte/trang) kể cả Header +6 2 ReloCnt Số mục trong bảng tái định vị +8 2 HdrSize Kích thớc của Header (theo paragraph) +0Ah 2 MinMe m Vùng nhớ tối thiểu cần trên chơng trình (theo paragraph) +0Ch 2 MaxMe m Vùng nhớ tối đa cần trên chơng trình (theo paragraph) +0Eh 2 ReloSS Giá trị để khởi tạo SS +10h 2 ExeSP Giá trị của thanh ghi SP khi bắt đầu. +12h 2 ChkSu m File CheckSum Offse t Siz e Item Nội dung +14h 2 ExeIP Giá trị của thanh ghi IP khi bắt đầu. +16h 2 ReloCS Giá trị để khởi tạo CS +18h 2 TablOff File-Offset của Item đầu tiên +1Ah 2 Overlay Số Overlay (0 cho module cơ sở) Sau khi DOS đã xác định file cần thi hànhfile dạng .EXE, nó sẽ tiến hành tiếp các bớc nh sau: - Căn cứ vào thông tin trên 1Ch byte đầu tiên, xác định module phải tải vào. Module là phần chơng trình thực tế, không tính phần Exe Header, trong thực tế, phần này chính bằng kích thớc của file trừ đi kích thớc của Exe Header. Nh vậy, điểm bắt đầu tải của module là ngay sau Exe Header (kích thớc Header * 10h), modul đợc tải vào địa chỉ START_SEG: 0000, trong đó START_SEG = PSP + 10h. - Đặt con trỏ file đến điểm vào của bảng tái định vị, ứng với mỗi mục (Item) của bảng này, tiến hành các bớc định vị lại nh sau: + Đọc Item này vào 2 từ 16 bit (I_OFF I_SEG) + Xác định phân đoạn RELO_SEG = START_SEG + I_SEG + Đọc giá trị tại RELO_SEG:I_OFF + Định vị lại bằng cách cộng giá trị vừa có đợc với START_SEG + Trả lại giá trị đã đợc định vị lại vào chỗ cũ RELO_SEG:I_OFF - Sau khi tái định vị xong, DOS phân phối vùng nhớ cho chơng trình t- ơng ứng với vùng nhớ tối đa tối thiểu trong Exe Header. - Khởi tạo giá trị các thanh ghi: + DS ES đợc trỏ tới PSP + Khởi tạo Stack nh sau: SS = ReloSS + START_SEG SP = ExeSP + Đầu vào của chơng trình: CS = START_SEG + ReloCS IP = ExeIP - Trao quyền điều khiển cho file. . III. Quản lý vùng nhớ và Tổ chức, thi hành File dới DOS. 1. Sơ đồ vùng nhớ dới DOS. Vùng RAM nằm trong quyền điều khiển của DOS đợc chia thành hai. 20h 4. Quản lý và tổ chức thi hành File dới DOS. a. Phân loại File. File là một cách tổ chức dữ liệu trên đĩa để DOS quản lý. Căn cứ vào mục đích và nội

Ngày đăng: 28/09/2013, 10:20

HÌNH ẢNH LIÊN QUAN

Vùng nhớ EGA-VGA cho một số Mode màn hình nhất định. - Quản lý vùng nhớ và tổ chức, thi hành file dưới DOS
ng nhớ EGA-VGA cho một số Mode màn hình nhất định (Trang 2)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w