Программа Лампанель Тема: Вывод данных Программа-тренажёр «ЛамПанель» – это учебная модель компьютера, который управляет панелью лампочек. Тренажёр можно использовать: •для изучения принципов работы компьютера (процессор, ОЗУ, ПЗУ); •для начального изучения программирования на языке ассемблера; •для изучения операций с целыми числами, в том числа поразрядных логических операций и сдвигов Модель компьютера включает процессор, оперативную память (ОЗУ), постоянную память (ПЗУ) и устройство вывода – панель лампочек размером 8×16. Для демонстрации через проектор можно вывести увеличенную панель, нажав клавишу F10. Программа для такого процессора составляется на языке ассемблера, в котором каждая символьная команда соответствует одной (числовой) команде процессора. Программа набирается в окне «Программа». Программу можно сохранять в виде файла на диске, а потом загружать в память из файла (с помощью меню «Файл»). При запуске (по клавише F9) набранная программа транслируется (переводится в машинные коды, которые появляются в окне «Отладчик») и начинается ее выполнение. Процессор имеет 4 регистра общего назначения (РОН), которые называются R0, R1, R2 и R3. Кроме того, есть еще три внутренних регистра, недоступные программисту (но видимые в окне программы): PC (англ. program counter) – программный счетчик, счётчик команд, указывающий на следующую выполняемую команду; SP (англ. stack pointer) – указатель стека, адрес вершины стека; стек размещается в нижней части оперативной памяти, его содержимое можно просмотреть в нижней части окна «Данные в памяти»; PS (англ. processor state) – регистр состояния процессора; используются только три младших бита: 0 – бит N (англ. negative, отрицательный результат), 1 – бит Z (англ. zero, нулевой результат) и 2 – бит C (англ. carry, перенос). В качестве устройства вывода используется панель лампочек размером 8×16. Каждый ряд лампочек управляется через отдельный порт вывода. Всего используется восемь 16-разрядных портов с именами P0, P1, P2, P3, P4, P5, P6 и P7. Постоянное запоминающее устройство (ПЗУ) предназначено для хранения системных подпрограмм. Код ПЗУ загружается при старте программы из текстового файла, поэтому пользователь может изменять содержимое ПЗУ: добавлять, удалять и изменять любые процедуры. Отладка Программу можно выполнить всю целиком (клавиша F9) или в пошаговом режиме (F8). В пошаговом режиме в окне отладчика зелёным цветом выделяется текущая строка, которая будет выполнена при следующем нажатии F8. Сочетание клавиш Ctrl+F8 позволяет отменить только что сделанную команду. Клавиша F7 (вместо F8) позволяет войти в подпрограмму и выполнить ее пошагово. Если установить курсор в какую-то строчку программы и нажать клавишу F4, программа будет выполняться до этой строчки и затем остановится. Движок «Скорость» изменяет скорость выполнения программы. Все команды отладки включены в меню «Программа». Кроме того, они могут выполняться с помощью кнопок панели инструментов: Трансляция в машинные коды без выполнения (Ctrl+F9). Трансляция и выполнение (F9). Выполнить один шаг (F8). Отменить один шаг (Ctrl+F8). Войти в подпрограмму (F7). Выполнить до курсора (F4). С помощью меню «Регистры» можно изменить значения любого регистра во время выполнения программы в пошаговом режиме. Вывод данных Обмен данными процессора и внешнего устройства происходит через порты — регистры контроллера панели. У ламповой панели 8 портов, которые называются P0, P1, P2, P3, P4, P5, P6 и P7 Каждый порт “отвечает” за одну строку лампочек; например, для того чтобы “зажечь” всю верхнюю строку, нужно записать в порт P0 код FFFF16 (все 16 бит — единичные, все лампочки горят). Для этого можно использовать, например, команды MOV FFFF, R0 OUT R0, P0 ; запись значения R0 в порт P0 К сожалению, записать число сразу в порт нельзя — сначала нужно записать его в регистр общего назначения (в данном примере — в R0), а потом — из регистра в порт. Для того чтобы изменить второй сверху ряд лампочек, нужно записать новое значение в P1 и т.д.; последний ряд управляется портом P7. Например, для того чтобы все ряды лампочек горели одинаково, можно сначала записать нужный код в регистр: MOV AAAA, R0 а затем из этого регистра — во все порты: OUT R0, P0 OUT R0, P1 … OUT R0, P7 Здесь многоточие обозначает аналогичные команды записи содержимого регистра R0 в порты P2…P6. Однако вместо последней серии из восьми команд можно использовать всего одну: SYSTEM 2 Эта команда вызывает системную подпрограмму с номером 2, находящуюся в постоянном запоминающем устройстве (ПЗУ) компьютера. Так же, как и у реального компьютера, ПЗУ — это неизменяемая область памяти, то есть после запуска компьютера ЛамПанель изменить содержимое ПЗУ нельзя. Для того чтобы увидеть все подпрограммы, которые записаны в ПЗУ, нужно щелкнуть по кнопке или выбрать пункт верхнего меню Программа — Просмотр ПЗУ. После этого появляется окно, в левой части которого перечислены все системные подпрограммы (с их номерами), а в правой части показывается текст выбранной подпрограммы и ее машинные коды: В этом списке есть много полезных подпрограмм для работы с ламповой панелью, в том числе 0 — очистка экрана (погасить все лампочки); 1 — зажечь все лампочки на панели; 3–4 — прокрутка изображения вниз и вверх; 6–9 — логические операции; A16–E16 — сдвиги битов; 1216 — вывод числа, записанного в регистр R0, в десятичной системе счисления; 1316 — вывод числа, записанного в регистр R0, в шестнадцатеричной системе счисления. Обратите внимание, что номер системной подпрограммы задается в шестнадцатеричной системе счисления. Щелкнув мышкой на названии подпрограммы в левой части окна, мы увидим в правой части ее содержимое и комментарии, объясняющие, в каких регистрах должны быть расположены параметры подпрограммы и как она возвращает значения результаты. Практическая Задание 1 часть 1.Расписать, что обозначает каждая строка программы 2. Запустить на выполнение и сделать скрин результата Задание 2 Использование оператора системных подпрограмм 1.Расписать, что обозначает каждая строка программы в окне подпрограммы ПЗУ 2. Запустить на выполнение и сделать скрин результата 3. Используя оператор системных подпрограмм очистить ламповую панель 4. Расписать, что обозначает каждая строка программы в подпрограммы ПЗУ 5. Запустить на выполнение и сделать скрин результата Задание 3 1.Расписать, что обозначает каждая строка программы в окне Подпрограмма ПЗУ 2. Запустить на выполнение и сделать скрин результата Задание 4 1.Расписать, что обозначает каждая строка программы в окне Подпрограммы ПЗУ (10,11,12,13) 2. Запустить на выполнение и сделать скрин результата 3. Изменить значение строки mov 1, R1 на mov 0, R1 4. Запустить на выполнение и сделать скрин результата 5. Изменить значение строки mov 1, R1 на mov 0, R1 6. Запустить на выполнение и сделать скрин результата 7.Выполнить 11 подпрограмму 8.Запустить на выполнение и сделать скрин результата 9.Выполнить 12 подпрограмму 10.Запустить на выполнение и сделать скрин результата 11.Выполнить 13 подпрограмму 12.Запустить на выполнение и сделать скрин результата Задание 5 Вывод картинки из оперативной памяти 1.Расписать, что обозначает каждая строка программы в окне Подпрограмма ПЗУ 2. Запустить на выполнение и сделать скрин результата Cамостоятельное задание Составьте программу, после выполнения которой ламповая панель выглядит так, двумя способами: