Оверлеї. Завантаження дочірньої програми

Страницы работы

Содержание работы

МІНІСТЕОСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

НТУ”ХПІ”

Кафедра ОТП

Лабораторна робота №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.

Опис  програми оверлею:

Похожие материалы

Информация о работе