
- •Контрольна робота №1 з курсу "Системне програмування"
- •Завдання:
- •Рішення
- •Недоліки
- •Лабараторна робота №1
- •Короткі теоретичні відомості
- •Лабораторне завдання
- •Текст програми Hello.Asm
- •Лабораторна робота №2
- •Короткі теоретичні відомості Стандартні способи вводу-виводу dos
- •Ввід з клавіатури символьної інформації.
- •Функції dos виводу даних на екран.
- •Лабораторне завдання
- •Текст програми
- •Лабараторна робота №3
- •Короткі теоретичні відомості
- •Характеристика атрибута символа у відеобуфері.
- •Коди кольорів стандартної палітри. Таблиця 1
- •Довідкові дані по функціях bios
- •Лабораторне завдання
- •Текст програми
Функції dos виводу даних на екран.
DOS надає наступні способи виводу даних на екран:
використання функційInt 21h (02h, 06h, 09h), що забезпечують посимвольний ввід з клавіатури в різних режимах;
звертання до екрана, як до файла, за допомогою функції 40h.
-
Функція 02h. Виведення одиничного символа.
Виводить символ, що знаходиться в регістрі DL, на екран. Для виводу стрічки функцію потрібно використати в циклі. Допускає перенаправлення виводу. Виконує обробку <Ctrl/С> при введенні цієї комбінації з клавіатури перед виводом кожного 64-го символа. Ця функція виводить і керуючі ASCII- символи з кодами 7, 8, 9, 0Ah, 0Dh. Символ з кодом 7 (bell, дзвінок) викликає звуковий сигнал, з кодом 8 (backspace )- повертає курсор на одну позицію ліворуч, з кодом 9 (tab, табуляція) - зміщає курсор на одну позицію праворуч, кратну 8. Дії керуючих клавіш з кодами 0Ah і 0Dh розглядалися раніше.
Виклик:AH=02h, Int 21h
Ввід:DL=ASCII -код символа
Вивід: AL= код останнього записаного символа (крім випадку, коли DL=09, тоді повертається значення 20h)
Використання даної функції розглянемо на прикладі процедури переходу на нову стрічку.
PROC |
NewLine |
|
|
push ax |
|
|
push dx |
|
|
mov ah, 2 |
;Запит функції 02h |
|
mov dl, 13 |
;Повернення каретки |
|
int 21h |
;Виклик DOS |
|
mov dl, 10 |
;перевід стрічки |
|
int 21h |
;Другий виклик DOS |
|
pop dx |
|
|
pop ax |
|
|
ret |
|
ENDP |
NewLine |
|
-
Функція 09h. Вивід стрічки.
Виводить рядок символів на пристрій стандартного виводу (використовується в системних програмах для виведення на екран інформаційних повідомлень). Рядок повинен закінчуватися символом $ (код 24h), який служить ознакою кінця рядка, і сам не виводиться. Допускає перенаправлення виводу. У повідомлення можуть бути включені і керуючі коди (7, 8, 9, 0Ah, 0Dh), які викликають відповідні їм дії (див. функцію 02h). Функція виконує обробку <Ctrl/С> при введенні цієї комбінації з клавіатури перед виводом кожного 64-го символа.
Приклад використання.
Promt |
DB |
'Name? $' |
|
lea dx, [Promt] |
;Адреса рядка Promt: DS:DX |
|
mov ah, 09h |
;Запит функції 09h |
|
int 21h |
;Виклик DOS |
Функція 40h. Вивід даних в файл або в пристрій.
Універсальна функція виводу даних з буфера користувача в сегменті даних в файл або на пристрій, дескриптор якого вказується в регістрі BX. Дескриптор 1, закріплений за стандартним пристроєм виводу, забезпечує перенаправлення виводу. Значення регістра CX визначає число байтів, які повинні бути виведені, а пара регістрів DS:DX вказує адресу даних, що виводяться. Керуючі коди 08h, 0Ah, 0Dh і деякі інші приводять до виконання відповідних їм дій. Після завершення виводу при CF=0 регістр AX містить число дійсно виведених байтів, а при CF=1 -поворотний код помилки. Як і при використанні функції 3Fh, це коди помилок 5 або 6. Приклад використання.
Out_Area |
DB |
20 DUP(?) |
|
mov ah, 40h |
;Запит функції 40h |
|
mov bx, 01 |
;Дескриптор дисплея |
|
mov cx, 20 |
;Число байт, що пересилаються |
|
lea dx, [Out_Area] |
;Адреса буфера для повідомлення |
|
int 21h |
;Виклик DOS |
|
mov cx, ax |
|
|
sub cx, 2 |
|