АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ПРАКТИЧНА РОБОТА №16

Читайте также:
  1. Cамостійна робота студентів
  2. Cамостійна та індивідуальна робота
  3. Cамостійна та індивідуальна робота
  4. Cамостійна та індивідуальна робота
  5. Cамостійна та індивідуальна робота
  6. Cамостійна та індивідуальна робота
  7. Cамостійна та індивідуальна робота
  8. Cамостійна та індивідуальна робота
  9. Cамостійна та індивідуальна робота
  10. II. Індивідуальна робота студентів.
  11. II. Індивідуальна робота студентів.
  12. II.Практична частина

Тема: Робота з файлами.

Мета: Навчитися створювати та відкривати файли, виконувати читання та записи в файл.

Задачі: Складання програм.

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

1. Методичні вказівки що до виконання лабораторної роботи;

2. Персональний комп’ютер;

3. Відповідне програмне забезпечення (Windows 98, Microsoft Office 2000, XP, 2003, MS Excel, емулятор типу Emu8086 v2.57).

Теоретичні основи:

Створення й відкриття файлів. Переривання 0x21 MS-DOS надає трохи функцій для різних операцій з файлами: створення, відкриття, запис, читання й ін. Розглянемо спочатку приклад створення файлу:

Для створення файлу використовується функція 0x3C DOS-Переривання 0x21:

При її виклику в регістрі CX повинні перебувати атрибути файлу (0x01 - файл тільки для читання, 0x02 - схований файл, 0x04 - системний файл, 0x20 - архівний файл), а в DS:DX - адреса рядка з ім'ям файлу, що закінчується нульовим байтом. При цьому можна задати разом з ім'ям файлу й шлях, наприклад, «C:\WORK\MYFILE.TXT». Якщо буде задане тільки ім'я файлу, то він буде створений у поточному каталозі (за замовчуванням це той каталог, з якого була запущена наша про- грама). Якщо файл із заданим ім'ям уже існує, то його розмір усікається до нуля й всі дані в ньому губляться, після чого файл відкривається. При успішному створенні файлу в AX записується його дескриптор (descriptor - «описувач»). У випадку помилки встановлюється прапор переносу. Коли DOS створює або відкриває файл, у спеціальній області оперативної пам'яті створюється т.зв. «блок опису файлу». У ньому зберігається різноманітна інформація, необхідна MS-DOS для роботи з файлом (ім'я файлу, його атрибути, інформація про фізичне положення файлу на диску й ін.). Кожний такий блок займає 59 байт. MS-DOS групує ці блоки в «таблицю від- критих файлів». Дескриптор же являє собою 16-бітний номер блоку опису файлу в таблиці відкритих файлів:

Всі подальші операції з файлом здійснюються з використанням дескриптора. Т.о. поняття «відкритий файл» можна визначити так - це файл, для якого створений блок опису в таблиці відкритих файлів. У нашім прикладі створюється файл із ім'ям «MYFILE.TXT». Для простоти файлу не присвоюється яких-небудь атрибутів (CX = 0). Якщо файл не вдалося створити (установлений прапор переносу), то за допомогою команди «jc» виконання програми переходить на мітку «fileER» і виводиться повідомлення про помилку «Cannot to create file!», після чого програма завершує роботу. Якщо файл був створений (скинутий прапор переносу), то дескриптор файлу зберігається в змінної «handle»:

Оскільки дескриптор - 16-бітне число, те змінна «handle» визначена як слово («dw» від «define word» - «визначити слово»):

Далі програма виводить повідомлення про успішне створення файлу «File was created!». Після того як операції з відкритим файлом завершені, його необхідно закрити. Залишати файли відкритими після виконання програми не рекомендується, тому що це може викликати втрату даних або ушкодження логічної структури диска. Для закриття файлу використовується функція 0x3E DOS- переривання 0x21:

При її виклику в регістрі BX повинен перебувати дескриптор відкритого файлу. Після закриття файлу виконання нашої програми переходить на мітку «exit» завдяки команді:

jmp exit

Ця команда виконується також як і команди умовного переходу, з тією різницею, що виконується завжди, поза залежністю від стану яких-небудь прапорів. Для того щоб відкрити вже існуючий файл без знищення його вмісту, можна скористатися функцією 0x3D DOS-Переривання 0x21. При її виклику в регістрі AL повинні на- ходитися код доступу до файлу (0x00 - відкрити тільки для читання, 0x01 - для запису, 0x02 - для читання й запису), а в DS:DX - адреса рядка з ім'ям файлу, що закінчується нульовим байтом. При успішному відкритті файлу в AX записується його дескриптор. У випадку помилки (у т.ч. якщо зазначений файл не існує) установлюється прапор переносу.

Читання й запис у файл. Для читання й запису даних у файл використовують функції 0x3F, 0x40 і 0x42 DOS-Переривання 0x21. Всі функції вимагають наявності в регістрі BX дескриптора файлу. Функція 0x3F читає з файлу число байт, зазначене в регістрі CX і поміщає його в буфер за адресою DS:DX. Функція 0x40 записує у файл число байт, зазначене в регістрі CX з буфера за адресою DS:DX. При помилці обидві функції встановлюють прапор переносу. Читання або запис здійснюється з того байта у файлі, що заданий у т.зв. «покажчику файлу». Покажчик файлу зберігається в блоці опису файлу. За замовчуванням після створення або відкриття файлу він дорівнює нулю й таким чином указує на початок файлу. Після успішного читання або запису N байт покажчик автоматично збільшується на N байт. Т.о. наступне читання або запис почнеться з N-го байта у файлі. Значення покажчика файлу можна примусово змінити функцією 0x42. При її виклику в AL повинен бути записаний режим установки покажчика (0x00 - зсув від початку файлу, 0x01 - зсув від поточної позиції покажчика, 0x02 - зсув від кінця файлу). Сам зсув задається 32-бітним числом, і тому записується у два регістри (в CX - старше слово, в DX - молодше слово). Якщо AL = 0x01 або 0x02, то зсув розглядається як число зі знаком (тобто може бути негативним). Після виклику цієї функції покажчик файлу переміщається на величину, рівну заданому зсуву (уперед або назад і щодо якої позиції, визначає регістр AL). Нове значення покажчика зберігається в регістрах DX і AX (DX - старше слово, AX - молодше слово). Приклад програми, що дописує в кінець файлу два рядки «12345» і «abcde»:

Як видно, програма відкриває файл із ім'ям «MYFILE.TXT». Якщо файл не вдалося відкрити, то видається повідомлення про помилку «Cannot to open file!», і програма завершує роботу. Після відкриття файлу його дескриптор зберігається в змінної «handle». Далі програма всановлює покажчик файлу в кінець файлу, для того щоб здійснити саме дописування даних у файл:

Далі здійснюється запис рядка «srt1» у файл:

Після цього аналогічно записується рядок «str2». Оскільки після першої операції запису покажчик автоматично переміститься вперед на 7 байт, немає необхідності встановлювати його вручну перед наступним записом. Після виконання всіх операцій програма закриває файл і завершує роботу.

Література:

1. Самовчитель по мікропроцесорній техніці. Спб., Наука й техніка. 2003 - 224с.

2. Мікропроцесорна техніка. Підручник /Якименко Ю. І, Терещенко Т. О. таінші/ - 2-ге вид., переробл. та доповн. - К.: ІВЦ «Видавництво «Політехніка»», 2004. - 440 с.

3. Мікропроцесорні системи. Під ред. Д. В. Пузанкова. Спб., Політехніка. 2002 - 935с.

4. Юров В. Assembler: Практикум. - Спб.: Питер, 2001.

Техніка безпеки:

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

1. заходити в лабораторію тільки з дозволу викладача або завідуючого лабораторією;

2. не приносити до лабораторії легко палких та отруйних речовин;

3. без дозволу викладача або завідуючого лабораторією не вмикати ЄОМ та інші електричні прилади;

4. чітко та своєчасно виконувати накази викладача або завідуючого лабораторією;

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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)