Практические работы для 10 класса (по учебнику К.Ю. Полякова, Е.А. Еремина)



Практическая работа № 13
«Процессор и устройства вывода»





Для выполнения этих работ используется учебный компьютер «ЛамПанель», который можно загрузить со страницы https://kpolyakov.spb.ru/prog/lamp.htm.



Возможности программы «ЛамПанель»

Наконец, мы подошли к самой интересной возможности программы «ЛамПанель» - управлению ламповой панелью. Ламповая панель (цифра 1 на рисунке) – это устройство вывода.

ЛамПанель

Обмен данными процессора и внешнего устройства происходит через порты – регистры контроллера внешнего устройства. У ламповой панели 8 портов, которые называются P0, P1, P2, P3, P4, P5, P6 и P7. Каждый порт «отвечает» за одну строку лампочек, например, для того, чтобы «зажечь» всю верхнюю строку нужно записать в порт P0 код FFFF16 (все 16 бит – единичные). Для этого можно использовать, например, команды

MOV FFFF, R0

OUT R0, P0


К сожалению, записать число сразу в порт нельзя – сначала нужно записать его в регистр (в данном примере – в R0), а потом – из регистра в порт.

Для того, чтобы изменить второй сверху ряд лампочек, нужно записать новое значение в P1 и т.д.; последний ряд управляется портом P7. Например, для того, чтобы все ряды лампочек горели одинаково, можно записать нужный код сначала в регистр:

MOV AAAA, R0


а затем из этого регистра – во все порты:

OUT R0, P0

OUT R0, P1

OUT R0, P7


Здесь многоточие обозначает аналогичные команды записи содержимого регистра R0 в порты P2…P6. Однако вместо последней серии из 8 команд можно использовать всего одну:

SYSTEM 2


Эта команда вызывает системную процедуру с номером 2, находящуюся в ПЗУ компьютера. Для того, чтобы увидеть все процедуры, которые записаны в ПЗУ, нужно щелкнуть по кнопке или выбрать пункт верхнего меню Программа – Просмотр ПЗУ. После этого появляется окно, в левой части которого перечислены все системные процедуры (с их номерами), а в правой части показывается код выбранной процедуры:

В этом списке есть много полезных процедур, в том числе

0 – очистка экрана (погасить все лампочки);

1 – зажечь все лампочки на панели;

3-4 – прокрутка изображения вниз и вверх;

6-9 – логические операции;

A16-E16 – сдвиги битов;

1216 – вывод числа, записанного в регистр R0, в десятичной системе счисления;.

1316 – вывод числа, записанного в регистр R0, в шестнадцатеричной системе счисления.

Обратите внимание, что номер системной процедуры задается в шестнадцатеричной системе счисления.

Рассмотрим еще одну задачу: вывести на экран рисунок, закодированный в виде шестнадцатеричных чисел (бит, равный единице, обозначает горящую лампочку). Для этого нужно сначала записать коды рисунка в память. Поскольку наш компьютер основан на архитектуре фон Неймана, в нем программа и данные находятся в одной области памяти. Поэтому данные можно записать с помощью специальной команды DATA после команды STOP:

...          ; здесь будет программа
STOP         
M:           ; метка – начало блока данных
  DATA AAAA  ; код первой строчки 
  DATA 5555
  DATA AAAA
  DATA 5555
  DATA AAAA
  DATA 5555
  DATA AAAA
  DATA 5555  ; код последней строчки

Для того, чтобы вывести этот рисунок на экран, нужно записать его адрес в регистр R0 и вызвать системную процедуру с номером 5:

MOV @M, R0 ; записать адрес метки M в регистр R0

SYSTEM 5 ; вывести на экран рисунок, адрес которого в R0

STOP

M:

DATA AAAA ; код первой строчки

...


Задание на практическую работу


1. Запишите в таблицу минимальное и максимальное числа, которые можно вывести на ламповую панель, если использовать шестнадцатеричную систему:

2. Составьте программу, после выполнения которой ламповая панель выглядит так:

Программа:

3. Как вы думаете, что выведет приведенная выше (в теоретической части) программа, которая вызывает системную процедуру с номером 5? Проверьте ваш ответ с помощью тренажёра.

Ответ:

4. Закодируйте изображение домика и выведите его на экран.

Программа:

5. Добавьте в предыдущую программу команды, которые сначала шифруют изображение, используя операцию «исключающее ИЛИ» с маской BCA716, а затем – восстанавливают исходное изображение. При изменении маски программа не должна изменяться. Изучите текст системной процедуры, которую вы используете.

Программа:

6. Напишите программу, которая делает «бегущую строку» из рисунка-домика.

Программа:

7. Напишите программу, которая организует «обратный отсчет» от 100 до 0, а затем выводит рисунок с домиком и останавливается.

Программа:







Наверх