МІНІСТЕОСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НТУ”ХПІ”
Кафедра ОТП
Лабораторна робота №5
з курсу “Системне програмне забезпечення”
на тему: “Оверлеї. Завантаження дочірньої програми.”
Виконав:
Студент групи АП – 30б
Попов О.С.
Перевірив:
Межерицький С. Г.
Харків 2002.
Тема: Оверлеї. Завантаження дочірньої програми.
Опис дочірньої програми.
Тестовий варіант програми складається з одного модуля. У ньому задіяні функції MS-DOS, що підтримують механізм завантаження дочірніх програм. У тексті програми зазначені зведення, зв'язані з користуванням у якості дочірньої конкретної програми command.com. Передбачається, що в поточному директорії вже утримується потрібний файл. Виникнення помилки при виконанні тієї чи іншої функції MS-DOS супроводжується в програмі видачею одного і того ж повідомлення. Локалізувати місце появи помилки в даному випадку можна за допомогою відладчика. У даній програмі не передбачена видача на екран конкретних чисельних значень. Щоб їх одержати, треба використати відладчик. У програмі до використання функції 4ah і після передбачено роботу із сукупністю блоків MCB. До моменту виклику функції 4bh досить мати необхідний мінімум зведень, потрібних конкретній дочірній програмі.
Текст програми, який був змінен за індивідуальним завданням.
; Эта программа загружает в качестве дочерней программи - command.com
;==========================================================
.286
title Загрузка и выполнение дочерней программы
;----------------------------------------
sts segment stack 'stack'
dw 128 dup (?)
sts ends
;----------------------------------------
data segment
env_doch db 0
db 0
path db 'command.com',0 ; Обязательно надо
; указывать расширение
; в имени файла
cmd_line db 0 ; Запускаем дочернюю
; программу без укезания
; параметров в командной
; строке
Результати програми Doch.exe.
Керування передано дочірньому процесу
... з помилкою.
(Натисніть будь яку клавішу... )
А тепер текст програми, який написан на мові С++ з використанням функції Execl, яка завантажує нашу дочірню програму Doch.exe.
#include <iostream.h>
#include <stdio.h>
#include <process.h>
int main(int argc, char *argv[])
{ int loop;
printf("%s running...\n\n", argv[0]);
if (argc == 1)
{ printf("%s calling itself again...\n", argv[0]);
execl("D:\\Hakers\\Max\\Spo\\Suck\\Doch.exe", NULL);
perror("EXEC:");
exit(1);
}
printf("%s called with arguments:\n", argv[0]);
for (loop = 1; loop <= argc; loop++)
puts(argv[loop]);
return 0;
}
Результати виконання моєї програми:
D:\PROGRA~1\BORLANDC\ADMIN\EXECL.EXE running...
D:\PROGRA~1\BORLANDC\ADMIN\EXECL.EXE calling itself again...
Керування передано дочірньому процесу
... з помилкою.
(Натисніть будь яку клавішу )
Отже я впевнився, що моя програма передає керування дочірньому процесу за допомогою функції Execl.
Опис програми оверлею:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.