printf ("%+.2d ",p_psp->JFT_ptr[i]);
cout << endl << endl;
}
Результати роботи програми: в процесі роботи програма поширив свою таблицю відкритих файлів у префіксі програмного сегменту у системну таблицю файлів за рахунок чого вона отримала можливість працювати з 50 відкритими файлами одночасно. В результаті роботи програми було утворено 50 файлів з текстом “written”, та була виведена наступна інформація на екран:
Old JFT:
+07 +01 +01 +00 +02 +17 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01
JFT after resizing:
+07 +01 +01 +00 +02 +17 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
JFT after added new file:
+07 +01 +01 +00 +02 +17 +12 +13 +14 +15 +18 +19 +20 +21 +22 +23
+24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39
+40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55
+56 +57 +58 +59 +60 +61 +62 +63 -01 -01 -01 -01
JFT closed new file:
+07 +01 +01 +00 +02 +17 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
-01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01 -01
Висновок: в ході роботи ознайомилися с системними керуючими блоками ДОС та одержали практичні навички по роботі з ними.
Лабораторна робота № 6
«Оверлейні програми»
Мета роботи: Оволодіти механізмом завантаження та передачі управління оверлеїв. Придбати практичні навички в розрбці програм, що реалізують цей механізм.
Індивідуальне завдання: Розробити програму котра б виконувала завантаження оверлейної частини управління.
Опис програми: Пргограма виконує оверлійне заввантаження файла шлях до якого вказується в тексті програмі і зберегається в відповідній змінній. Виділення пам’яті під оверлейну частину програми відбувається за допомогою функції DOS 48h, звільнення виділеної пам’яті за допомогою функції DOS 49h, завантаження оверлейної частини в пам’ять за допомогою функції DOS 4B03h. На всюму шляху виконання програми відбуваються контроль за правильностью виконання функцій і в разі чого програма аварійно закінцеє своє виконання.
Текст програми:
.286
title Оверлеи
dosseg
model small
kol_para equ 100h
sts_size equ 100h
sts_para = sts_size/16
.stack sts_size
.data
path_1 db 'over#1.exe',0
path_2 db 'over#2.exe',0
blk_parm dd ?
error db 'Ошибка',10,13,'$'
ovr_para dw ?
code_seg dw ?
adr_ovr label dword
ovr_offs dw ?
ovr_seg dw ?
k dw 1
text db 10,13,' ( Нажмите любую клавишу )',10,13,'$'
.code
nach:
mov ax,dgroup
mov ds,ax
mov code_seg,cs
mov ax,es
mov bx,ss
add bx,sts_para
sub bx,ax
mov ah,4ah
int 21h
jc err_msg
m1:
mov ah,48h
mov bx,kol_para
int 21h
jc err_msg
mov ovr_para,ax
mov ovr_seg,ax
mov word ptr blk_parm,ax
mov word ptr blk_parm+2,ax
mov ax,seg blk_parm
mov es,ax
mov bx,offset blk_parm
cmp k,1
ja m2
lea dx,path_1
jmp m3
m2:
lea dx,path_2
m3:
mov ah,4bh
mov al,3
int 21h
jc err_msg
call adr_ovr
mov bx,kol_para
mov es,ovr_para
mov ah,49h
int 21h
cmp k,2
je quit
mov k,2
jmp m1
err_msg:
mov ah,09h
lea dx,error
int 21h
quit:
mov ah,09h
lea dx,text
int 21h
mov ah,08h
int 21h
mov ah,4ch
int 21h
end nach
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.