Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KR_Oleg_Krutygolova.docx
Скачиваний:
11
Добавлен:
05.03.2016
Размер:
272.66 Кб
Скачать
  1. Опис функціонування програми

    1. Опис вхідних, вихідних даних

Для виводу на екран текстових повідомлень у всіх випадках використовуються функція DOS 09h.

ВХІД:

AH – регістр AH має містити 09h.

DS:DX – мають містити адрес стрічки;

Примітка: стрічка має закінчуватися символом “$”, що слугує кінцем стрічки.

Для відкриття файлу була використана функція DOS 3dh.

ВХІД:

AH – регістр AH має містити 3dh.

DS:DX – мають містити адрес стрічки ASCIIZ з назвою файлу (можна також вказувати повний шлях до файлу;

Файл відкривається в режимі читання/запис. Якщо такий файл вже існує то він буде обнулений. Якщо потрібно створити новий файл потрібно викликати функцію 5bh.

ВИХІД:

AX – код помилки або номер1файлу.

Для читання даних з файл була використана функція DOS 3Fh.

ВХІД:

AH – регістр AH має містити 3Fh.

BX – має містити номер файлу.

DS:DX – мають містити адрес буфера, який містить дані для запису.

CX – число записаних байт.

ВИХІД:

AX – код помилки;

AL – число реально записаних байт;

CX – байт даних записується у файл чи на пристрій з номером, заданим у BX. Дані беруться з буфера, що записаний у DS:DX. Дані записуються, починаючи з поточної позиції покажчика читання/запису файлу.

Для закриття відкритого файлу використовується функція DOS 3eh.

ВХІД:

AH – регістр AH має містити 3eh.

BX – номер файлу;

ВИХІД:

AX – код помилки.

Для виходу програми використалася функція DOS 4Ch.

ВХІД:

AH – регістр AH має містити 4Ch.

AL – код виходу;

ВИХІД: (не має);

При роботі з файлами дуже важливо контролювати хід виконання програми, оскільки можливі критичні операції, такі як відсутність файлу, відсутність дискети, поганий файл і т. д. Всі вищерозглянуті функції повертали коди помилок, якщо вони були. Важливо вчасно перехопити управління в разі виникнення критичної помилки і в разі необхідності вивести повідомлення і повернути управління програмі, наприклад, для повторного вводу імені файлу. В противному випадку така помилка може не тільки зруйнувати програму яка виконується, але й привести у нестабільне положення систему в цілому, викликати “зависання” комп’ютера.

Ось розшифровка кодів помилок:

Таблиця 2.1 – Розшифровка кодів помилок

ОПИС ПОМИЛКИ

01

Помилка номера функції

02

Файл не знайдений

03

Шлях доступу не знайдений

04

Відкрито дуже багато файлів

05

Доступ не дозволений

06

Помилка файлового номера

07

Блок управління пам’яттю зруйнований

08

Недостатньо пам’яті

09

Помилка адреси блоку пам’яті

10

Помилка обладнання

11

Помилка формату

12

Помилка коду доступу

13

Помилка даних

15

Помилка дисковода

16

Спроба знищити зміст

17

Не той пристрій

18

Немає більше файлів

    1. Опис процедур і функцій

Арифметичні операції - ADD, SUB, MUL, DIV. add приймач, джерело

Виконує обчислення: приймач = приймач + джерело. Є також інші форми: приймач джерело приклад регістр регістр add ecx, edx регістр пам'ять add ecx, dword ptr [104h] / add ecx, [edx] регістр значення add eax, 102 пам'ять значення add dword ptr [401231h], 80 пам'ять регістр add dword ptr [401231h], edx Ця команда дуже проста. Вона додає значення джерела до значення приймача і поміщає результат в приймач. Інші математичні команди: sub приймач, джерело (приймач = приймач - джерело) mul множене, множник (множене = множене * множник) div дільник (eax = eax / дільник, edx = залишок)

Оскільки регістри можуть містити тільки цілочисельні значення (тобто числа, не, з плаваючою комою), результат ділення розбитий на приватне і залишок. Тепер, залежно від розміру джерела, приватне зберігається в eax, а залишок у edx: розмір джерела поділ приватне в ... залишок у ... BYTE (8-bits) ax / дільник AL AH WORD (16-bits) dx: ax * / дільник AX DX DWORD (32-bits) edx: eax * / дільник EAX EDX * = Наприклад: якщо dx = 2030h, а ax = 0040h, dx: ax = 20300040h. Dx: ax - значення dword, де dx представляє старше word, а ax - молодше. Edx: eax - значення quadword (64 біта), де старше dword в edx і молодше в eax. Джерело операції ділення може бути:     8-біт регістр (al, ah, cl, ...)     16-біт регістр (ax, dx, ...)     32-біт регістр (eax, edx, ecx ...)    8-біт значення з пам'яті (byte ptr [xxxx])     16-біт значення з пам'яті (word ptr [xxxx])    a 32-біт значення пам'яті (dword ptr [xxxx])

Джерело не може бути безпосереднім значенням, тому що тоді процесор не зможе визначити розмір вихідного операнда. Логічні операції з битами - OR, XOR, AND, NOT.Еті команди працюють з приймачем і джерелом, виключення команда 'NOT'. Кожен біт в приймачі порівнюється з тим же самим бітом в джерелі, і в залежності від команди, 0 або 1 поміщається в біт приймача: команда AND OR XOR NOT Біт джерела 0 0 1 1 0 0 1 1 0 0 1 1 0 1 Біт приймача 0 1 0 1 0 1 0 1 0 1 0 1 X X Біт результату 0 0 0 1 0 1 1 1 0 1 1 0 1 0 AND (логічне І) встановлює біт результату в 1, якщо обидва біта, біт джерела і біт приймача встановлені в 1. OR (логічне АБО) встановлює біт результату в 1, якщо один з бітів, битий джерела або біт приймача встановлений в 1. XOR (НЕ АБО) встановлює біт результату в 1, якщо біт джерела відрізняється від біта приймача. NOT інвертує біт джерела.

  1. ТЕСТУВАННЯ ПРОГРАМИ ТА РЕЗУЛЬТАТИ ЇЇ ВИКОНАННЯ

    1. Результати роботи (screenshots, screen capture)

Переконатися в тому, що програма дійсно виконується можна натиснувши у програмі Volcov Comander комбінацію клавіш Alt+F5 (Memory Info). У вікні зявляться всі програми які розміщені в пам’яті, серед них можна побачити програму “1.com”, тобто кирилізатор на рис. 3.1:

Рисунок 3.1 Менеджер процесів Volcov Comander

Далі продемонструємо можливості українізації тексту, що вводиться на рис.3.2:

Рисунок 3.2 Введення тексту кирилицею

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]