Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки до лабораторних робіт.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
463.87 Кб
Скачать

9

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

ХЕРСОНСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

КАФЕДРА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

Реє.№_______________________

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторних робіт

з дисципліни

Системне програмування та операційні системи”

для студентів 3 курсу денної форми навчання

спеціальності 6.080403 –

Програмне забезпечення автоматизованих систем”

Херсон 2008

Методичні вказівки до виконання лабораторних робіт з дисципліни «Системне програмування та операційні системи»/Склали А.А.Григорова, к.т.н., доцент, О.М. Ляшенко, асистент. – Херсон: Херсонський національний технічний університет, 2008. – с. 80.

Рецензент: к.т.н., доцент. Т.Г. Кірюшатова

Затверджено

на засіданні кафедри

інформаційних технологій

Протокол №_______

від „______”_________ р.

Зав.каф.___________________Ходаков В.Є.

Відповідальний за випуск В.Є. Ходаков, д.т.н., професор, завідувач кафедри ІТ

ВСТУП

Матеріал курсу з дисципліни “Системне програмування та операційні системи” розбитий на 2 частини. Частина I «MS-DOS» включає 5 лабораторних робіт, які націлені на роботу у середовищі «MS-DOS». Частина II «WIN 32 API» включає 6 лабораторних робіт, які припускають роботу з діалоговими вікнами, меню і т.і.

Кожна лабораторна робота включає теоретичну частину, яка базується на лекційному матеріалі і може бути пов'язана з іншими дисциплінами навчального плану, що читались раніше, індивідуальні завдання для студентів та контрольний приклад виконання завдання.

Таким чином, метою дисципліни “Системне програмування та операційні системи” є:

  • формування знань, вмінь та навичок, необхідних для раціональ­ного використання системних ресурсів ЕОМ;

  • вивчення мови програмування асемблера та методів розробки програм, що взаємодіють з операційною системою;

  • надбання навичок використання сучасних інформаційних технологій при розв’язанні задач, пов’язаних зі створенням програмного забезпечення прикладного та системного характеру для різних операційних платформ.

У процесі вивчення курсу студенти повинні вміти:

  • використовувати мову програмування асемблер для вирішення типових системних задач;

  • застосовувати функції, що експортуються операційним середовищем;

  • створювати нові прикладні та системні програми за допомогою мови програмування асемблер;

  • вирішувати питання організації програмного інтерфейсу в системних програмах та модулях;

  • оптимізувати програмний код.

ЗМІСТ

ВСТУП ……………………………………………………………………………………………

3

ЧАСТИНА I «MS-DOS»…………………………………………………………………………

5

Лабораторна робота N 1 «Програмування лінійних процесів на асемблері» ………………

5

Лабораторна робота N 2 «Програмування розгалужених процесів на асемблері»…………………………………………………………………………………………

8

Лабораторна робота N 3 «Програмування циклічних процесів на асемблері»………………

13

Лабораторна робота N 4 «Робота з масивами» …………………………………………………

17

Лабораторна робота N 5 «Програмні сегменти» ……………………………………………….

23

ЧАСТИНА II «WIN 32 API»……………………………………………………………………..

37

Лабораторна робота N 1 «MessageBox»…………………………………………………………

37

Лабораторна робота N 2 «Просте вікно»……………………………………………………….

43

Лабораторна робота N 3 «Відрисовка тексту»………………………………………………….

55

Лабораторна робота N 4 «Клавіатура»…………………………………………………………..

61

Лабораторна робота N 5 «Миша»………………………………………………………………..

66

Лабораторна робота N 6 «Меню»………………………………………………………………..

71

ЛІТЕРАТУРА .................................................................................................................................

80

ЧАСТИНА I

«MS-DOS»

Лабораторна робота N 1

Тема роботи: Програмування лінійних процесів на асемблері.

Мета роботи: Ознайомитись з основними командами мови Асемблер та навчитися програмувати лінійний процес.

Теоретичні відомості.

При організації лінійних процесів на мові Асемблер використовують такі команди, як:

mov – команда передачі значення;

add – команда додавання;

sub – команда віднімання;

mul – команда множення;

div – команда ділення;

xchg – команда обміну значень.

Розглянемо кожну з наведених команд.

1. Команди передачі значень:

1) команда mov (передача): mov op1, op2.

По команді mov на місце першого операнда передається значення іншого операнда: op1:=op2. Команда не впливає на прапорці.

Приклади:

mov AX,500; A:=500

mov BL,DH; BL:=DH

По команді mov можна передавати як байт, так і слово.

2) команда xchg (обмін значень): xchg op1,op2

Ця команда обмінює значення своїх операндів (вони повинні бути байтами, або словами);

op1 <=> op2. Команда не впливає на прапорці.

Приклади:

mov AX,62; AX=62

mov SI,135; SI=135

xchg AX,SI; AX=135, SI=62

2. Команди додавання і віднімання.

Команда add (додавання): add op1,op2

Команда sub (віднімання): sub op1,op2

Команда add додає операнди та заносить їхню суму на місце першого операнда: op1:=op1+op2.

По команді sub від першого операнда віднімається другий операнд, здобута різниця заноситися на місце першого операнда:

op1:=op1-op2.

Приклад:

add AH,12; AH:=AH+12

sub SI,z; SI:=SI-z

add z,-300; z:=z+(-300)

Команди add та sub працюють як з числами розміром у байт, так і з числами розміром у слово. Неможна, щоб один з операндів був байтом, а інший - словом.

3. Команди множення й ділення.

1) команда mul (множення): mul op

Операнд op, зазначений у команді - це лише один зі співмножників; він може знаходитись у регістрі чи в пам'яті, але не може бути безпосереднім операндом. Місцезнаходження іншого співмножника зафіксовано, і тому в команді не вказується. При множенні цілих операндів зі знаком, використовується команда imul op.

2) команда div (ділення): div op

Аналогічно команді множення.

Індивідуальні завдання:

1 f=(2x +3y)/4z+5x;

2 f=(8x +9y)/(3z+1);

3 f=(18x+9y-5)/3z+2;

4 f=(4y+2)/(7-4z)+x;

5 f=z/(7y-x)(3-6x);

6 f=x+y+3z/5-4;

7 f=(5z-4x)/(y-8);

8 f=(x+7)/(zy-1);

9 f=(y-7x-2z)/(6y+1);

10 f=(5-z)/(x-3y);

11 f=(77y-8)/(x+6);

12 f=(6z-4y)/(3x-8);

13 f=(12z-5y)/(3x+2)-5z;

14 f=(4x+5y-12z)/(2z-5);

15 f=(3x-2y+1)/(10z-1);

16 f=(5z-4x)/(y+2x);

17 f=(5x+7)/(zy+1);

18 f=(y+7x-2z)/(y+1);

19 f=(5+3z)/(x+3y-1);

20 f=(2x+3y-z)/(4z+5x);

21 f=(8x+2y+z)/(3z+2);

22 f=(18x+9y)/(3z+x+2);

23 f=(4y+2)/(7-4z)+x;

24 f=z(7y-x)/(3-6x)-1;

Контрольний приклад

Завдання: f=(7x+12z)/(y-5)

program Al1; {з тією умовою, що y>5}

uses crt;

var x,y,z:integer;

f:integer;

begin

clrscr;

write('Input x=');

readln(x);

write('Input y=');

readln(y);

write('Input z=');

readln(z);

asm

mov ax,7

imul x

xchg ax,bx

mov ax,12

imul z

add ax,bx

mov cx,y

mov bx,5

sub cx,bx

idiv cx

mov f,ax

end;

writeln('f=',f);

readkey; end.

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

1. Вивчити основні команди, які використовуються при організації лінійних процесів на мові Асемблер.

3. Написати програму.

4. Зробити звіт .

Зміст звіту

1. Опис основних команд, які використовуються при організації лінійних процесів.

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

3. Результати.

4. Висновки.

5. Відповіді на контрольні питання.

Контрольні питання

1. З якими числами працюють команди add та sub?

2. Для чого потрібна команда xchg?

3. Чим різняться команди mov та xchg?

Лабораторна робота N 2

Тема роботи: Програмування розгалужених процесів на асемблері.

Мета роботи: Вивчити команди умовного та безумовного переходів, навчитися програмувати на мові Асемблер процеси з розгалуженням.

Теоретичні відомості.

Всі команди умовного переходу можна поділити на три групи. У першу групу входять команди, що ставляться після команди порівняння. У їх мнемокодах за допомогою певних символів описується той чи інший результат порівняння, за яким відбувається перехід. Це такі символи:

E – equal (рівно)

N – not (не)

G – greater (більше) - для чисел зі знаком

L – less (менше) - для чисел зі знаком

A – above (вище) - для чисел без знака

B – below (нижче) - для чисел без знака

Далі наведені назви усіх команд умовного переходу, що використовуються

після команди порівняння (через слеш вказані назви-синоніми):

Таблиця 2.1

Команди умовного переходу, що використовуються після команди порівняння

Мнемокод

Змістовна умова для переходу.

після CMP ор1, ор2

Стан прапорців для переходу

для будь-яких чисел

je

jne

op1=op2

op1<>op2

zf=1

zf=0

для чисел зі знаком

jl/jnge

jle/jng

jg/jnle

jge/jnl

op1<op2

op1<=op2

op1>op2

op1>=op2

sf<>of

sf<>of або zf=1

sf=of і zf=0

sf=of

для чисел без знаку

jb/jnae

jbe/jna

ja/jnbe

jae/jnb

op1<op2

op1<=op2

op1>op2

op1>=op2

cf=1

cf=1 або zf=1

cf=0 і zf=0

cf=0

До другої групи команд входять ті, що ставляться після команд, відмінних від команд порівняння, і ті, які реагують на те чи інше значення якого-небудь визначеного прапорця.

Таблиця 2.2

Команди умовного переходу, які реагують на те чи інше значення прапорця

Мнемокод

Умова переходу

Мнемокод

Умова переходу

jz

js

jc

jo

jp

zf=1

sf=1

cf=1

of=1

pf=1

jnz

jns

jnc

jno

jnp

zf=0

sf=0

cf=0

of=0

pf=0