Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 5 ВМС.doc
Скачиваний:
11
Добавлен:
07.11.2018
Размер:
1.42 Mб
Скачать

Лабораторная работа 5 Использование средств bios на языке Ассемблер

С помощью Ассемблера выполнить следующие задания, используя прерывания BIOS int 10h и int 16h.

ЗАДАНИЕ

1

Ввести символьный массив, отсортировать и вывести на экран.

2

Ввести символьный массив, и вывести на экран встречающиеся в нем буквы по алф.

3

Ввести символьный массив, и вывести на экран отдельно гласные и согласные

по алфавиту

4

Ввести символьный массив, и вывести на экран отдельно гласные и согласные

в том порядке, как они встречаются.

5

Ввести символьный массив, и вывести на экран буквы в порядке убывания частоты

встречаемости.

6

Ввести символьный массив, и вывести на экран, и вывести его в обратном порядке.

7

Ввести символьный массив, и вывести на экран буквы в порядке возрастания частоты встречаемости.

8

Ввести символьный массив, и вывести на экран его анаграмму (перемешать буквы).

9

Ввести символьный массив, и вывести на экран по словам, выводя каждое слово разным цветом.

10

Ввести символьный массив, и вывести на экран содержащиеся в нем слова в столбик.

11

В графическом режиме нарисовать замкнутый многоугольник, пользуясь курсорными клавишами.

12

В графическом режиме нарисовать произвольную кривую, пользуясь курсорными клавишами.

13

В графическом режиме нарисовать множество пикселов на экране, пользуясь курсорными клавишами.

14

В графическом режиме заполнить экран произвольными символами, пользуясь курсорными клавишами.

15

В графическом режиме отредактировать содержимое экрана, вставляя или стирая пиксели и пользуясь курсорными клавишами.

16

В графическом режиме нарисовать геометрическую фигуру и вывести надпись, пользуясь курсорными клавишами.

17

В графическом режиме нарисовать схематическое изображение кошки, пользуясь курсорными клавишами.

18

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

19

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

20

В графическом режиме нарисовать схематическое изображение самого себя, пользуясь курсорными клавишами.

Краткие сведения о прерываниях bios

Перед вызовом соответствующей функции необходимо занести передаваемые ей параметры в требуемые регистры. В частности, код функции заносится в регистр AH, а код подфункции – в регистр AL. Результат выполнения функции также заносится в регистры. Например, чтобы поместить код символа, вводимого с клавиатуры, в переменные scancod и asciicod, необходимо задать в регистре AH код функции 00, выполнить команду прерывания INT с параметром 16h, а затем извлечь информацию из регистров AH (скен-код символа) и AL (ascii-код символа), и перемеcтить их в память для переменных :

……………………………………………………………………………………………………

mov ah,0

int 16h

mov scancod,ah

mov asciicod,al

……………………………………………………………………………………………………

Опишем сразу остальные функции прерывания 16h:

Функция 01h. Получение состояния клавиатуры. Возвращает состояние буфера без извлечения из него символа.

Вход: AH=01h.

Выход: если буфер пуст, флаг ZF=1;

если в буфере есть ожидающие символы, то ZF=0, а скен- и ascii- коды символа находятся в регистрах AL и AH, как и для функции 00.

Функция 01h. Получение флагов клавиатуры. Возвращает байт состояния управляющих клавиш.

Вход: AH=02h.

Выход: AL=флаги. Биты байта флагов имеют следующие значения:

0 – нажата левая клавиша Shift

1 – нажата правая клавиша Shift

2 – нажата клавиша Ctrl

3 – нажата клавиша ALT

4 – включён режим Scroll Lock

5 – включён режим Num Lock

6 – включён режим Caps Lock

7 – включён режим Insert

Функции прерывания 10h (функции видеорежимов).

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

Вход: AH=00h

AL=видеорежим.

03h – текстовый, 80x25, 16 цветов

12hграфический, 640х480, 16 цветов (VGA)

12hграфический, 320х200, 256 цветов (VGA)

Функция 02h.Установка позиции курсора.

Данная функция работает как в текстовом, так и в графическом режимах. Однако, в графическом режиме курсор не виден.

Вход: AH=02h

BH=номер видеостраницы (0–3)

DH=номер видеостроки (строки в текстовом режиме нумеру-

ются снизу вверх от 1, строки в графическом режиме нумеруются

сверху вниз от 0.)

DL=номер видеостолбца

Функция 09h.Запись символа и атрибута в позицию курсора.

Данная функция также работает как в текстовом, так и в графическом режимах.

Вход: AH=09h

AL=символ

BH=номер видеостраницы

BL=атрибут (текстовый режим), или цвет (графический реж.)

CX=коэффициент повторения

В текстовом режиме каждый символ, выводимый на экран, задаётся двумя байтами: байтом кода и байтом атрибута. Байт атрибута содержит информацию о цвете и яркости фона и символа в виде irgbIRGB, где irgb – биты яркости, красного, зелёного и синего цветов для фона, а IRGB соответственно – для символа. В графическом режиме код цвета представляет номер цветового регистра палитры, в котором содержится подробная информация по воспроизведению заданного цвета.

Функция 09h. Запись пиксела в заданную графическую позицию.

Вход: AH=0ch

AL=цвет

BH=номер видеостраницы

CX=графический столбец

DX=графическая строка

53