Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 19 - 20 - Прерывания.ppt
Скачиваний:
46
Добавлен:
18.02.2023
Размер:
609.28 Кб
Скачать

Прерывание 10h (Видео

BIOS)

Функция 00h – Установка видеорежима AL – номер видеорежима

Функция 01h – Установка размера и формы курсора CH – начальная строка (CH=20h – подавить)

CL – конечная строка.

Функция 02h – Установить позицию курсора BH – видеостраница

DH, DL – строка, колонка (начиная с 0).

Функция 03h – Читать позицию и размер курсора BH – видеостраница,

DH, DL – текущие строка, колонка курсора

CH, CL – текущая начальная и конечные строки курсора

Функция 05h – Выбрать текущую видеостраницу AL – номер страницы

Прерывание 16h (клавиатура)

Функция 00h – Читать следующую нажатую клавишу Выход:

AH – Сканкод (или расширенный код ASCII,) AL – ASCII символ

Функция 01h – Проверить готовность символа (и показать его если так). Выход:

ZF=1 – символ не готов ZF=0 – символ готов

Функция 02h – Читать состояние shift-клавиш.

Выход: AL – статус клавиатуры:

 

 

 

bit 0

– правый Shift

bit 4

– режим ScrollLock

 

bit 1

– левый Shift

bit 5

– режим NumLock

 

bit 2

– Ctrl

bit 6

– режим CapsLock

 

bit 3

– Alt

bit 7

– режим Insert

 

 

 

 

 

Прерывание 21h (сервис DOS)

Вданном прерывании реализованы большинство сервисных функций, предоставляемых операционной системой MS DOS прикладным программам.

Здесь содержатся функции:

Консольного ввода – вывода информации.

Файлового ввода и вывода.

Работы с динамической памятью.

Работы с датой и временем.

и др.

Функции консольного вывода

Регистр

Операция

Дополнительные

 

AH

 

входные регистры

 

 

 

или данные

2h

Вывод символа с проверкой на

DL – ASCII код

 

 

Crtl-Break

символа

 

 

 

6h

Вывод символа без проверки на

DL – ASCII код

 

 

Crtl-Break

символа

 

 

 

9h

Вывод строки символов с

DS:DX – указатель на

 

 

проверкой на Ctrl-Break

строку. Символ

 

 

 

окончания строки: ‘$’

 

 

 

 

 

Функции консольного ввода

Регистр

Операция

Дополнительные

Выходные

 

AH

 

входные регистры или

регистры или

 

 

 

данные

данные

1h

Ввод символа с эхом и

 

AL – ASCII код

 

 

проверкой Ctrl-Break

 

символа

 

 

 

 

7h

Ввод символа без эха

 

AL – ASCII код

 

 

и без проверки Ctrl-

 

символа

 

 

Break

 

 

 

8h

Ввод символа без эха

 

AL – ASCII код

 

 

но с проверкой Ctrl-

 

символа

 

 

Break

 

 

 

Ah

Ввод строки

DS:DX – адрес буфера,

Второй байт –

 

 

 

первый байт буфера –

фактическая

 

 

 

длина буфера

длина буфера

 

 

 

 

 

 

Функции файлового ввода -

 

вывода

 

Входные данные

 

Выходные данные

 

 

 

 

 

Регистр

Операция

 

 

 

 

AH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3ch

Создать файл

 

DS:DX – имя файла ASCIIZ

 

AX – дескриптор

 

 

 

 

 

CX – атрибут файла

 

открытого файла.

 

 

 

 

 

 

 

Если CF установлен, то

 

5bh

Создать новый файл, файл

 

DS:DX – имя файла ASCIIZ

 

в AX – код ошибки

 

 

 

 

 

 

 

 

не должен существовать

 

CX – атрибут файла

 

 

 

 

 

 

 

 

 

 

 

 

3dh

Открыть файл

 

DS:DX – имя файла ASCIIZ

 

 

 

 

 

 

 

 

AL – режим открытия: 0 –

 

 

 

 

 

 

 

 

только чтение, 1 – только

 

 

 

 

 

 

 

 

запись, 2 – и чтение и запись

 

 

 

 

 

 

 

 

 

 

 

3eh

Закрыть файл

 

BX – дескриптор файла

 

AX – код ошибки, если

 

 

 

 

 

 

 

CF установлен

 

 

 

 

 

 

 

 

41h

Удалить файл

 

DS:DX – имя файла ASCIIZ

 

AX – код ошибки, если

 

 

 

 

 

 

 

CF установлен

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функции файлового ввода - вывода

Регистр

Операция

Входные данные

Выходные данные

 

AH

 

 

 

 

 

 

 

 

 

 

42h

Установить

BX – дескриптор файла

AX – код ошибки, если CF

 

 

указатель

CX:DX – новое смещение

установлен

 

 

 

AL: 0 от начала файла, 1 от

DX:AX – новая позиция,

 

 

 

текущей позиции, 2 от конца

если все нормально

 

 

 

файла

 

 

 

 

 

 

 

 

3fh

Читать из файла

BX – дескриптор файла

AX – код ошибки, если CF

 

 

 

DS:DX – адрес буфера

установлен, или

 

 

 

CX – количество байт

фактическое число байт

40h

Записывать в

 

 

 

 

файл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функции работы с памятью

Регистр

Операция

Входные данные

Выходные данные

 

AH

 

 

 

 

 

 

 

 

48h

Выделить блок

BX – количество

AX – сегментный адрес

 

 

памяти

параграфов

выделенного блока, или код

 

 

 

 

ошибки, если CF=1

 

 

 

 

BX – количество свободных

 

 

 

 

параграфов

49h

Освободить блок

ES – сегментный адрес

AX –код ошибки, если CF=1

 

 

памяти

освобождаемой памяти

 

 

 

 

 

 

4ah

Сжать или

ES – сегментный адрес

AX –код ошибки, если CF=1

 

 

расширить блок

изменяемого блока

BX – количество свободных

 

 

памяти

BX – количество

параграфов

 

 

 

параграфов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

Написать программу копирования файла. Программа запрашивает ввод имен исходного и целевого файлов. Осуществляет копирование данных из исходного файла в целевой файл.

Пример

.486

model small

Data SEGMENT use16 ASSUME ds: Data

mess1

db

'Source file name: ','$'

mess2

db

0dh, 0ah, 'Destination file name: ','$'

mess3

db

0dh, 0ah, 'Error open source file!$'

mess4

db

0dh, 0ah, 'Error create destination file!$'

mess5

db

0dh, 0ah, 'Read file error!$'

mess6

db

0dh, 0ah, 'Write file error!$'

file1

db

100, 100 dup(0)

file2

db

100, 100 dup(0)

hand1

dw

0

hand2

dw

0

buff

db

512 dup(?)

Data ENDS