Перекодирование информации

 

Одной из наиболее распространенных задач в составе общего программного обеспечения любой ЭВМ являются программы преобразования данных из числовых форматов в символьные для вывода на устройства отображения и обратно при вводе числовой информации. При этом активно используются команды логических операций и сдвига. Рассмотрим задачу преобразования байта (целого без знака числа) в пару байтов кодов символического кодирования КОИ-7, отражающих содержимое двух тетрад исходного числа в виде сим­волов соответствующих шестнадцатеричных цифр. Пусть исходное число записано в регистре D, а коды К0И-7 для старшей и младшей тетрады нужно получить в регистрах В и С соответственно.

 

Подпрограмма:

PR: CPI 0АН; сравнение содержимого А с числом: (А)-0АН

JNC M1 ; переход в случае отсутствия заёма на M1 (буквы)

ORI 30H ; формирование кода КОИ-7 арабской цифры
RET ; возврат

М1: ADI 37Н ; формирование кода КОИ-7 букв от А до F

RET ; возврат

 

Основная программа:

MOV A,D ; в регистр А исходное число

ANI 0F0H ; обнуление младшей тетрады

RAR ;

RAR ; перемещение старший тетрады

RAR ; вправо на место младшей (на 4 разряда)

RAR ;

CALL PR ; вызов подпрограммы преобразования тетрады

MOV B,A ; запись кода символа старшей тетрады

MOV A,D ; в регистр А снова исходное число

ANI 0FH ; очистка старшей тетрады

CALL PR ; вызов подпрограммы преобразования тетрады

MOV C,A ; запись кода символа младшей тетрады

HLT ; останов

 

Идея алгоритма приведенной выше программы состоит в выделении в подпрограмму задачи преобразования байта, где левая тетрада содержит нули, а число в правой тетраде может быть заменено символом арабской цифры от 0 до 9 или символом латинской буквы от А до F. Из основной программы обращение к подпрограмме осуществляется в первый раз для преобразования левой тетрады исходного числа, а второй раз – для преобразования правой тетрады.

 

3 Эмулятор микроЭВМ СМ-1800

Постановка задачи эмуляции

Эмуляция включает в себя следующие технические задачи:

1. Разработку иерархической модели эмулируемого устройства,

2. Полную программную реализацию всех модулей и внутренних узлов эмулируемого устройства, включая связи между отдельными модулями,

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

4. Реализацию схемы функционирования всего устройства в целом,

5. Реализацию системы мониторинга отдельных физических модулей или всего устройства,

6. Реализацию системы контроля и управления эмулятором.

 

Эмуляция включает в себя следующие оптимизационные задачи:

1. Соответствие точности и качества эмуляции заданным требованиям,

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

3. Соответствие уровня эмуляции работе, которая будет производиться на эмуляторе. Уровень может быть: функциональный, программный, аппаратный и физический. Естественно, самая качественная эмуляция будет обеспечена, если устройство эмулируется на физическом уровне.

 

Технические данные

 

1. Минимальный эмулируемый интервал: 1/2 машинного цикла,

2. Эмулируемые модули:

2.1 Модуль центрального процессора (МЦП),

2.2 Микропроцессор КР580ИК80А[1],

2.3 Модуль системного контроля,

2.4 Пульт контроля и управления (ПКУ),

2.5 Модуль связи с пультом контроля и управления,

2.6 Выносной пульт с элементами коммутации и индикации,

2.7 Видеотерминал алфавитно-цифровой (ВТА 2000-30)

2.8 Клавиатура,

2.9 Модуль оперативной памяти 64Кб (МОЗ),

2.10 Модуль теневой памяти 3Кб, включая системное ПЗУ 2Кб,

2.11 Порты ввода 00h, 01h, и др.

2.12 Порты вывода 00h, 01h, 03h, и др.

2.13 Внутрисистемный интерфейс И41.

2.14 Таймер.

2.15 Система обработки приоритетных прерываний.

3. Скорость работы: ~500000 циклов в секунду,

4. Возможность настройки: есть

4.1 Регулировка яркости экрана ВТА,

4.2 Доступны переключатели, расположенные на задней панели ВТА – фиксированный формат (ФФ) и частичный сдвиг (ЧСВ),

4.3 Реакция эмулятора при обработке несуществующих команд микропроцессора,

4.4 Частота обновления экрана: через 1…9999 циклов,

5. Возможность мониторинга отдельных модулей: есть

5.1 Мониторинг состояния микропроцессора и системных шин,

5.2 Мониторинг дампа памяти с возможностью переключения между основной памятью и теневой памятью, расположенной в модуле центрального процессора.

6. Возможность управления работой эмулятора: есть

6.1 Возможные состояния эмулятора:

Работа с максимальной скоростью (~500000 циклов/сек.),

Работа с фиксированной медленной скоростью (20 циклов/сек.),

Трассировка в пошаговом режиме,

7. Возможность расширения и доработки: есть

 

Описание программы

 

Внешний вид программы эмулятора выполнен в стиле оригинальной микроЭВМ СМ-1800; панели эмулятора на экране схожи по внешнему виду с передними панелями соответствующих устройств СМ-1800. Это позволяет перейти от работы на оригинальной СМ-1800 к работе с эмулятором без дополнительного обучения.

Сразу после запуска программы на экране проявляются четыре основных окна: видеотерминал алфавитно-цифровой (ВТА 2000-30), пульт контроля и управления (ПКУ), клавиатура и главное меню. По умолчанию все окна привязаны друг к другу; перемещение по экрану всех трёх окон происходит одновременно при перетаскивании окна главного меню. Назначение пунктов меню приведено ниже:

 

Главное меню

 

После названия каждого из пунктов в скобках указана комбинация “горячих» клавиш для быстрого доступа к пункту меню.

Подменю “Файл”.

Пункты “Открыть/сохранить состояние” (Ctrl+Alt+L Ctrl+Alt+S) позволяют сохранить на диске состояние всего эмулятора целиком и, затем, восстановить его в том же виде, для продолжения работы (файл *.cms).

Пункты “Открыть/сохранить дамп памяти” (Alt+L Alt+S) позволяют сохранить слепок оперативной памяти на диске и загрузить сохранённый файл в оперативную память эмулятора (файл *.cmd). Работа производится только с содержимым оперативной памяти модуля МОЗ, сохранение и загрузка содержимого памяти модуля центрального процессора МЦП происходит при запуске эмулятора.

Пункт “Выход” (Alt+F4) завершает работу эмулятора.

 

Подменю “Эмулятор”.

Позволяет управлять работой эмулятора.

Пункт “Перезапуск эмулятора” (Ctrl+Alt+F12) вызывает полный рестарт и последующую инициализацию приложения.

Пункты “Сброс…” и “Инициализация…” (Ctrl+F8…F12) позволяют повторно проинициализировать отдельные модули СМ-1800 без перезапуска всего эмулятора.

Пункты “Приостановить работу” (F10), “Трассировать шаг” (F11) и “Продолжить работу” (F12) изменяют состояние работы эмулятора. Очень удобно использовать в отладочных целях “горячие” клавиши.

Пункт “Скорость эмуляции” позволяет произвести переключение между максимальной (F8) и медленной (F7) скоростью эмуляции.

 

Подменю “Показать”.

Позволяет показать/скрыть любую из форм эмулятора (F1…F6).

Пункт “Расположить окна компактно” (Alt+Enter) размещает все окна на экране по умолчанию: одну под другой от левого верхнего угла экрана, для удобства восприятия информации.

 

Подменю “Лабораторные работы”.

Позволяет перевести эмулятор в один из следующих режимов: выполнение лабораторных работ (Shift+F1…F4), решение задач на языке ассемблера (Shift+F5), или обычный режим работы (Shift+F6).

 

 

Подменю “Конфигурация”.

Позволяет включить/отключить привязку отдельных окон на экране (Ctrl+Alt+F1…F4).

Пункт “Настройки” (Alt+F2) позволяет произвести дополнительную настройку эмулятора: реакцию на недокументированные команды микропроцессора, режимы работы ВТА, вид переключателей ПКУ, частоту обновления форм эмулятора, и др. Есть возможность установки значений по умолчанию.

 

Подменю “О программе”.

Пункт “Помощь” (Ctrl+F1) позволяет получить справку по работе с эмулятором.

Пункт “Эмулятор СМ-1800” (Alt+F1) выводит на экран информацию о программе.

Основные окна

“Видеотерминал алфавитно-цифровой (ВТА)”

Окно представляет собой полную визуальную копию оригинального видеотерминала ВТА 2000-30. Обмен информацией с модулем ВТА производится в стандартной кодировке КОИ-7 (коды 00h…7Fh) через порт ввода 00h и порты вывода 00h и 01h.

 

“Пульт контроля и управления (ПКУ)”

Окно представляет собой полную визуальную копию оригинального пульта с элементами коммутации и индикации. Используется для просмотра управляющих сигналов микропроцессора и управления аппаратными ресурсами СМ-1800.

 

“Клавиатура”.

Окно представляет собой полную визуальную копию клавиатуры СМ-1800. Нажатия на клавиши производятся с использованием манипулятора “мышь”. Отдельные клавиши (СПС, УС и ПВТ) обладают триггерным эффектом для эмуляции их удержания. Нажатия почти всех клавиш могут также эмулироваться и с помощью стандартной клавиатуры компьютера (см. приложение 1).

Дополнительные окна

 

“Состояние микропроцессора”.

В этом окне можно увидеть состояния всех регистров и управляющих сигналов микропроцессора, а также информацию, проходящую по шинам адреса и данных. Состояние окна обновляется в конце каждого цикла микропроцессора.

 

“Дамп памяти”.

В этом окне отображается содержимое модуля оперативной памяти. Кнопки «Hex» и «Dec» позволяют переключать систему счисления (шестнадцатеричная/десятичная), а кнопка «Теневая память» - просматривать модуль теневой памяти (3Кб). Её содержимое будет отображаться в окне вместо первых трёх килобайт основной оперативной памяти.

 

“Дизассемблер”.

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

 

Окно настроек эмулятора.

В этом окне отображаются дополнительные настройки эмулятора. Возможно изменение следующих параметров:

1. Действие эмулятора при обработке недокументированных команд микропроцессора - пропустить команду, выполнить команду так, как её выполняет реальный микропроцессор или выдать сообщение об ошибке,

2. Вид переключателей ПКУ – обычный или в виде кнопок с битовой маркировкой,

3. Режимы работы видеотерминала (ВТА): ФФ – включение режима фиксированного формата, ЧСВ – включение режима частичного сдвига строк,

4. Яркость экрана ВТА – изменяется в пределах 0…150%,

5. Количество циклов микропроцессора, после которых эмулятор обновляет экран, – может варьироваться от 1 (скорость работы эмулятора – минимальная) до 9999 (скорость – максимальная). Необходимо подобрать такую частоту обновления, чтобы скорость эмуляции составляла ~500000 циклов/сек.

Есть возможность установки стандартных настроек – кнопка «Стандартные настройки».

 

Сообщения эмулятора

 

В нижней части окна видеотерминала находится строка состояния эмулятора. Слева – текущее состояние работы, справа – число циклов, выполняемое эмулятором за секунду (должно быть ~500000).

В нижней части окна ПКУ находится информационная строка эмулятора. В эту строку отправляются сообщения, генерируемые эмулятором при наступлении различных событий, например, «Останов по адресу», «Выполнение команды с пульта», «Чтение из несуществующего порта» и т.п.

При сохранении копии экрана ВТА в файл на экран выводится информационное сообщение об имени созданного текстового файла.