Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 8
з курсу „ Системне програмування ”
Тема: Управлiння процесами. Органiзацiя дочiрнiх процесiв. Частина 1.
Виконав:
студент групи КІ-3
Львів – 2004
Мета роботи:
Ознайомитись з принципами управлiння процесами в MS-DOS. Дослiдити механiзм активацiї дочiрнiх процесiв з-пiд управлiння прикладних програм.
Короткі теоретичні відомості
Програми завантажуються в пам‘ять для виконання за допомогою функцiї DOS Exec (Int 21h, функцiя 4Bh), що виконує роль системного завантажувача
Програма, що завантажується функцiєю Exec в пам‘ять, включає такi компоненти:
оточення,
префiкс програмного сегмента,
власне програму.
Для завантаження i виконання дочiрнього процесу програма вищого рiвня повинна використати функцiю DOS Exec - Int 21h, функцiя 4Bh. При цьому стан регiстрiв повинен бути таким:
	AH	=	4Bh;
	AL	=	00h (пiдфункцiя завантаження дочiрньої програми);
	DS:DX	=	адреса рядка iз специфiкацiєю файлу запуску дочiрньої програми;
	ES:BX	=	адреса блоку параметрiв.
Блок параметрiв служить для передачi функцiї Exec необхiдних даних i включає в себе адреси таких об‘єктiв:
оточення (сегментна адреса, одне слово);
залишок командного рядка (повна адреса, два слова);
два блоки управлiння пам‘яттю (файлами) (FCB) (повнi адреси, комiрки по два слова).
Завдання на лабораторну роботу
Створити програму, що запускає дочiрнiй процес та аналiзує результат виконання по його завершеннi. В програмi дочiрнього процесу передбачити повертання коду завершення (“успiшне завершення” / “помилка”) в iнiцiалiзуючу програму.
В якостi основи для створення програми дочiрнього процесу необхiдно використати програму створену в процесi виконання лабораторної роботи № 4.
Вміст .asm-файлів
	Основна програма:
.model small
.stack 64
.data
	parameters	dd fcb1
			dd fcb2
	fcb1		db 37 dup (0)
	fcb2		db 37 dup (0)
	progname	db 'max4.exe', 0
	Err1msg	db 'Child process returned error code!',10,13,'$'
	Err2msg	db 'File not found or not enough memory.',10,13,'$'
.code
main PROC FAR
	mov 	ah, 4ah
	mov 	bx, stack
	add 	bx, 4
	int 	21h		; alloc mem
	mov 	ax, @data
	mov 	ds, ax
	mov 	es, ax
	mov 	ah, 4bh
	mov 	al, 00
	lea 	bx, parameters
	lea 	dx, progname
	int 	21h		; child launch
	jc 	err2		; launch failed?
	mov 	ah, 4Dh
	int 	21h
	cmp	al,0		; check return value of child process
	jne	err1
	mov 	al, 00
	jmp 	quit
err1:
	mov	dx,OFFSET Err1Msg	
	mov	ah,09
	int	21h
	mov	al, 01
	jmp	quit
err2:
	mov	dx,OFFSET Err2Msg	
	mov	ah,09
	int	21h
	mov	al, 02
quit:
	mov	ah, 4ch
	int	21h
main ENDP
end main
Частини програми, що відповідають за код повернення дочірнього процесу (max4.exe):
.DATA
	…
	errcode		db 0
	…
.CODE
start:
	jnc	ok		; error check
	mov	errcode, 1
	jmp	quit
ok:					
…
quit:
	mov	ah,4Ch
	mov	al,errcode	; return value
	int	21h
END start
Результат виконання програми
1 випадок: файл max4.exe відсутній у каталозі програми.
File not found or not enough memory.
2 випадок: max4.exe повертає 0.
Executing max4.exe
3 випадок: max4.exe повертає 1.
Executing max4.exe
Child process returned error code!
Висновок: Виконуючи дану лабораторну роботу, я ознайомився із принципами управлiння процесами в MS-DOS, дослiдив механiзм активацiї дочiрнiх процесiв з-під управління прикладних програм.