Программа «Микропроцессор КР580», страница 2

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

Физически программа состоит из нескольких модулей-юнит:

- Модуль главного окна программы. В нём реализована эмуляция УМК. Этот модуль является главным, именно с него начинается работа программы после запуска. (Unit1.pas)

-   Модуль справочника по командам ассемблера. (Unit2.pas)

-   Модуль выполнения программы. (Unti3.pas)

-   Модуль процессора эмулирует работу самого микропроцессора КР580. Содержит функции по работе с регистрами и памятью, а также в нём реализованы собственно коды всех команд языка ассемблер процессора. (ProcessorUnit.pas)

-   Модуль регистров. Реализует регистровую модель процессора. Используется процессорным модулем. (RegistersUnit.pas)

-   Модуль имён команд. Используется как хранилище ассемблерных команд и их описания. (CommandNames.pas)

-   Системный модуль. Содержит некоторые функции, используемые другими модулями. (Util.pas)

Листинг модулей приведён в Приложении 1.

Запуск программы «Микропроцессор КР580» осуществляется выполнением исполнимого файла средствами операционной системы Windows. В результате этого открывается главное окно программы, и система готова к приёму команд. Исполнимый файл занимает на диске 431 КБ, запущенная программа занимает менее 5 МБ оперативной памяти.

Возможные действия пользователя:

-   Выбор режима работы УМК нажатием одной управляющих из кнопок
П, РГ, СТ, КС, ЗК, ПМ.

-   Переход к справочнику по командам нажатием кнопки «Список команд».

-   Загрузка готовой ассемблерной программы из внешнего файла нажатием кнопки «Загрузить».

-   Завершение работы с системой нажатием кнопки закрытия программы в заголовке окна или любым другим способом, предусмотренным операционной системой Windows.

При выборе работы со справочником, окно модуля открывается рядом с главным окном, не перекрывая его. Имеется возможность одновременной работы как со справочником, так и с главным окном (например, для набора команд, основываясь на данных из справочника). Окно справочника сохраняет свою позицию относительно главного окна при перетаскивании. Для отказа от показа справочника требуется закрыть его окно нажатием на соответствующую кнопку.

При выборе одного из режимов работы УМК, программа переходит в режим приёма информации пользователя и активизируется цифровая клавиатура. В каждом из режимов стенд УМК выполняет указанную функцию.

При выборе загрузки готовой программы открывается стандартный системный диалог выбора файла.

При закрытии главного окна программа завершает свою работу и освобождает все системные ресурсы, необходимые для её корректной работы.


6 Входные и выходные данные

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

Формат файла листинга ассемблерных программ.

Каждая строка файла представляет собой либо комментарий, либо строку данных. Комментарий начинается с символа точки с запятой «;». Строка данных состоит из двух частей – адреса, по которому следует размещать данные и самих данных. В строке данных не допускаются какие-либо символы, кроме цифр и букв шестнадцатеричной системы. Регистр букв может быть произвольным.

Также допускаются пустые строки.

Пример файла листинга приведён в Приложении 1.

Приложение 1

Файл листинга ассемблерной программы

;Программа сравнения двух чисел

;Числа лежат в ячейках 0B00 и 0B01. Результат в регистре B.

;0800  21 000B LXI HL,0B00

;0803  7E      MOV A,M

;0804  23      INX HL

;0805  46      MOV B,M

;0806  B8      CMP B

;0807  FA 0B08 JM 080B

;080A  47      MOV B,A

;080B  CF      RST1

080021000B7E2346B8FA0B0847CF

0B003536