Обоснование актуальности разработки универсальной учебной машины

Описание универсальной учебной виртуальной машины УУМ-32. Безопасность исполнения кода и разграничение прав пользователя. Суть средств разработки программного обеспечения. Изображение логической структуры приложения. Анализ входных и выходных данных.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.11.2014
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

§ Машинное представление команд и данных в соответствующем формате

Пример файла листинга см. в Приложении 6.

· Список ошибок, обнаруженных во время компиляции. Для каждой обнаруженной ошибки указывается, если возможно, файл, в котором была обнаружена ошибка, и номер строки, содержащей ошибку.

5. Тестирование и подготовка руководств пользователя

5.1 Тестирование приложения

В рамках данной работы было выполнено т.н. смоук-тестирование приложения (разработаны и выполнены тесты первичной приемки). Список тестовых случаев, образующих тест первичной приемки, приведен в таб. 5.1.

Таблица 5.1. Тестовые случаи, образующие тест первичной приемки

Наименование тестового случая проектируемого теста

Входные данные теста

Назначение теста

1

Запуск Интегрированной среды

-

Проверка запуска приложения

2

Создание нового файла исходного кода программы

-

Проверка функции создания нового файла

3

Редактирование исходного кода программы

Исходный код программы

Проверка функций текстового редактора

4

Сохранение исходного кода программы в файл

Исходный код программы

Проверка функции сохранения файла

5

Закрытие окна редактора исходного кода

-

Проверка функции закрытия окна редактирования документа

6

Открытие существующего файла исходного кода программы

Файл, содержащий исходный код программы

Проверка функции открытия существующего файла

7

Запуск подготовленной программы

Исходный код программы

Объектный код программы

Исполнимый код программы

Проверка функции компиляции исходного текста программы, компоновки объектного кода и запуска эмулятора

8

Выход из приложения

-

Проверка правильности завершения работы приложения

Содержание тестовых случаев приведено в таблице 5.2.

Таблица 5.2. Содержание тестовых случаев, образующих тест первичной приемки

Шаг

Действие

Ожидаемый результат

Тест

ОК

ТС №1. Запуск Интегрированной среды

1

Выполнение двойного щелчка по пиктограмме главного исполнимого файла Приложения

Открытие главного диалогового окна Приложения

+

ТС №2. Создание нового файла исходного кода программы

1

Выбор меню Файл-Создать-Файл

Открытие диалогового окна «Создание нового файла»

+

2

Выбор в списке пиктограммы «Модуль программы Ассемблера УУМ-32»

Появление описание выбранного типа файла в правой части окна «Создание нового файла»

+

3

Нажатие на кнопку OK

Закрытие диалогового окна «Создание нового файла»

Создание нового окна редактора исходного кода, получение им фокуса ввода

+

ТС №3. Редактирование исходного кода программы

1

Ввод в окно редактора исходного кода текста программы:

; Привет, мир

hw: start 0

clear x

ld r0, #len

loop: ldb a, text[x]

wd #0

incr x, r0

jlt loop

ret

text: byte 'Привет, мир!!!'

len: equ * - text

end

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

Подсветка элементов языка Макроассемблера для УУМ-32

Появление всплывающих подсказок при установке курсора на ключевые слова

+

ТС №4. Сохранение исходного кода программы в файл

ТС №5. Закрытие окна редактора исходного кода

ТС №6. Открытие существующего файла исходного кода программы

1

Выбор меню Файл-Сохранить

Открытие диалогового окна сохранения файла

+

2

Ввод имени файла. Нажатие кнопки OK

Закрытие диалогового окна сохранения файла

+

3

Выбор меню Файл-Закрыть

Закрытие окна редактора исходного кода программы

+

4

Выбор меню Файл-Открыть

Открытие диалогового окна открытия файла

+

5

Выбор сохраненного на шаге 2 файла. Щелчок на кнопке OK

Закрытие диалогового окна открытия файла

Создание нового окна редактора исходного кода, содержащего следующий текст:

; Привет, мир

hw: start 0

clear x

ld r0, #len

loop: ldb a, text[x]

wd #0

incr x, r0

jlt loop

ret

text: byte 'Привет, мир!!!'

len: equ * - text

end

+

ТС №7. Запуск подготовленной программы

1

Выбор меню Запуск-Запуск

Блокировка всех элементов главного окна Интегрированной среды

Открытие окна Менеджера процессов для Компилятора

Появление в окне вывода внешних приложений информации об успешной компиляции

Закрытие окна Менеджера процессов для Компилятора

Открытие окна Менеджера процессов для Компоновщика

Появление в окне вывода внешних приложений информации об успешной компоновке

Закрытие окна Менеджера процессов для Компоновщика

Открытие окна Менеджера процессов для Эмулятора

Появление в окне вывода внешних приложений информации о старте программы

Появление главного диалогового окна эмулятора

Появление в окне вывода эмулятора текста «Привет, мир!»

+

2

Щелчок на кнопке «Закрыть» главного окна эмулятора

Закрытие главного окна эмулятора

Закрытие окна Менеджера процессов для Эмулятора

Появление в окне вывода внешних приложений сообщения «Программа успешно отработала»

+

ТС №8. Выход из приложения

1

Выбор меню Файл-Выход

Закрытие главного окна Интегрированной среды

+

Проверочный лист приведен в таблице 5.3.

Таблица 5.3 Проверочный лист

Наименование тестового случая

Результат тестирования

Ошибок нет

Ошибки есть

1

Запуск Интегрированной среды

V

2

Создание нового файла исходного кода программы

V

3

Редактирование исходного кода программы

V

4

Сохранение исходного кода программы в файл

V

5

Закрытие окна редактора исходного кода

V

6

Открытие существующего файла исходного кода программы

V

7

Запуск подготовленной программы

V

8

Выход из приложения

V

Анализируя данные, приведенные в таблицах 5.1, 5.2 и 5.3, делаем вывод, что все тесты, образующие тест первичной приемки, были пройдены успешно. Следовательно, основные функции приложения выполняются правильно, и его можно направить команде тестировщиков для выполнения глубокого тестирования.

5.2 Руководства пользователя

5.2.1 Описание языка Макроассемблера для УУМ-32

Основой языка Макроассемблера для УУМ-32 является язык Ассемблера для УУМ-32, поэтому необходимо сперва рассмотреть его.

1) Формат строк программы на Ассемблере для УУМ-32

Программа, написанная на языке Ассемблера для УУМ-32, представляет собой последовательность строк, каждая из которых имеет следующий формат:

[МЕТКА:] [ДИРЕКТИВА|[+]КОМАНДА [ОПЕРАНДЫ]] [;КООМЕНТАРИЙ]

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

Рассмотрим каждое поле строки в отдельности.

· Поле метки

Метки предназначены для символического представления машинных адресов в программе - в процессе трансляции исходного кода программы каждой метке присваивается машинный адрес.

Имя метки - это идентификатор. К идентификатору предъявляется ряд требований:

§ Идентификатор должен начинаться с буквы или символа подчеркивания.

§ Начиная со второго символа в состав идентификатора помимо букв и символа подчеркивания могут входить цифры.

§ Максимальная длина идентификатора составляет 32 символа.

Метка является необязательным элементом строки программы.

· Поле команды или директивы

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

Машинная команда может предваряться символом «+», что означает использование расширенного формата команды.

Список поддерживаемых команд и директив приведен в разделах «Система команд» и «Директивы ассемблера» данного документа.

Строка программы может не содержать команды или директивы.

· Поле операнда

Поле операнда предназначено для указания списка операндов для машинной команды или директивы ассемблера. Операндов может быть несколько, в этом случае они отделяются друг от друга запятыми. Тип операнда зависит от машинной команды или директивы, для которой он указывается. Рассмотрим наиболее часто используемые типы операндов:

§ Операнд - адрес

Данный операнд определяет некий машинный адрес. Операнд может задаваться меткой, числом или специальным символом “*”, который представляет текущее значение программного счетчика (PC).

Операнд данного типа можно использовать как для машинной команды, так и для директивы.

В случае использования операнда для машинной команды его можно задать с индексированием относительно регистра X (после операнда следует указать «[X]») или относительно базового регистра B (после операнда следует указать «[B]»).

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

- # - для операнда, предваренного данным символом, будет использоваться непосредственная адресация

- @ - для операнда, предваренного данным символом, будет использоваться косвенная адресация

§ Операнд - регистр

Как следует из названия, операнд-регистр предназначен для определения имени регистра. В программе разрешено использовать только так называемые “программно доступные” регистры. Их список приведен в разделе «Программно доступные регистры». Регистровые операнды используют и с машинными командами, и с регистрами.

§ Операнд - натуральное число

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

§ Операнд - строковой литерал

Операнд этого типа задает строковую константу, которая представляет собой последовательность символов, заключенную в одинарные кавычки (символ “'”). Строковые литералы, в отличие от других операндов, используются только в директивах.

· Поле комментария

Комментарии предназначены для документирования исходного кода программы. В языке Ассемблера для УУМ-32 поддерживаются только строчные комментарии. Каждый комментарий начинается с символа “;”.

2) Система команд

На сегодняшний день система команд УУМ-32 состоит из 41 команды.

Таблица команд приведена в Приложении 1.

3) Директивы ассемблера

Все директивы ассемблера приведены в таблице 5.4.

Таблица 5.4 Директивы Ассемблера

Директива

Описание

START

Директива ассемблера, задающая точку начала главной секции.

Синтаксис:

label: START addr

* label - имя главной секции

* addr - стартовый адрес главной секции

Пример:

helloWorld: START 0

ALIAS

Директива ассемблера, служащая для определения синонимов.

Синтаксис:

label: ALIAS alias

* label - метка синонима

* alias - имя существующей метки

Пример:

myArray: ALIAS array

BYTE

Директива ассемблера, служащая для формирования константы или массива типа byte (байт).

Синтаксис:

[label:] BYTE N1[, N2, ...]

* label - метка константы или массива

* N1, N2, ... - список констант, возможно задание символьной строки, заключенной в одинарные кавычки

Пример:

text: BYTE 'Hello, World', 33, 0xD, 0xA

HALF

Директива ассемблера, служащая для формирования константы или массива типа half (полуслово).

Синтаксис:

[label:] HALF N1[, N2, ...]

* label - метка константы или массива

* N1, N2, ... - список констант, возможно задание символьной строки, заключенной в одинарные кавычки

Пример:

text: HALF 1, 2, 0xFF

WORD

Директива ассемблера, служащая для формирования константы или массива типа word (машинное слово).

Синтаксис:

[label:] WORD N1[, N2, ...]

* label - метка константы или массива

* N1, N2, ... - список констант или константных выражений

Пример:

array: WORD 555, -100, 0xFE, 0b1010, *-1, (x1+x2-x3)/2

CSECT

Директива ассемблера, задающая точку начала новой управляющей секции.

Синтаксис:

label: CSECT addr

* label - имя управляющей секции

* addr - стартовый адрес управляющей секции

Пример:

subPrograms: CSECT 0

EQU

Директива ассемблера, служащая для определения имен.

Синтаксис:

label: EQU expression

* label - метка имени

* expression - инициализирующее выражение

Пример:

arrayHalfSize: EQU (*-arrayBegin)/2

EXPORT

Директива ассемблера, определяющая экспортируемые из текущей управляющей секции имена.

Синтаксис:

EXPORT name1[, name2, name3, ...]

* name1, name2 - экспортируемые из текущей управляющей секции имена

Пример:

EXPORT array, text, maxValue

IMPORT

Директива ассемблера, определяющая импортируемые в текущую управляющую секцию имена.

Синтаксис:

IMPORT name1[, name2, name3, ...]

* name1, name2 - импортируемые в текущую управляющую секцию имена

Пример:

IMPORT array, text, maxValue

RESB

Директива ассемблера, служащая для резервирования определенного числа байт (тип byte).

Синтаксис:

[label:] RESB n

* label - метка резервируемого блока памяти

* n - количество резервируемых элементов

Пример:

buffer: RESB 10

RESH

Директива ассемблера, служащая для резервирования определенного числа полуслов (тип half).

Синтаксис:

[label:] RESH n

* label - метка резервируемого блока памяти

* n - количество резервируемых элементов

Пример:

buffer: RESH 10

RESW

Директива ассемблера, служащая для резервирования определенного числа машинных слов (тип word).

Синтаксис:

[label:] RESW n

* label - метка резервируемого блока памяти

* n - количество резервируемых элементов

Пример:

buffer: RESW 10

END

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

Синтаксис:

END

Пример:

END

4) Программно доступные регистры

В УУМ-32 имеется 16 программно доступных регистров. Информация о них приведена в таблице 5.5.

Таблица 5.5 Программно доступные регистры УУМ-32

Регистр

Порядковый номер

Назначение

A

(accumulator)

0

Операции ввода вывода

B

(base)

1

Базовый регистр для адресации с базированием

X

(index)

2

Индексный регистр для адресации с индексированием

SW

(status word)

3

Слово состояния процессора

R0 - R11

4 - 15

Регистры общего назначения

5) Язык Макроассемблера для УУМ-32

Язык Макроассемблера для УУМ-32 является расширением языка Ассемблера для УУМ-32. Он появился после добавления в компилятор модуля макропроцессора, что позволило использовать в исходном коде программы макросы.

Макрос (макроинструкция) - это удобное средство записи часто используемых групп предложений исходного языка программирования. Макросы в коде задаются при помощи макродиректив.

Начало макроопределения в макропроцессоре задается с помощью ключевого слова MACRO. Именем макроопределения служит текст в поле метки. В поле операнда находятся имена формальных параметров макроопределения (каждое имя начинается спецсимволом «&»). Имя и параметры макроса определяют шаблон или прототип используемой разработчиком макроинструкции. После директивы начала макроопределения следуют предложения, составляющие тело макроопределения. Признаком конца макроопределения является директива MEND.

Директивы Макроассемблера для УУМ-32 приведены в таблице 5.6.

Таблица 5.6 Директивы Макроассемблера для УУМ-32

Директива

Описание

INCLUDE

Служит для подключения макробиблиотек

Синтаксис:

INCLUDE “ИМЯ_ФАЙЛА_БИБЛИОТЕКИ”

Пример:

INCLUDE “macrolib.uum32mlb”

MACRO

Определяет начало макроса

Синтаксис:

lablel: MACRO [&p1[, &p2 [,…]]]

Пример:

space: MACRO &count

MEND

Определяет конец макроса

Синтаксис:

MEND

Пример кода программы для УУМ-32 приведен в Приложении 7.

Руководство оператора

1) Назначение приложения

1.1. Функциональное назначение приложения

Функциональное назначение приложения состоит в подготовке исходного кода программы, его компиляции в объектный код (посредством внешнего компилятора), компоновке объектного кода в исполнимый код (посредством внешнего компоновщика) и последующем запуске исполнимого кода на внешнем эмуляторе УУМ-32.

1.2. Эксплуатационное назначение приложения

Эксплуатационное назначение приложения заключается в обеспечении возможности быстрой и удобной разработки и оптимизации программного обеспечения для УУМ-32.

2) Условия выполнения приложения

2.1. Минимальные требования к составу технических (аппаратных) средств:

· ПЭВМ с микропроцессором типа Pentium или аналогичным от компаний Intel или AMD с частотой не менее 1 ГГц

· ОЗУ не менее 512 МБайт

2.2. Минимальные требования к составу программных средств:

· Операционная система Microsoft Windows XP, Windows Vista, Windows 7, Windows 8 или более новая (32 или 64-разрядная)

· Программная платформа Microsoft .NET Framework версии 4.0 или выше

· Распространяемый пакет Microsoft Visual C++ 2010

2.3. Требования к оператору (пользователю):

· Конечный пользователь (оператор) должен обладать практическими навыками работы с графическим интерфейсом операционной системы семейства Microsoft Windows, а также обладать умением написания программ на языке Макроассемблера для УУМ-32.

3) Выполнение приложения

3.1. Запуск приложения

Приложение запускается одним из стандартных методов запуска программ в системах семейства Microsoft Windows, сведения о которых изложены в Руководстве пользователя данной операционной системы.

3.2. Выполнение приложения

3.2.1. Создание или открытие файла с исходным кодом программы или макробиблиотеки.

Создание нового файла выполняется с помощью команды меню Файл-Создать-Файл или с помощью нажатия комбинации клавиш Ctrl+N. Результатом выполнения и того, и другого действия будет открытие диалогового окна выбора типа создаваемого файла (файл исходного кода программы, исходного кода программы с поддержкой макросов, исходного кода макробиблиотеки) (рис. 5.1). После выбора необходимого типа файла и нажатия кнопки OK создается новое пустое окно редактора исходного кода программы. виртуальный код программный обеспечение

Рисунок 5.1 Окно создания нового файла

Для открытия существующего файла необходимо воспользоваться командой меню Файл-Открыть или использовать комбинацию клавиш Ctrl+O. В результате выполнения одного из перечисленных действий будет открыто диалоговое окно открытия файла, в котором необходимо выделить один или несколько файлов, которые пользователь хочет просмотреть или отредактировать.

Редактирование исходного кода программы или макробиблиотеки

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

Для обеспечения удобства редактирования исходного кода программы предусмотрен ряд специальных инструментов:

· Встроенная система подсказок. Состоит из обозревателя ключевых слов, который предоставляет пользователю возможность просмотра и поиска ключевых слов языка, синтаксиса, примеров их применения и т.п., и встроенной в текстовый редактор системы подсказок. Встроенная в текстовый редактор система подсказок анализирует слово, на котором в данный момент находится курсор, и в случае совпадения его с одним из ключевых слов выводит подсказку чуть ниже курсора.

· Автоматическое комментирование одной или нескольких строк. Следует выделить необходимые строки, после чего выбрать меню Правка - Закомментировать выделенные строки. Раскомментирование выполняется схожим образом: необходимо выбрать Правка - Раскомментировать выделенные строки.

· Автоматический переход к объявлению метки. Значительно упрощает поиск места объявления метки - достаточно поместить курсор на имени метки в любом месте, где она используется, и нажать клавишу F12. Если метка была объявлена, курсор автоматически переместится в место ее объявления.

· Одновременное отображение нескольких окон редактирования на экране. Пользователю предоставляется возможность одновременно видеть несколько открытых документов, выстраивать открытые окна редактора в произвольном порядке, сворачивать ненужные окна и разворачивать нужные на весь экран.

Общий вид редактора исходного кода программы приведен на рис. 5.2.

Рисунок 5.2 Окно редактора исходного кода программы

Компиляция и запуск программы

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

Для компиляции с последующим запуском исполнимого кода необходимо выбрать команду Запуск - Запуск или нажать клавишу F5. Будет открыто окно эмулятора и автоматически осуществлена загрузка и запуск скомпилированной программы (рис. 5.3).

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

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

Рисунок 5.3 Главное окно эмулятора УУМ-32

Рисунок 5.4 Окно вывода внешних приложений

Рисунок 5.5 Список ошибок компиляции

Настройки приложения

Настройки приложения разделяются на настройки текстового редактора и настройки внешних приложений.

· Настройки текстового редактора

§ Настройки подсветки синтаксиса

Для открытия окна настроек подсветки синтаксиса необходимо выбрать меню Настройки - Текстовый редактор - Подсветка синтаксиса. Окно настроек подсветки синтаксиса позволяет пользователю выбрать XML-файл, содержащий описания ключевых слов языка, настроить ряд параметров подсветки различных элементов языка - ключевых слов, строковых литералов, комментариев и т.п., а также выбрать шрифт, его стиль и размер. Общий вид окна настроек подсветки синтаксиса показан на рисунке 5.6.

Рисунок 5.6 Окно настройки подсветки синтаксиса

§ Ширина колонок

Для открытия окна настройки ширины колонок необходимо выбрать меню Настройки - Текстовый редактор - Ширина колонок. Данное окно позволяет пользователю задать произвольную ширину для каждой из колонок, на которые разбивается исходный код программы для обеспечения удобства его чтения (колонка меток, колонка команд, колонка операндов, колонка комментария и т.п.). Общий вид окна представлен на рисунке 5.7.

Рисунок 5.7 Окно настройки ширины колонок

§ Нумерация строк

Для открытия окна настройки нумерации строк необходимо выбрать меню Настройки - Текстовый редактор - Нумерация строк. В данном окне пользователю предоставляется возможность включить/отключить нумерацию строк, а также задать цвет цифр нумерации и их фона. Общий вид окна представлен на рисунке 5.8.

Рисунок 5.8 Окно настройки нумерации строк

· Настройки внешних приложений

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

Завершение работы приложения

Завершение или прерывание работы приложения организуется стандартными командами завершения работы приложений в системах семейства Microsoft Windows (меню Файл - Выход, нажатием кнопки закрытия окна или использованием комбинации клавиш Alt+F4). По завершению работы Приложения осуществляется выход в систему.

Рисунок 5.9 Окно настройки внешних приложений

4) Сообщения оператору

Сообщения, выдаваемые оператору, можно разделить на сообщения, формируемый самой интегрированной средой и сообщения, формируемые внешними приложениями.

Сообщения, формируемые интегрированной средой

К этим сообщениям относятся:

· Сообщения об ошибках при работе с файловой системой при создании/открытии/сохранении файлов, а также при задании имен файлов в настройках;

· Сообщения, информирующие, что на одном из этапов разработки программы были обнаружены ошибки (ошибка компиляции, ошибка компоновки, ошибка запуска).

Сообщения, формируемые внешними приложениями

К этим сообщениям относятся:

· Сообщения этапа компиляции

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

· Сообщения этапа компоновки

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

· Сообщения этапа запуска

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

Заключение

В результате проделанной в рамках данного дипломного проекта работы были создан программный продукт «Интегрированная среда разработки для УУМ-32», обеспечивающий возможность быстрой и удобной разработки и оптимизации программного обеспечения для УУМ-32.

Главным достоинством разработанного программного продукта является то, что благодаря его существованию универсальная учебная виртуальная ЭВМ УУМ-32 может начать активно использоваться в рамках исследований по ряду дисциплин, связанных с организацией работы ЭВМ.

Следует отдельно отметить, что разработанный программный продукт на сегодняшний день не имеет аналогов.

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

· Использование передовых технологий и обеспечение безотказной работы на компьютерах как с широко распространенными, так и с новейшими операционными системами;

· Предоставление пользователю ряда инструментов, предназначенных для обеспечения возможности быстрой и удобной разработки и оптимизации программного обеспечения для УУМ-32, например:

§ Дружественный пользовательский интерфейс с широким перечнем настраиваемых параметров;

§ Текстовый редактор с подсветкой синтаксиса;

§ Удобный механизм поиска и исправления ошибок;

§ Встроенная система помощи и др;

· Высокое качество и надежность разработки;

· Невысокая стоимость продукта.

Начиная с сентября 2013 года приложение «Интегрированная среда разработки для УУМ-32» успешно применяется для обучения студентов кафедры МОСИТ по ряду дисциплин, связанных с организацией работы ЭВМ (Системное ПО, Организация ЭВМ и т.д.)

Список использованных источников информации

Печатные издания

1. Бек Л. Введение в системное программирование. Пер. с английского, М.: «Мир», 1988

2. Бескин А.Л. Курс лекций по дисциплине «Организация ЭВМ». М.: МГТУ МИРЭА, 2012

3. Бескин А.Л., Семенов А.А. «Концепция учебной виртуальной ЭВМ в подготовке инженеров на кафедре МОВС» / 57-я научно-техническая конференция МИРЭА: Сб. тр. - М.: МИРЭА, 2008 -- Ч.1 стр. 93-97

4. Скворцова Л.А. Курс лекций по дисциплине «Структуры и алгоритмы обработки данных» - М.: МИРЭА, 2010

5. Басок Б.М. Курс лекций по дисциплине «Технология разработки программного обеспечения» - М.: МГТУ МИРЭА, 2012-2013

6. Шемончук Д.С. Проектирование информационных систем. Методические указания по выполнению лабораторных работ для студентов, обучающихся по направлению подготовки 230200 - М.: МИРЭА, 2009

7. Басок Б.М., Красовский В.Е. Тестирование программного обеспечения. - Учебное пособие. М.: МИРЭА, 2010

8. Шилдт Г. C# 4.0: Полное руководство. М., ООО «И.Д. Вильямс», 2011

9. Нуль И.А., Фатеев А.Е. Выполнение организационно-экономической части дипломного проекта. Методические указания. М.: МИРЭА, 2007

10. Экология и безопасность труда, Методические указания по дипломному проектированию. Москва, МИРЭА, 1990

11. Безопасность жизнедеятельности. Практикум. М.: ТПУ, 2009

12. Баркалов Б.В., Павлов Н.Н., Амирдажнов С.С. и др. Внутренние санитарно-технические устройства ч.3. Вентиляция и кондиционирование воздуха. Москва, Стройиздат, 1992

Приложения

Приложение 1

Мнемоника

Действие

Формат

Об код

Примечания

EXT

P

СС

0

NOP

-

1

0h

1

ADD r,mem

r(32) += mem(8,16,32)

3/4

1h

+

2

SUB r,mem

r(32) -= mem(8,16,32)

3/4

2h

+

3

COMP r,mem

{CC} = r(32) <>= mem(8,16,32)

3/4

3h

+

+

4

COMPR r1,r2

{CC} = r1(32) <>= r2(32)

2

4h

+

5

LD r,mem

r(32) mem(8,16,32)

3/4

5h

+

6

ST r,mem

r(8,16,32) mem(8,16,32)

3/4

6h

+

7

PUSH r

r(8,16,32) Stack(8,16,32)

2

7h

+

8

POP r

r(32) Stack(8,16,32)

2

8h

+

9

CLEAR r

r = 0

2

9h

10

MUL r,mem

r(32) *= mem(8,16,32)

3/4

Ah

+

11

DIV r,mem

r(32) /= mem(8,16,32)

3/4

Bh

+

12

INCM r, mem

r(32)++; {CC} = r(32) <>= mem(8,16,32)

3/4

Ch

+

+

13

TD #n

Проверка устройства n

3

Dh

+

+

14

RD #n

Читать в мл. байт A из устройства n

3

Eh

+

15

WD #n

Записать из мл. байт A в устройства n

3

Fh

+

16

SIO

Старт канала В/В

1

10h

+

17

HIO

Стоп канала В/В

1

11h

+

18

TIO

Тест канала В/В

1

12h

+

+

19

JMP mem

PC(32) (mem)

3/4

13h

+

20

JEQ mem

PC(32) (mem) If {CC} set to “=” (EQ)

3/4

14h

+

21

JLT mem

PC(32) (mem) If {CC} set to “<” (LT)

3/4

15h

+

22

JGT mem

PC(32) (mem) If {CC} set to “>” (GT)

3/4

16h

+

23

CALL mem

Stack PC(32); (mem) PC(32)

4

17h

24

RET

Stack PC(32) (выход из функции),

Если стек пуст - конец программы

1

18h

25

INCR r1,r2

r1(32)++; {CC} = r1(32) <>= r2(32)

2

19h

+

26

ADDR r1,r2

r1(32) += r2(32)

2

1Ah

27

MOV r1,r2

r1(32) = r2(32)

2

1Bh

28

SHL r1,mem

Циклический сдвиг в лево на mem разрядов

3/4

1Сh

+

29

SHR r1,mem

Циклический сдвиг в право на mem разрядов

3/4

1Dh

+

30

MULR r1,r2

r1(32) *= r2(32)

2

1Eh

31

DIVR r1,r2

r1(32) /= r2(32) [целочисленное деление]

2

1Fh

32

SB r1,mem

Устанавливает бит номер mem в единицу

3/4

20h

+

33

RSB r1,mem

Устанавливает бит номер mem в нуль

3/4

21h

+

34

SUBR r1,r2

r1(32) -= r2(32)

2

22h

35

SC c,mem

Контекст ядра c mem

3/4

23h

+

+

+

36

GC c,mem

Mem Контекст ядра с

3/4

24h

+

+

+

37

INT n

Генерация прерывания с кодом n. Параметры прерывания указываются в регистрах общего назначения, по большей части в R0-R11. Но иногда, согласно описаниям прерываний могут брать значения и из других регистров

2

25h

+

38

AND r1,r2

r1 & r2 A

2

26h

+

39

OR r1,r2

r1 | r2 A

2

27h

+

40

NOT r1

!r1 A

2

28h

+

41

EQV r1

{CC} = A&r1 <>= X&r1

2

29h

+

В представленной таблице используются следующие обозначения:

· c - номер ядра УУМ-32

· r - регистр общего назначения.

· mem - содержимое участка оперативной памяти.

· (mem) - адрес участка оперативной памяти

· n - число

В скобках указано количество разрядность операнда, с которыми работает операция.

Примечания:

· P - привилегированная команда.

· EXT - команда, использующая расширенный синтаксис (поле eop).

· СС - команда, устанавливающая Condition Code (код условия).

Конфигурационный файл приложения «Интегрированная среда разработки для УУМ-32»

<?xml version="1.0" encoding="utf-8"?>

<UUM32IDESettings>

<ExternalApplicationPaths relative="True">

<App id="Compiler" exe="asm.exe" arguments="&quot;%FILENAMEEXTMASK%&quot;" />

<App id="Linker" exe="linker.exe" arguments="--inputfiles=&quot;%FILENAMEMASK%.uum32obj&quot; --outfile=&quot;%FILENAMEMASK%.uum32&quot; --noheader" />

<App id="UUM32" exe="uum32.exe" arguments="-open=&quot;%FILENAMEMASK%.uum32&quot;" />

</ExternalApplicationPaths>

<LinesNumeration enabled="True" color="FFFF8000" bgColor="FFE9E9E9" />

<Styles>

<Font name="Consolas" size="10" charSet="1" bgColor="FFFFFFFF" />

<TextElementStyles enabled="False">

<StandartElementsStyles>

<StandartStyle id="Default" name="Обычный текст" color="FF000000" style="0" />

<StandartStyle id="Comment" name="Комментарий" color="FF808080" style="2" />

<StandartStyle id="String" name="Строковой литерал" color="FFFF8040" style="0" />

</StandartElementsStyles>

<Keywords fileName="UUM32AsmKeywords.xml" runAsmBeforeShellStart="True" command="--createKeywordListFile" />

<KeywordsStyles>

<KeywordStyle name="Машинные команды" color="FF008000" style="0" />

<KeywordStyle name="Директивы ассемблера" color="FF0000FF" style="0" />

<KeywordStyle name="Машинные регистры" color="FF8080FF" style="0" />

<KeywordStyle name="Директивы макроассемблера" color="FF8B00FF" style="0" />

</KeywordsStyles>

</TextElementStyles>

<Indents>10 10 20</Indents>

</Styles>

</UUM32IDESettings>

Приложение 2

Фалй, содержащий информацию об элементах языка Макроассемблера для УУМ-32.

<?xml version="1.0" encoding="utf-8"?>

<UUM32AssemblerKeywords>

<Keywords type="Машинные команды">

<Keyword name="SIO" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; SIO&#xA;&#xA;Действие:&#xA; Старт канала B/B [не реализована]." />

<Keyword name="TIO" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; TIO&#xA;&#xA;Действие:&#xA; Тест канала В/В [не реализована]." />

<Keyword name="COMPR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; COMPR r1, r2&#xA;&#xA;Действие:&#xA; {CC} < r1(32) &lt;&gt;= r2(32) [Сравнение первого регистра со вторым].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="HIO" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; HIO&#xA;&#xA;Действие:&#xA; Стоп канала B/B [не реализована]." />

<Keyword name="JEQ" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]JEQ [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {PC} < (mem) if {CC} == &quot;EQ&quot; [Переход к заданному адресу, если код условия установлен в &quot;EQ&quot; (равны)].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="AND" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; AND r1, r2&#xA;&#xA;Действие:&#xA; A < r1 &amp; r2 [Запись в регистр A результата побитовой конъюнкции двух регистров].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="MULR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; MULR r1, r2&#xA;&#xA;Действие:&#xA; r1(32) < r1(32) * r2(32) [Умножение первого регистра на второй].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="CLEAR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; CLEAR r&#xA;&#xA;Действие:&#xA; r < 0 [Обнуление регистра].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="RSB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]RSB r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r1(32)[mem] < 0 [Установка бита № mem регистра в нуль].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="ADDR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; ADDR r1, r2&#xA;&#xA;Действие:&#xA; r1(32) < r1(32) + r2(32) [Прибавление к первому регистру второго].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="JMP" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]JMP [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {PC} < (mem) [Безусловный переход к заданному адресу].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="SB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SB r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r1(32)[mem] < 1 [Установка бита № mem регистра в единицу].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="GC" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]GC n, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; mem > Контекст ядра n.&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="LD" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]LD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < mem(8,16,32) [Загрузка в регистр значения из памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="LDH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]LD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < mem(8,16,32) [Загрузка в регистр значения из памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="LDB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]LD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < mem(8,16,32) [Загрузка в регистр значения из памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="RD" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; RD [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; A(8) < Device_mem [Читать в младший байт регистра A из устройства mem]." />

<Keyword name="TD" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; TD [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; Проверка устройства n." />

<Keyword name="WD" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; WD [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; A(8) > Device_mem [Запиать из младшего байта регистра A в устройство mem]." />

<Keyword name="SHR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SHR r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) &lt;&lt; mem [Циклический сдвиг регистра влево].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="INT" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; INT n&#xA;&#xA;Действие:&#xA; Генерация прерывания с кодом n. Параметры прерывания указываются в регистрах общего назначения, по большей части в R0-R11. Но иногда, согласно описаниям прерываний могут брать значения и из других регистров.&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="DIVR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; DIVR r1, r2&#xA;&#xA;Действие:&#xA; r1(32) < r1(32) / r2(32) [Целочисленное деление первого регистра на второй].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="SUB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SUB[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="SUBH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SUB[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="SUBB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SUB[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) - mem(8,16,32) [Вичитание из регистра значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="PUSH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; PUSH[h|b] r&#xA;&#xA;Действие:&#xA; r(8,16,32) > Stack(8,16,32) [Заталкивание регистра в стек].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="PUSHH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; PUSH[h|b] r&#xA;&#xA;Действие:&#xA; r(8,16,32) > Stack(8,16,32) [Заталкивание регистра в стек].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="PUSHB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; PUSH[h|b] r&#xA;&#xA;Действие:&#xA; r(8,16,32) > Stack(8,16,32) [Заталкивание регистра в стек].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="DIV" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]DIV[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="DIVH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]DIV[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="DIVB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]DIV[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) / mem(8,16,32) [Целочисленное деление регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="ST" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ST[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(8,16,32) > mem(8,16,32) [Сохранение регистра в ячейку памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="STH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ST[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(8,16,32) > mem(8,16,32) [Сохранение регистра в ячейку памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="STB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ST[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(8,16,32) > mem(8,16,32) [Сохранение регистра в ячейку памяти].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="SUBR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; SUBR r1, r2&#xA;&#xA;Действие:&#xA; r1(32) < r1(32) - r2(32) [Вычитание из первого регистра второго].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="MOV" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; MOV r1, r2&#xA;&#xA;Действие:&#xA; r1(32) < r2(32) [Запись в первый регистр второго].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="JGT" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]JGT [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {PC} < (mem) if {CC} == &quot;GT&quot; [Переход к заданному адресу, если код условия установлен в &quot;GT&quot; (больше)].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="EQV" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; EQV r&#xA;&#xA;Действие:&#xA; {CC} < A &amp; r1 &lt;&gt;= X &amp; r1.&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="JLT" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]JLT [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {PC} < (mem) if {CC} == &quot;LT&quot; [Переход к заданному адресу, если код условия установлен в &quot;LT&quot; (меньше)].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="CALL" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]CALL [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {PC} > Stack; (mem) > {PC} [Вызов подпрограммы].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="POP" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; POP[h|b] r&#xA;&#xA;Действие:&#xA; r(32) < Stack(8,16,32) [Выталкивание регистра из стека].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="POPH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; POP[h|b] r&#xA;&#xA;Действие:&#xA; r(32) < Stack(8,16,32) [Выталкивание регистра из стека].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="POPB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; POP[h|b] r&#xA;&#xA;Действие:&#xA; r(32) < Stack(8,16,32) [Выталкивание регистра из стека].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="RET" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; RET&#xA;&#xA;Действие:&#xA; Stack > {PC} [Возврат из подпрограммы. Если стек пуст - конец программы].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="INCM" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]INCM[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32)++; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="INCMH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]INCM[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32)++; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="INCMB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]INCM[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32)++; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Инкремент регистра и последующее сравнение его со значением из памяти].&#xA;&#xA;Тактов ЦП: 4" />

<Keyword name="SHL" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SHL r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) &lt;&lt; mem [Циклический сдвиг регистра влево].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="COMP" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]COMP[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Сравнение регистра со значением из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="COMPH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]COMP[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Сравнение регистра со значением из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="COMPB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]COMP[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; {CC} < r(32) &lt;&gt;= mem(8,16,32) [Сравнение регистра со значением из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="MUL" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]MUL[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="MULH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]MUL[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="MULB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]MUL[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) * mem(8,16,32) [Умножение регистра на значение из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="NOT" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; NOT r&#xA;&#xA;Действие:&#xA; A < ~r [Запись в регистр A результата побитовой инверсии регистра].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="INCR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; INCR r1, r2&#xA;&#xA;Действие:&#xA; r1(32)++; {CC} < r1(32) &lt;&gt;= r2(32) [Инкремент регистра и последующее сравнение его с другим регистром].&#xA;&#xA;Тактов ЦП: 2" />

<Keyword name="SC" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]SC n, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; Контекст ядра n > mem.&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="NOP" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; NOP&#xA;&#xA;Действие:&#xA; Пустая команда. Не выполняет никаких действий.&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="OR" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; OR r1, r2&#xA;&#xA;Действие:&#xA; A < r1 | r2 [Запись в регистр A результата побитовой дезъюнкции двух регистров].&#xA;&#xA;Тактов ЦП: 1" />

<Keyword name="ADD" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ADD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="ADDH" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ADD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

<Keyword name="ADDB" hint="Машинная команда.&#xA;&#xA;Синтаксис:&#xA; [+]ADD[h|b] r, [#|@]mem[[x]][[b]]&#xA;&#xA;Действие:&#xA; r(32) < r(32) + mem(8,16,32) [Прибавление к регистру значения из памяти].&#xA;&#xA;Тактов ЦП: 3" />

</Keywords>

<Keywords type="Машинные регистры">

<Keyword name="R7" hint="Регистр R7 (номер регистра: 11)" />

<Keyword name="R3" hint="Регистр R3 (номер регистра: 7)" />

<Keyword name="X" hint="Регистр X (номер регистра: 2)" />

<Keyword name="R4" hint="Регистр R4 (номер регистра: 8)" />

<Keyword name="R0" hint="Регистр R0 (номер регистра: 4)" />

<Keyword name="R8" hint="Регистр R8 (номер регистра: 12)" />

<Keyword name="R11" hint="Регистр R11 (номер регистра: 15)" />

<Keyword name="R10" hint="Регистр R10 (номер регистра: 14)" />

<Keyword name="R5" hint="Регистр R5 (номер регистра: 9)" />

<Keyword name="R1" hint="Регистр R1 (номер регистра: 5)" />

<Keyword name="R9" hint="Регистр R9 (номер регистра: 13)" />

<Keyword name="R6" hint="Регистр R6 (номер регистра: 10)" />

<Keyword name="R2" hint="Регистр R2 (номер регистра: 6)" />

<Keyword name="A" hint="Регистр A (номер регистра: 0)" />

<Keyword name="B" hint="Регистр B (номер регистра: 1)" />

</Keywords>

<Keywords type="Директивы ассемблера">

<Keyword name="ALIAS" hint="Директива ассемблера, служащая для определения синонимов.&#xA;&#xA;Синтаксис:&#xA; label: ALIAS alias&#xA; * label - метка синонима&#xA; * alias - имя существующей метки&#xA;&#xA;Пример:&#xA; myArray: ALIAS array" />

<Keyword name="BYTE" hint="Директива ассемблера, служащая для формирования константы или массива типа byte (байт).&#xA;&#xA;Синтаксис:&#xA; [label:] BYTE N1[, N2, ...]&#xA; * label - метка константы или массива&#xA; * N1, N2, ... - список констант, возможно задание символьной строки, заключенной в одинарные кавычки&#xA;&#xA;Пример:&#xA; text: BYTE 'Hello, World', 33, 0xD, 0xA" />

<Keyword name="CSECT" hint="Директива ассемблера, задающая точку начала новой управляющей секции.&#xA;&#xA;Синтаксис:&#xA; label: CSECT addr&#xA; * label - имя управляющей секции&#xA; * addr - стартовый адрес управляющей секции&#xA;&#xA;Пример:&#xA; subPrograms: CSECT 0" />

<Keyword name="END" hint="Директива ассемблера, задающая точку конца программы.&#xA;&#xA;Синтаксис:&#xA; END&#xA;&#xA;Пример:&#xA; END" />

<Keyword name="EQU" hint="Директива ассемблера, служащая для определения имен.&#xA;&#xA;Синтаксис:&#xA; label: EQU expression&#xA; * label - метка имени&#xA; * expression - инициализирующее выражение&#xA;&#xA;Пример:&#xA; arrayHalfSize: EQU (*-arrayBegin)/2" />

<Keyword name="EXPORT" hint="Директива ассемблера, определяющая экспортируемые из текущей управляющей секции имена.&#xA;&#xA;Синтаксис:&#xA; EXPORT name1[, name2, name3, ...]&#xA; * name1, name2 - экспортируемые из текущей управляющей секции имена&#xA;&#xA;Пример:&#xA; EXPORT array, text, maxValue" />

<Keyword name="IMPORT" hint="Директива ассемблера, определяющая импортируемые в текущую управляющую секцию имена.&#xA;&#xA;Синтаксис:&#xA; IMPORT name1[, name2, name3, ...]&#xA; * name1, name2 - импортируемые в текущую управляющую секцию имена&#xA;&#xA;Пример:&#xA; IMPORT array, text, maxValue" />


Подобные документы

  • Цели универсальной системы хранения данных о производственном изделии. Описание предметной области программы и технические требования к ней. Стадии и этапы разработки, методика испытаний. Работа с главным меню и справочниками, руководство оператора.

    дипломная работа [4,6 M], добавлен 27.08.2012

  • Java Runtime Environment - минимальная реализация виртуальной машины, необходимая для исполнения приложений, без компилятора и других средств разработки. Компиляция исходного кода через командную строку. Основные моменты создания игрового 2d-приложения.

    курсовая работа [2,1 M], добавлен 26.04.2014

  • Определение этапов разработки программного обеспечения. Разработка модели представления данных и структуры интерфейса. Проектирование входных и выходных форм. Этапы программирование приложения. Проверка функциональности на контрольном примере.

    курсовая работа [1,2 M], добавлен 25.05.2009

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

    курсовая работа [1,4 M], добавлен 12.05.2016

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Анализ технических средств и современных технологий разработки программного обеспечения. Разработка программы для упрощения поиска студентов. Создание учетных записей администратора и обычного пользователя. Изучение правил построения программного кода.

    курсовая работа [1,9 M], добавлен 30.09.2016

  • Разработка программы для изображения в графическом режиме на экране структуры модели вычислительной машины и демонстрация функционирования при выполнении программы вычисления. Описание процесса разработки, обоснование структур данных и их форматов.

    курсовая работа [170,3 K], добавлен 07.06.2019

  • Обоснование выбора метода проектирования и инструментальных средств для разработки программного средства и базы данных. Требования к эргономике и технической эстетике. Разработка алгоритмов приложения. Руководство пользователя. Безопасность труда.

    дипломная работа [2,9 M], добавлен 17.10.2014

  • Требования к пользовательскому интерфейсу программного продукта. Выбор инструментальных средств разработки программы. Описание функциональной схемы, модульной структуры, структурной схемы. Технология разработки справочной системы программного продукта.

    дипломная работа [2,7 M], добавлен 12.05.2016

  • Общая характеристика и описание математической модели. Выбор и обоснование среды программирования, анализ входных и выходных данных. Структурное проектирование приложений и интерфейса пользователя. Реализация и оценка защитного программирования.

    курсовая работа [564,9 K], добавлен 26.09.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.