Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88

Инициализация и прокрутка окна вверх

Выводит окно с заданными координатами путем вывода пробелов с заданным атрибутом или прокручивает содержимое окна вверх на заданное число строк. Работает только с активной видеостраницей.

При вызове: АН = 06h;

AL - число строк прокрутки; если AL = О, окно очищается; ВН - атрибут;

СН - координата Y верхнего левого угла; CL - координата X верхнего левого угла; DH - координата Y нижнего правого угла; DL - координата X нижнего правого угла.

Инициализация и прокрутка окна вниз

Выводит окно с заданными координатами путем вывода пробелов с заданным атрибутом или прокручивает содержимое окна вниз на заданное число строк. Работает только с активной видеостраницей.

При вызове: АН = 07h;

AL - число строк прокрутки; если AL = О, окно очищается; ВН - атрибут;

СН - координата У верхнего левого угла; CL - координата X верхнего левого угла; DH - координата У нижнего правого угла; DL - координата X нижнего правого угла.

lOh (подфункция 03h)

Переключение бита "мерцание-яркость"

Задает функциональное назначение старшего разряда кода атрибута.

При вызове: АН = lOh; AL = 03h;

- назначение старшего бита кода атрибута:

0 - яркость фона,

1 - мерцание символа.

Установка позиции курсора

Устанавливает курсор в заданную позицию на указанной странице.

При вызове: АН = 02h; ВН - страница; DH - строка; DL - столбец.

Определение позиции курсора

Определяет положение курсора на указанной странице.

При вызове: АН = 03h; ВН-страница.

При возврате: СН - первая строка развертки курсора; CL - последняя строка развертки курсора; DH - строка текущей позиции курсора; DL - столбец текущей позиции курсора.

05h .........................................................................................

Переключение видеостраниц

Задает активную видеостраницу.

При вызове: АН = 05h; AL - страница.



Ассемблер в задачах защитъ! информацт

Вывод строки символен Записывает строку на текущую страницу, начиная с указанной позиции. При выводе кодов управляющих символов выполняются соответствующие им действия.

При вызове: АН = 13h; AL - режим:

0 - атрибут в BL, строка содержит только коды символов, курсор не смещается посх записи;

1 - атрибут в BL, строка содержит только коды символов, курсор смещается после записи;

2 - строка содержит чередующиеся коды символов и атрибутов, курсор не смещается после записи;

3 - строка содержит чередующиеся коды символов и атрибутов, курсор смещается после записи;

ВН - страница;

СХ - длина строки символов без учета байтов атрибутов; DH - номер строки; DL - номер столбца; Е S : BP- адрес строки.

Воспользовавщись знанием логической структуры видеобуфера (рис. 1.2.8), можно вывести текст на экран с помощью команд пересылки данных (например MOVS), не прибегая ни к каким системным функциям.

12.11. Программирование портов ввода-вывода

Как уже отмечалось в разделе 1.1, ЦП и память взаимодействуют с внешними устройствами (или УВВ) через порты ввода-вывода (ВВ). Типы портов ВВ:

порты ВВ для буферирования входных и выходных данных;

порты ВВ для хранения информации о состоянии ИБ и УВВ (см. рис. 1.1.1), так называемые регистры-состояния; опрашивая эти регистры, профамма узнает, что ИБ или УВВ имеет данные для ввода в процессор или готово принимать данные из процессора:

Ш порты ВВ для восприятия приказов (примеры приказов: EOI - сброс "самой приорИ" тетной" " 1" в регистре 1SR контроллера прерываний, BSR - установка/сброс разрядов в БИС параллельного периферийного адаптера).

Глава 1 • Основы программирования на Ассемблере IBM PC 69

Взаимодействие с портами осуществляется командами ввода-вывода IN и OUT, которые обеспечивают передачу байта или слова. Операндом-приемником в команде ввода IN и операндом-источником в команде вывода OUT могут быть только регистр AL (при передаче байта) или АХ (при передаче слова). Программный ВВ заключается в непрерывной проверке состояния ИБ или УВВ и выполнении операций чтения при обнаружении состояния наличия данных для ввода в процессор и операций вывода при обнаружении состояния готовности принимать данные от ЦП.

На рис. 1.2.9 показана типичная структура ИБ при выполнении операций параллельного ввода-вывода. В состав ИБ входят два порта ВВ первого типа: порт ввода (буфер-НЬ1Й регистр входных данных и буфер с третьим состоянием для подключения к двунаправленной шине данных DB) и порт вывода (буферный регистр выходных данных); порт ВВ второго типа (регистр состояния и буфер с третьим состоянием для подключения к двунаправленной шине данных). Селектор адреса, анализирует код на шине адреса АВ и при обнаружении адресов регистра входных данных, регистра выходных данных или регистра состояния (соответственно АО, Al к А2) вырабатывает единичный сигнал на одном из одноименных своих выходов. В режиме DMA работа селектора адреса блокируется сигналом AEN. Блок управления обеспечивает формирование сигналов записи в регистр выходных данных и чтения регистра входных данных, а также переключение битов готовности к вводу ( OBF - Output Buffer Full) и выводу {IBF - Input Buffer Full) регистра состояний.

На рис. 1.2.9 показаны также входные и выходные сигналы УВВ:

DI (Data Input) - байт данных (входные данные для ЦП) с выхода УВВ;

STB (Strobe) - сигнал стробирования байта DI;

DO (Data Output) - байт данных (выходные данные ЦП) на входе УВВ;

C(Acknoledge) - сигнал подтверждения приема данных с выхода УВВ;

а также сигнал RES (Reset) системного сброса.



Ассемблер в задачах защить1 информаци


Г11-

Р„с1а9.С.рукгура.и.ерфеОсноаоблока,ИВ,приз.,полиеиииоперациОпараллельногоззода

Логические вьфажения для сигналов чтения регистра входных данных, чтения Р-стра соояни! и записи в регистр выходнь.х данных имеют вид.

Глава 1 • Основы программирования на Ассемблере IBM PC 71

RdByteIn = AO&I(M,

RdStatus = A2&IOR,

WrByteOut = A\SLlOW.

Логические выражения сигналов установки и сброса разрядов готовности регистра

состояний:

SetRdyIn = STB,

SetRdyOut = WrByteOut,

ResetRdyIn - RdByteIn + Res,

ResetRdyOut = Ack + Res. При/мер

==== Ввод строки байтов длиной не более InBufSize в буфер InBuf, ==

==== строка заканчивается при обнаружении символа ODh. ============

==== При переполнении буфера выводится сообщение Mess. ==========

==== Rdyin - байт, содержащий 1 в разряде OBF , ==== ==== RdyOut - байт, содержащий 1 в разряде IBF. ====

InBuf DB Mess DB MessLen = $ Count DW

les mov mov

InBufSize+2 DUP (?) Buffer overflow !, ODh, OAh Mess

di, InBuf Count, di cx, InBufSize+1

NextlnByte: mov

Ячейка для хранения фактической длины строки

ES: DI -> InBuf

Максимальное число повторений операции ввода байта Движение по строке в сторону старших адресов

dx, А2

test jz

=== Про верк.

Адрес регистра состояния

готовности ко вводу ===

al, dx al, RdyIn

CheckRdyIn

; Чтение регистра состояния ; Проверка разряда готовности

; Повторять до обнаружения OBF = 1



0 1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88