Дисплей представляет собой модель внешнего устройства,
реализующую функции символьного дисплея. Дисплей может отображать символы, задаваемые ASCII-кодами, поступающими на его регистр данных.
Дисплей включает:
- видеопамять объемом 128 слов (ОЗУ дисплея);
- символьный экран размером 8 строк по 16 символов в строке;
- четыре программно-доступных регистра:
- DR (адрес 0) — регистр данных;
- CR (адрес 1) — регистр управления содержит следующие флаги (устанавливаются и сбрасываются программно):
- Е – флаг разрешения работы дисплея; при Е = 0 запись в регистры AR и DR блокируется;
- А – флаг автоинкремента адреса; при А = 1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру DR – по записи или чтению.
- SR (адрес 2) – регистр состояния содержит единственный флаг Err – ошибки устанавливается аппаратно при попытке записать
в регистр адреса число, большее 127, сбрасывается программно;
- AR (адрес 3) – регистр адреса.
Доступ в видеопамять осуществляется через «окно интерфейса» необходимо сначала загрузить в регистр адреса AR номер ячейки видеопамяти, тогда обращение к регистру данных будет означать обращение (ввод или вывод) к ячейке видеопамяти с указанным адресом.
Контроллер дисплея выполняет две команды при выводе соответствующих кодов по адресу 1:
Десятичное число | Команда |
101 |
очистить дисплей (действие команды эквивалентно нажатию кнопки Очистить в окне Дисплей), при этом очищается видеопамять (в каждую ячейку записывается код пробела — 032), устанавливается в 000 регистр адреса AR и сбрасываются флаги ошибки Err и автоинкремента А; |
102 |
сбросить флаг ошибки Err в регистре SR. |
Пример простой программы, выводящей на дисплей (в начало экрана) слово «Май»:
Метка | Команда | Примечание |
| RD #11 | ; включаем дисплей и устанавливаем |
| OUT 11 | ; флаг автоинкремента; |
| RD #0 | ; задаём начальный адрес |
| OUT 13 | ; выводимого слова; |
| RD #204 | ; ввод кода буквы «М» |
| OUT 10 | ; вывод на дисплей |
| RD #224 | ; ввод кода буквы «а» |
| OUT 10 | ; вывод на дисплей |
| RD #233 | ; ввод кода буквы «й» |
| OUT 10 | ; вывод на дисплей |
| HLT | |
Ещё один пример программы, выставляющей в начало каждой строки её номер:
Метка | Команда | Примечание |
| RD #10 | ; включаем |
| OUT 11 | ; дисплей; |
| RD #0 | ; задаём начальный |
| WR R1 | ; адрес вывода; |
| RD #49 | ; вводим код |
| WR R2 | ; цифры «1»; |
| RD #8 | ; вводим число |
| WR R3 | ; повторений цикла; |
M1: |
RD R1 | ; читаем текущий адрес |
| OUT 13 | ; и передаём в регистр адреса дисплея; |
| ADD #16 | ; увеличиваем адрес
на 16 – на начало следующей строки; |
| WR R1 | ; сохраняем изменённый адрес; |
| RD R2 | ; читаем код цифры – номер строки; |
| OUT 10 | ; передаём код цифры на дисплей; |
| RD @R2+ | ; увеличиваем
содержимое R2 (код цифры) на единицу; |
| JRNZ R3,M1 |
; декремент R3 и переход на начало цикла, если R3 ≠ 0; |
| HLT | |
© Жмакин Анатолий Петрович (Курский государственный
университет). anatoly.zhmakin@gmail.com