Курсовая работа
Арсений Огузов- Задача
- Основные принципы архитектуры
- Эмулятор ЭВМ
- Интерфейс
- Выполнение программы
- Возможные ошибки
- Примеры
- Ссылка
Задача
Разработать эмулятор вычислительной машины в архитектуре фон Неймана
Основные принципы архитектуры
Принцип однородности:
Команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы. Распознать их можно только по способу использования; то есть одно и то же значение в ячейке памяти может использоваться и как данные, и как команда, и как адрес в зависимости лишь от способа обращения к нему.
Принцип адресности:
Структурно основная память состоит из пронумерованных ячеек, причём процессору в произвольный момент доступна любая ячейка. Двоичные коды команд и данных разделяются на единицы информации, называемые словами, и хранятся в ячейках памяти, а для доступа к ним используются номера соответствующих ячеек — адреса.
Принцип программного управления:
Все вычисления, предусмотренные алгоритмом решения задачи, должны быть представлены в виде программы, состоящей из последовательности управляющих слов — команд. Каждая команда предписывает некоторую операцию из набора операций, реализуемых вычислительной машиной.
Принцип двоичного кодирования:
Согласно этому принципу, вся информация, как данные, так и команды, кодируются двоичными цифрами 0 и 1. Каждый тип информации представляется двоичной последовательностью и имеет свой формат.
Эмулятор ЭВМ
Команды эмулятора состоят из самих команд и операндов. На операнд
для адреса переменной отводится 5 бит, для операнда значения – 8.
Операнды подаются в двоичном формате.
Присваивание MOV [адрес] [значение]
Присваивает ячейке памяти по адресу, указанному в левом операнде,
двоичное значение правого операнда.
Сложение ADD [адрес] [адрес] [адрес]
Складывает значения операндов по адресам, указанным в первых двух
операндах, результат записывает по адресу третьего операнда.
Умножение MUL [адрес] [адрес] [адрес]
Умножает значения операндов по адресам, указанным в первых двух
операндах, результат записывает по адресу третьего операнда.
Деление DIV [адрес] [адрес] [адрес]
Делит значения операндов по адресам, указанным в первых двух
операндах, результат записывает по адресу третьего операнда.
Сравнение CMP [адрес] [адрес] [адрес]
Сравнивает операнд по левому адрес с операндом по правому адресу.
Если левый операнд больше, записывает по адресу третьего операнда 1
(00000001), если меньше – 2 (00000010), если равен – 3 (00000011).
Условный переход JMP [адрес] [адрес] [адрес]
Если значение первого операнда равно 0, то переходит на строку
программы, номер которой указан по адресу во втором операнде, иначе
переходит на строку под номером указанном в третьем операнде.
Вывод PRT [адрес]
Выводит на экран значение ячейки с указанным адресом.
Интерфейс
Написан на HTML/CSS
Состоит из поля ввода, поля вывода и кнопок управления
Функции интерфейса:
run()
clearInput()
error()
print()
Выполнение программы
Алгоритм представленный блок-схемой
Возможные ошибки
Не двоичный формат
Бесконечный цикл
Несуществующая команда
Переполнение памяти
Интервал значений
Количество параметров для функции
Примеры
Возведение в квадрат
Сложение двух чисел
(a+b)^2
Ссылка на программу
http://psy667.ru/js_computer