ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Приклади програми для виведення зображення

У текстовому режимі з використанням функцій BIOS

Наведена нижче програма демонструє прийоми роботи з дисплеями у текстовому режимі за допомогою функцій BIOS. На екрані дисплея на чорному фоні за допомогою символів псевдографіки виводиться вікно синього кольору, в середині якого виведено рядок “Приклад 2”. NAME PROG

Cursor macro ; макрос для встановлення курсора в певну позицію

mov AH,02h

mov BH,0

int 10h

Endm

Attr macro ; макрос для виведення символу

mov BH, 0

mov AH, 09h

int 10h

endm

STACKSG SEGMENT STACK

DB 128 DUP(?)

STACKSG ENDS

DATE SEGMENT

text db "ПРИКЛАД”, 0

DATE ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATE, SS:STACKSG

START PROC FAR

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DATE

MOV DS,AX

CALL MAIN

CALL stroka

RET

START ENDP

MAIN PROC

MOV AH,0 ; задаємо режим дисплея

Mov al,3

INT 10h

mov dh,5 ; позиція курсора

mov DL,10

met2:

cursor ; встановлюємо курсор в задану позицію

Mov cx,60 ; кількість повторень

Mov al,219 ; символ псевдографіки

mov bl,059h ; задаємо колір

attr ; виводимо символ із заданими параметрами

inc dh

cmp dh,10

jne met2

ret

MAIN ENDP

; процедура для виведення рядка посимвольно

stroka proc near

mov dh,7 ; позиція курсора

Mov dl,30

cursor ; встановлюємо курсор

lea si,text-1 ; завантажуємо адресу рядка

met3:

inc si

mov al,[si]

mov bl,07Ch ; атрибути символу

mov cx,1

attr ; виводимо символ

inc dl

cursor

mov al,[si]

cmp al,0 ; перевірка на кінець рядка

jne met3

mov dl,'2'

mov ah, 06h

int 21h

mov dh,22

mov dl,1

cursor

ret

stroka endp

ends

End start

 

 

Приклад програми для виведення зображення

У графічному режимі з використанням функцій BIOS

Наведена нижче програма демонструє прийоми роботи з дисплеями у графічному режимі за допомогою функцій BIOS. На екрані дисплея на чорному фоні за допомогою пікселів виводиться пряма лінія синього кольору.

NAME PROG1

STACKSG SEGMENT STACK

DB 128 DUP(?) ; резервування пам’яті для стека

STACKSG ENDS

DATE_SG SEGMENT

con1 dw 100

con2 dw 50

DATE_SG ENDS

CODE_SG SEGMENT

ASSUME CS:CODE_SG, DS:DATE_SG, SS:STACKSG

start proc far

push ds

sub ax,ax

push ax

call main

ret

start endp

Main proc

Мov ah,00h ; установлення режиму

mov al,4h ;

int 10h

mov ah,0Bh ; установлення палітри кольорів

mov bh,1 ; для фону зображення

mov bl,1 ; номер кольору

int 10h

mov ah,0Bh ; установлення режиму

mov bh,0 ; для виведення рисунка

mov bl,6 ; номер кольору

int 10h

mov si,con2 ; кінцева координата

mov cx,con1 ; початкова координата (№ стовпчика)

mov dx,con2 ; номер рядка

met1: mov ah,0Ch ; запис точки

mov al,2 ; номер кольору

inc cx

Int 10h

dec si

cmp si,0

jne met1

ret

main endp

CODE_SG ends

end start

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

 

1. Вивчити теоретичну частину даної лабораторної роботи.

2. Скласти програму для виведення зображення на екран дисплея згідно з індивідуальним завданням, використовуючи прямий доступ до відеопам’яті.

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


Лабораторна робота № 10

Робота з файлами

Тема: Програмування основних операцій над файлами мовою Асемблер: створення, відкриття, закриття файлів. Введення даних у файл (пристрій) і виведення даних з файла (пристрою). Програмування операцій з атрибутами файлів. Робота з дисками, каталогами, пошук файлів.

 

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

 

Класи функцій для роботи з файлами

 

В операційній системі MS DOS існують два класи функцій для роботи з файлами:

· функції, що використовують блок керування файлом (FCB);

· функції, що використовують програмний канал (Handle).

Перший клас функцій (функції 0Fh – 24h) застосовувався в MS DOS версій 1.х і на даний час має чисто історичний інтерес.

Другий клас функцій (функції 39h – 62h) з’явився вперше в MS DOS версії 2.0 і широко використовується дотепер.

Сутність каналу (інші назви – дескриптор файла, файловий індекс, логічний номер) полягає у наступному. Для того, щоб почати роботу з файлом або пристроєм, програма повинна відкрити цей файл або пристрій. Процес відкриття файла або пристрою полягає у присвоєнні йому певного номера каналу й виконання деяких інших ініціалізуючих дій.

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

Перші п’ять номерів каналів зарезервовані операційною системою для таких стандартних пристроїв:

0 – Stdin – стандартний пристрій введення (клавіатура);

1 – Stdout – стандартний пристрій виведення (екран диплея);

2 – Stderr – стандартний пристрій для виведення повідомлень про помилки (ек­ран диплея);

3 – Stdaux – стандартний пристрій зв’язку (послідовний адаптер СОМ1);

4 – Stdptr – стандартний пристрій друку (перший паралельний порт LPT1).

Ці пристрої доступні прикладним програмам, їх не треба відкривати, але програми можуть закривати їх. Пристрій Stdaux може вико­ристовуватись як для введення, так і для виведення даних.

Наведені вище пристрої при початковому завантаженні операційної системи знаходяться у символьному режимі.

Створення файлів

Створюється файл за допомогою функції 3Сh переривання INT 21h. для виклику цієї функції необхідно помістити в регістри таку інформацію:

На вході:

AH = 3Ch.

CX = Атрибути файла, який буде створено, а саме:

00 – звичайний файл;

01 – тільки для читання;

02 – прихований файл;

04 – системний файл.

DS:DX = адреса ASCII-рядка, що містить шлях по каталогу для файла, що створюється.

На виході:

після завершення роботи функції в регістрі АХ знаходиться номер каналу цього файла або вказується код помилки, якщо файл не було створено.

Додатково ця ж функція виконує також операцію відкриття щойно створеного файла. Варто зауважити, що якщо файл із вказаним ім’ям вже існує, він обрізається до нульової довжини. І тому, щоб випадково не знищити вміст файла з таким самим ім’ям, як і той, що створюється, можна вико­ри­сто­ву­ва­ти функцію 5Bh переривання INT 21, яка виконує перевірку наявності файла з таким іменем.

Можна для відкриття або створення файла з розширеними можливос­тя­ми використовувати більш сучасну функцію 6Сh, яка з’явилася в останніх версіях MS DOS (DOS 4.0++). З її появою зникає необхідність відслідковувати існування файла, що створюється. Для коректної роботи цієї функції слід лише задати потрібні значення у відповідних регістрах.

 

Відкриття файла

Відкриття існуючого файла виконується за допомогою функції 3Dh переривання INT 21h. Для виклику цієї функції необхідно розмістити в регістрах таку інформацію:

На вході:

АН = 3Dh.

AL = байт режиму доступу.

DS:DX = адреса ASCII-рядок, що містить шлях по каталогу файла, який відкривається.

На виході:

АХ містить номер каналу відкритого файла або код помилки, якщо файл не був відкритий.

Байт режиму доступу визначає правила доступу до файла. Цей байт складається з чотирьох полів, і побітово поля в ньому розподіляються таким чином, як це наведено у таблиці 11.

Таблиця 11 – Вміст байта режиму доступу

Режим доступу Біти Призначення Можливі значення
<I> прапорець успадкування 0 – файл передається породженому процесу; 1 – файл являє собою власність даного процесу.
<S> 6,5,4 поле режиму розподілу 000 – спільне використання файла; 001 – захист від читання і запису; 010 – захист від запису; 011 – захист від читання; 100 – без захисту.
<R> резервне поле
<A> 2,1,0 вид доступу 000 – доступ на читання; 001 – доступ на запис; 010 – доступ на читання і запис.

Усі інші комбінації заборонені.

Розглянемо детальніше сутність режимів розділення й видів доступу.

Режим розділення інформує операційну систему про те, які операції над файлом є доступними іншим процесам (програмам). За замовчування (режим спільного використання) забороняється всім іншим комп’ютерам мережі звертатись до цього файла.

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

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

Питання про використання файла декількома процесами залежить від режиму розділення та виду доступу.

Закриття файла

 

Закриття файла виконується за допомогою функції 3Eh переривання INT 21h. Для виклику цієї функції необхідно помістити у регістри таку інформацію:

На вході:

AH = 3Eh;

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

DS:DX = адреса ASCII-рядка, що містить шлях по каталогу файла, що закривається.

На виході:

АХ містить код помилки.

Після виконання цієї функції файл закривається, елемент каталога оновлюється, а всі системні буфери, що відведені для цього файла, звільняються.

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти