1 2 3 4 5 6 ПРАКТИЧНА ЧАСТИНА1.Використані перериванняПри написанні програми на мові асемблер було використано наступні переривання: переривання INT 21h (переривання DOS) Функція 09h – виводить рядок на стандартний пристрій виводу, що закінчується символом $. Адреса рядка знаходиться в парі регістрів DS : DX. Функція 4Ch – функція яка завершує роботу програми Функція 716С – створює новий або відкриває існуючий файл. В BX = Режим доступу (0 — читання, 1 — запис, 2 — читання/запис), СХ = Атрибути (0 — звичайний, 1 — тільки для читання, 2 — прихований, 3 — системний, 8 — ім'я тому, 20h — архівний), DX = Дія (1 — відкриття, 2 — усікання, 2 — створення). Якщо операція завершилася аварійно CF = 1 і АХ = код помилки. Функція 3Fh– Читає масив байтів із файлу або пристрою. АН = 3Fh, ВХ = Дескриптор файлу або пристрою(0 = клавіатура),СХ = Максимальна кількість байтів для читання. DS:DX = Адреса вхідного буфера. Повертає - АХ = Кількість реально прочитаних байтів. Функція 40h– Зсписує масив байтів в файл. Читає масив байтів із файлу або пристрою. АН = 3Fh, ВХ = Дескриптор файлу, СХ = Максимальна кількість байтів для записування. DS:DX = Адреса вихідного буфера. Повертає - АХ = Кількість реально записаних байтів. Та інші (41h, 42h, 56h…) переривання INT 10h Функція 00h – встановлення відео режиму. В AL = номер відео режиму. Функція 02h – переміщення курсору у вказану позицію. АН = 02h, DH, DL = номер рядка і стовпця, ВН = номер відео сторінки. Функція 07h – Прокручує вікно вниз. АН = 07h,AL = кількість рядків для прокрутки (0 — все), ВН = значення байта атрибуту для заповнення порожніх рядків, СН, CL = номер рядка і стовпця, відповідних координаті верхнього лівого кута вікна, DH, DL = номер рядка і стовпця, відповідних координаті нижнього правого кута вікна. переривання INT 16h Функція 00h – читає символ. Дана функція переміщує в регістр AL наступний ASCII символ, введений з клавіатури, і встановлює скан-код в регістрі AH. У випадку, якщо на клавіатурі натиснута одна із спеціальних клавіш, наприклад, Номе або F1, то в регістр AL заноситься 00. 2.Основні процедуриInit – ініціалізація. Дана процедура ставить у відповідність сегментним регістрам значення зсуву сегментів. Очищує вікно, відкриває необхідні файли. Destr – викликається при виході з програми. Процедура закриває всі відкриті файли. About – виводить на екран дані про програму. PrintStat – виводить статистику. PrintPhones – основною задачею даної процедури це переходження програми в режим перегляду каталогу телефонів PrevPhone, NextPhone – процедури для переходу на попередній та наступний телефон у каталозі. ViewPhone – здійснює пошук у каталозі за вказаною моделлю телефона. Якщо телефон знайдеться то процедура випише всі характеристики телефону в протилежному випадку програма напише повідомлення «Телефон не знайдено» AddPhone – процедура для добавлення нового телефону в каталог. При її виклику здійснюється перевірка на можливість добавлення в зв’язку з обмеженістю каталогу в 1100 телефонів. Якщо ж користувач викликав її помилково то він може відмінити добавлення нового телефону. EditPhone – процедура для редагування, аналогічно з попередньою процедурою після виклику якої можна відмінити редагування запису. RemovePhone – процедура для видалення з каталогу телефону. OpenFiles – завдання даної процедури це відкриття/створення необхідних файлів для програми. CloseFiles – закриває всі відкриті файли. ReadPhone – одна із основних процедур програми. За вказаним індексом процедура зчитує дані про телефон у відповідні змінні в програмі. WritePhone – здійснює запис телефону в файл. Причому вона слугує як для добавлення в файл нового телефону, так і для редагування вже існуючого. AddEditPhone – відповідає за введення даних які необхідно записати в файл при добавленні/редагуванні телефону. SearchPhoneProc – пошук в файлі. Дана процедура здійснює послідовний пошук в файлі. При спів паданні шуканого телефону із прочитаним в файлі, процедура повертає в регістр AX = 1,а в змінну vPhoneInd= номер запису в файлі. Якщо по заданим критеріям не знайдено ні одного запису, то в AX = 0. ReadString20 – процедура яка дає можливість вводу користувачеві рядка символів довжиною до 20 символів. ReadInt10 – аналогічна до попередньої тільки накладається умова що всі символи повинні бути цифрами. І максимальна довжина 10 розрядів. 1 2 3 4 5 6 |