Смекни!
smekni.com

Системне програмування та операційні системи (стр. 1 из 4)

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

ДО КУРСОВОЇ РОБОТИ З ДИСЦИПЛІН

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

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

для студентів спеціальностей 6.091500, 6.080400

(Частина 1)

Весь цифровий і фактичний матеріал та бібліографічні

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

Методичні вказівки до виконання курсової роботи з дисциплін ”Системне програмування", "Системне програмне забезпечення”, ”Системне програмування та операційні системи" для студентів спеціальностей 6.091500, 6.080400

Змiст

Вступ

1. Завдання та порядок виконання курсовоі роботи

1.1 Завдання курсової роботи

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

2.1 Формати числових даних

2.2 Виконання арифметичних операцій

2.2.1 Арифметичні команди над двійковими цілими числами

2.2.2 Арифметичні команди над двійково-десятковими неупакованими числами

2.2.3 Арифметичні команди над двійково-десятковими упакованими числами

3. Порядок виконання курсової роботи

4. Змiст курсової роботи

4.1 Титульний лист

4.2 Список авторів

4.3 Зміст

4.4 Вступ

4.5 Суть звіту

4.6 Висновки

5. Вимоги до оформлення роботи

5.1 Загальні вимоги

5.2 Нумерація аркушів

5.3 Нумерація розділів, підрозділів, пунктів, підпунктів

5.4 Ілюстрації

6. Захист курсової роботи

Додаток А - ТИТУЛЬНА СТОРІНКА

Додаток Б - Зміст

Додаток В - Приклад оформлення та розміри елементів блок-схеми

Додаток Г - Перелік посилань

Вступ

Вивчення курсу закінчується виконанням курсової роботи, яка є самостійною роботою студента.

Метою курсової роботи є розробка системних програм мовою асемблера або мовою високого рівня з вставками мовою асемблера. Конкретне завдання визначається відповідно до варіанту.

Допускається виконання курсової роботи групою не більш як з трьох студентів (варіант завдання та склад групи погоджується з керівником курсової роботи).

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

Для виконання курсової роботи рекомендується застосовувати учбово-довідкові посібники.

1. Завдання та порядок виконання курсовоі роботи

В разі виконання курсової роботи бригадою варіант завдання погоджується з керівником курсової роботи.

1.1 Завдання курсової роботи

В залежності від складності завдання алгоритму програми присвоюється один із трьох рівнів складності.

Рівень виконання обирається студентом.

Завдання

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

Програма повинна задовольняти такі умови:

1 рівень - програма виконує операції підсумовування і віднімання цілих чисел.

2 рівень - програма виконує операції підсумовування і віднімання чисел з фіксованою крапкою і виконує перевірку правильності введення чисел.

3 рівень - програма виконує операції підсумовування, віднімання і множення чисел з фіксованою крапкою, виконує перевірку правильності введення чисел і має "дружній" інтерфейс.

ВАРІАНТИ

№ варіанта Кільк. байтів в цілої і дробової частинах числа Спосіб зберігання числа в пам'яті
1 3 упакований
2 4 неупакований
3 5 упакований
4 6 неупакований
5 7 упакований
6 8 неупакований
7 8 упакований
8 3 неупакований
9 4 упакований
10 5 неупакований
11 6 упакований
12 7 неупакований
13 8 упакований
14 9 неупакований
15 10 упакований

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

2.1 Формати числових даних

Числа, які вводяться з клавіатури, надходять у процесор в ASCІІ - кодах. ASCІІ - код кожної десяткової цифри числа дорівнює значенню цієї цифри, збільшеному на 30h.

В свою чергу, процесор дозволяє виконувати арифметичні операції додавання, віднімання, множення і ділення над цілими числами, які можуть зберігатись у пам'яті в одному з трьох форматів: двійковий формат, двійково-десятковий упакований формат і двійково-десятковий неупакований формат. Число в двійковому форматі зберігається в пам'яті у вигляді одно - чи двобайтового числа в доповнювальному коді. Число в двійково-десятковому упакованому форматі зберігається в пам'яті у вигляді послідовності байтів. Послідовність цифр у байтах природна: в молодших байтах зберігаються старші цифри. В кожному байті зберігаються дві двійково-кодовані десяткові цифри в коді BCD (Bіnary-Coded Decіmal).

Цифра Двійковий код Цифра Двійковий код
0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 0101

Приклад запису 6-розрядного десяткового числа 653201 в пам'яті в коді BCD:

1 байт 2 байт 3 байт
6 5 3 2 0 1 - десяткове представлення
0110 0101 0011 0010 0000 0001 - двійкове представлення

Число в двійково-десятковому неупакованому форматі зберігається у вигляді послідовності байтів. У кожному байті зберігається одна двійково-кодована десяткова цифра. Її значення міститься в чотирьох молодших бітах байта.

Перед виконанням операції множення таких чисел у старших чотирьох бітах повинні бути записані нулі. Для операції додавання і віднімання зміст цих бітів не є суттєвим.

Приклад запису 3-розрядного десяткового числа 653 у пам`яті в двійково-десятковому неупакованому форматі:

1 байт 2 байт 3 байт
0 6 0 5 0 3 - десяткове представлення
0000 0110 0000 0101 0000 0011 - двійкове представлення

2.2 Виконання арифметичних операцій

Процесори ІBM PC мають у системі команд такі команди, які дозволяють виконувати арифметичні операції додавання, віднімання, множення і ділення над цілими числами в двійковому форматі, а також у двійково-десятковому упакованому і неупакованому форматах.

2.2.1 Арифметичні команди над двійковими цілими числами

Для виконання додавання цілих двійкових чисел можуть використовуватись команди:

ADD a,b - Додавання без урахування перенесення. Команда додає значення двох операндів а та b і розміщує результат замість першого операнда. Операнд може знаходитися в пам'яті, в регістрі або бути безпосереднім параметром у команді. Не допускається додавання двох операндів, які знаходяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапорці AF, CF, OF, FF, SF, ZF.

ADC a,b - Додавання з перенесенням. Команда додає значення двох операндів, а також значення прапорця перенесення CF (a+b+CF), і розміщує результат замість першого операнда. Обмеження на операнді такі ж, як і в команді ADD. Установлюються прапорці AF, CF, OF, FF, SF, ZF. Ця команда використовується для програмування арифметичних операцій над довгими цілими числами.

ІNC a - Збільшення на 1. Команда додає 1 до значення операнда а. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапорці AF, OF, PF, SF, ZF.

Для виконання віднімання можуть використовуватись команди:

SUB a,b - Віднімання. Команда віднімає вид значення першого операнда а значення другого операнда b і розміщує результат замість першого операнда. Операнд може знаходитися в пам'яті, в регістрі або бути безпосереднім параметром у команді. Не допускається віднімання, коли обидва операнди знаходяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапорці AF, CF, OF, PF, SF, ZF.

SBB a,b - Віднімання з позикою. Команда віднімає із значення першого операнда а значення другого операнда b, зменшує результат на значення прапорця CF (a-b-CF) і розміщує результат замість першого операнда. Обмеження операндів такі ж, як і в команді SUB. Установлюються прапорці AF, CF, OF, PF, SF, ZF.

DEC a - Зменшування на 1. Команда зменшує значення операнда а на 1. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапори AF, OF, PF, SF, ZF.

Для виконання множення цілих двійкових чисел можуть використовуватись команди:

MUL a - Множення. Команда виконує множення вмісту акумулятора (AL або AX) на значення операнда а. Результат розміщується відповідно в акумуляторі AX або в парі регістрів DX: AX. Множники розглядаються як числа без знаків. Установлюються прапорці CF і OF. Прапорці AF, PF, SF і ZF не визначені.

ІMUL a - Множення із знаком. Команда виконує множення вмісту акумулятора (AL або AX) на значення операнда а. Результат розміщується відповідно в акумуляторі AX або в парі регістрів DX: AX. Множники розглядаються як числа із знаками. Прапорці CF і OF скидаються в 0, коли старша частина добутку (регістр AH або DX) є поширенням знака, який знаходиться в молодшій частині добутку (AL або AX), інакше ці прапорці установлюються в 1.