Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт по Лаб. №1.doc
Скачиваний:
3
Добавлен:
27.11.2019
Размер:
171.01 Кб
Скачать

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

Львівський Державний Інститут Новітніх Технологій та Управління ім. В.Чорновола

Факультет інформаційних технологій

Звіт по Лабораторній роботі №1

«Загальна організація операційної системи та програмування на асемблері»

з дисципліни

«Системне Програмування»

Виконав

Студент групи КІ-21

Денисюк В.В.

Перевірив

Зербіно Д.Д.

бал «____»

Львів-2010

Мета роботи: Зрозуміти загальні принципи побудови операційної системи та вивчити методи складання програм на асемблері для операційних систем “WINDOWS”.

Порядок виконання роботи:

1. Створити файл tasm32.bat для компіляції програм для 32х-бітного режиму:

@echo off

del %1.exe

TASM\tasm32.exe /x /m /ml %1.asm

TASM\tlink32.exe /Tpe /aa /c %1.obj,,,TASM\Import32.LIB

del %1.obj

del %1.map

%1.exe

2. Набрати подану нижче програму для визначення імені комп’ютера (яке задається системним адміністратором при установці операційної системи), зберегти її у файлі з розширенням “.ASM ”.

3. Відкомпілювати набрану програму за допомогою командного рядка:

4. Запустити одержаний exe-файл на виконання. Записати ім’я комп’ютера, яке отримала програма.

5. Розглянути текст програми, вивчити загальну структуру програми із застосуванням функцій Win32 API. Переписати в зошит текст програми з відповідними коментарями.

6. Замінити виклик функції API GetComputerNameA на виклик однієї з наступних функцій, змінивши відповідним чином параметри:

GetUserNameA, GetWindowsDirectoryA, GetSystemDirectoryA, GetTempPathA, GetCurrentDirectoryA, GetDriveTypeA, після чого відкомпілювати і запустити програму.

Текст програми

«Computer name»

.386 ; Для процесора не нижче INTEL-386

.model flat, STDCALL ; компілювати як програму для WIN32;

; Визначення зовнішніх процедур:

extrn ExitProcess :proc ; Ліквідація процесу,

extrn MessageBoxA :proc ; Вивід вікна з повідомленням,

extrn GetComputerNameA :proc ; Отримання імені комп’ютера.

.data ; Вміст сегменту даних:

buflen dd 256 ; Визначення комірки пам’яті

hello_title db ' Лаб. № 1 Виконав: ст.гр.КІ-21 Денисюк В.В.', 0

hello_message db 'Computer Name: ' ; Рядок байтів

user_name db 256 dup (0) ; Буфер заповнений нулями

.code ; Вміст сегменту коду:

Start:

call GetComputerNameA, offset user_name, offset buflen

call MessageBoxA, 0, offset hello_message, offset hello_title, 40h

call ExitProcess, 0

end Start

Результат виконання програми «Computer name»

Текст програми

«User Name»

.386 ; Для процесора не нижче INTEL-386

.model flat, STDCALL ; компілювати як програму для WIN32;

; Визначення зовнішніх процедур:

extrn ExitProcess :proc ; Ліквідація процесу,

extrn MessageBoxA :proc ; Вивід вікна з повідомленням,

extrn GetUserNameA :proc ; Отримання імені користувача

.data ; Вміст сегменту даних:

buflen dd 256 ; Визначення комірки пам’яті

hello_title db ' Лаб. № 1 Виконав: ст.гр.КІ-21 Денисюк В.В.', 0

hello_message db ' UserName: ' ; Рядок байтів

user_name db 256 dup (0) ; Буфер заповнений нулями

.code ; Вміст сегменту коду:

Start:

call GetUserNameA, offset user_name, offset buflen

call MessageBoxA, 0, offset hello_message, offset hello_title, 40h

call ExitProcess, 0

end Start

Результат виконання програми «User Name»

Текст програми

«WindowsDirectory»

.386 ; Для процесора не нижче INTEL-386

.model flat, STDCALL ; компілювати як програму для WIN32;

; Визначення зовнішніх процедур:

extrn ExitProcess :proc ; Ліквідація процесу,

extrn MessageBoxA :proc ; Вивід вікна з повідомленням,

extrn GetWindowsDirectoryA :proc ; Отримання шляху до каталогу Windows

.data ; Вміст сегменту даних:

buflen dd 256 ; Визначення комірки пам’яті

hello_title db ' Лаб. № 1 Виконав: ст.гр.КІ-21 Денисюк В.В.', 0

hello_message db 'Windows Directory: ' ; Рядок байтів

user_name db 256 dup (0) ; Буфер заповнений нулями

.code ; Вміст сегменту коду:

Start:

call GetWindowsDirectoryA, offset user_name, offset buflen

call MessageBoxA, 0, offset hello_message, offset hello_title, 40h

call ExitProcess, 0

end Start

Результат виконання програми «WindowsDirectory»