![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.12.2013
Сообщений: 13
|
![]()
Написать эмулятор вычислительной машины в классической архитектуре фон Неймана, которая реализует небольшой набор команд.
Список команд для реализации: - присваивание (MOV 01010 10010101 - присвоить ячейке памяти по адресу, указанному в левом операнде, двоичное значение правого операнда) - сложение (ADD 00010 00110 01010 - сложить операнды по адресам, указанным в первых двух операндах, результат записать по адресу третьего операнда) - умножение (MUL 00101 10010 10111 - умножить операнды по адресам, указанным в первых двух операндах, результат записать по адресу третьего операнда) - деление (DIV 01001 11001 10101 - разделить операнд по левому адресу на операнд по правому адресу, результат записать по адресу третьего операнда) - сравнение (CMP 01101 10101 11110 - сравнить операнд по левому адресу с операндом по правому адресу. Если левый операнд больше, записать по адресу третьего операнда 1, если меньше – 2, если равен – 3) - условный переход (JMP 10101 01011 01010 если значение операнда по первому адресу равно 0, перейти на строку программы, номер которой указан по адресу во втором операнде, иначе перейти по адресу, указанному в третьем операнде) - вывод (PRT 01011 - вывести на экран содержимое ячейки с указанным адресом) Команды подаются в двоичном коде следующим образом ХХХ AAAAA BBBBB CCCCC где ХХХ - код команды, AAAAA - адрес первого операнда для команды, BBBBB - адрес второго операнда для команды, ССССС - результат выполнения команды ЭВМ оснащена 64 ячейками памяти данных, из которых 32 ячейки отданы под память данных, 32 - под память для программы. Размер ячейки 8 бит. ПРИМЕР ПРОГРАММЫ. Необходимо вычислить площадь круга. Радиус принять равным 4, число ПИ равным 3. 1 MOV 00001 00000011 записать в первую ячейку памяти число 3 2 MOV 00002 00000100 записать во вторую ячейку памяти число 4 3 MUL 00002 00002 00003 умножить число во второй ячейке само на себя, результат поместить в третью ячейку памяти 4 MUL 00001 00003 00004 умножить число в первой ячейке на число в третьей, результат поместить в четвертую ячейку памяти 5 PRT 00004 вывести значение четвертой ячейки памяти на экран |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 07.12.2013
Сообщений: 13
|
![]()
большое спасиБо))) очень признателен!!!
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Пожалуйста )
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 07.12.2013
Сообщений: 13
|
![]()
Виталий, подскажите пожалуйста, я не могу разобраться как работает программа, вставляю код в лазарус запускаю ее и на экран выводит 384end и все, а дальше как быть, скажите пожалуйста)
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Организация стека. Написать программу на языке C + + которая реализует стек. | Кулибаба Петро | C++ Builder | 0 | 16.01.2013 22:47 |
Архитектура фон Неймана, самопрограммирование и отладчик | Levsha100 | Свободное общение | 4 | 19.08.2010 22:12 |