46318 (665500), страница 2

Файл №665500 46318 (Программа-имитатор) 2 страница46318 (665500) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

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

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

Пункт меню Файл позволяет работать с написанной пользователем программой как с отдельным файлом и включает следующие подпункты:

Новый – создает новый файл, очищая редактор и регистры.

Открыть – открывает файл.

Сохранить – сохраняет в файл с расширением pdp и текущим именем.

Сохранить как – сохраняет в файл с расширением pdp и новым именем.

Выход – выход из имитатора.

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

Очистить – полностью удаляет содержимое либо только редактора, либо только регистров, либо редактора и регистров одновременно. Имя файла при этом не меняется (в этом отличие от пункта меню Новый).

Вставить – вставляет в редакторе пустую строку перед текущей.

Удалить – удаляет текущую строку в редакторе.

Пункт меню Пуск предназначен для исполнения написанной пользователем программы. Включает следующие подпункты:

Пуск – запускает написанную пользователем программу.

По шагам – позволяет выполнять каждую команду по отдельности.

Стоп – осуществляет прерывание запущенной программы.

Пауза – позволяет сделать паузу при выполнении запущенной программы

Продолжить – продолжает исполнение программы, после нажатия паузы.

Некоторые подпункты этого пункта доступны только при исполнении программы.

Некоторые пункты главного меню вынесены как кнопки. Также вы можете увидеть кнопку Память, при нажатии на которую появляется окно Память.

Итак, вы познакомились со структурой моего имитатора. Теперь можно приступить к написанию программы.

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

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

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

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

Если вы выбрали команду перехода, то во втором столбце редактора появится количество слов, на которое осуществляется переход (по умолчанию 0). Для того чтобы задать свое количество шагов необходимо переместится в то место редактора, где находится значение перехода, нажать Enter, либо кнопку мыши, и ввести свое значение. При выборе команды "Вызов подпрограммы" в нижней строке появится вторая часть этой команды – "по адресу 0". Во втором столбце этой строки необходимо указать адрес подпрограммы.

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

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

Когда вы написали все команды нужно приступить к заполнению регистров. Для заполнения регистров необходимо перевести указатель мыши на часть Регистры и нажать левую кнопку мыши, либо нажать клавишу Tab. При заполнении регистров стоит вспомнить, что максимальное число, которое может храниться в регистре, равно 32767, а минимальное -32768. Поэтому если вы попытаетесь ввести число больше максимального или меньше минимального, то цифра разряда, которую вы ввели, будет равна максимальной цифре, которая может находится в данном разряде числа. Аналогично при исполнении программы, если число заносимое в регистр будет меньше минимального или больше максимального, то значение соответствующего регистра будет минимальным, либо максимальным. Также необходимо помнить что, регистр R7 является счетчиком команды, поэтому туда необходимо занести адрес ячейки начала программы. При использовании подпрограммы в регистр R6 необходимо занести адрес начала стека.

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

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

Исполнение программы

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

Исполнение любой программы начинается с нажатия клавиши F9 или пункт меню Пуск. Вначале считывается значение регистра R7 (счетчика команд). Значение R7 увеличивается на 2. Исполняется команда, находящаяся по адресу, считанному из счетчика команд. Эти три операции повторяются пока не встретится команда Стоп или пока не возникнет ошибка исполнения. Исполнение может быть остановлено самим пользователем (кнопка Стоп или пункт меню Стоп). Также пользователь может приостановить исполнение (кнопка Пауза или пункт меню Пауза) и затем продолжить приостановленное исполнение (кнопка Продолжить или пункт меню Продолжить).

Выполнить можно также только одну команду. При нажатии клавиши F8 исполняется команда, находящаяся по адресу указанному в R7, при этом значение счетчика команд увеличивается на 2.

При исполнении вашей программы могут возникнуть следующие ошибки:

Неверное значение счетчика команд – значение регистра R7 не попадает в диапазон 1000…2024.

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

Неверный адрес – адрес, указанный в регистре, при использовании косвенной адресации не попадает в диапазон 1000…2024.

Данные заносятся в адрес, отведенный под программу – при использовании косвенной адресации данные заносятся в память по адресу, который используется программой.

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

Переполнение диапазона чисел – число, хранимое в памяти очень большое.

Неверный адрес перехода – значение адреса перехода не принадлежит диапазону 1000…2024.

Неверные символы в команде перехода – адрес перехода в команде перехода содержит посторонние символы (не цифры).

Нет адреса подпрограммы – команда Вызов подпрограммы по адресу не содержит адреса начала подпрограммы.

Неверный адрес подпрограммы – адрес начала подпрограммы не принадлежит диапазону 1000…2024, либо адрес подпрограммы содержит посторонние символы (не цифры).

Неверный адрес возврата – адрес возврата не принадлежит диапазону 1000…2024.

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

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

Примеры программ

Простая программа, использующая регистровую адресацию.

Найти сумму всех чисел от А до В.

Число А хранится в R0, число В в R1, сумма в R3. Пусть А=1, В=5.

Регистры

Редактор

R0 = +00001

1000 Переслать R0 в R2

R1 = +00005

1002 Сравнить R2 c R1

R2 = +00000

1004 Переход на 3 слов

R3 = +00000

1006 Добавить R2 к R3

R7 = +01000

1008 Увеличить на 1 R2

1010 Переход на -5 слов

1012 Стоп

В данной программе не используются регистры R4, R5, R6.

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

Найти сумму всех чисел от А до В.

Число А хранится в ячейке 1016, число В в ячейке 1018, результат в ячейке 1020. Регистр R0 хранит адрес первого числа, R1 – второго числа, R3 – результата.

Регистры

Редактор

Память

R0 = +01016

1000 Переслать (R0) в R2

1016 1

R1 = +01018

1002 Сравнить R2 c (R1)

1018 5

R2 = +00000

1004 Переход на 3 слов

1020 0

R3 = +01020

1006 Добавить R2 к (R3)

R7 = +01000

1008 Увеличить на 1 R2

1010 Переход на -5 слов

1012 Стоп

Программа работы с массивом данных.

Посчитать число положительных элементов массива и занести его в R5.

В R0 хранится адрес начала массива 1030. В R1 – адрес конца массива 1036.

Регистры

Редактор

Память

R0 = +01016

1000 Сравнить (R0)+ c R3

1030 -1

R1 = +01018

1002 Если < переход на 1 слов

1032 2

R5 = +00000

1004 Увеличить на 1 R5

1034 3

R7 = +01000

1006 Сравнить R0 с R1

1036 -4

1008 Если <= переход на -5 слов

1010 Cтоп

Программа с подпрограммой.

Даны два массива одинаковой размерности. Произвести обмен максимальными элементами. В качестве подпрограммы оформить нахождение максимального элемента массива.

Адрес начала первого массива 1050 хранится в R0. Адрес конца первого массива 1060 в R1. Адрес начала второго массива 1070 в R2. Адрес конца второго массива 1080 в R3. Начало стека 1200 в R6.

Регистры

Редактор

Память

R0 = +01050

1000 Вызов подпрограммы

1050 1

R1 = +01060

1002 по адресу 1022

1052 2

R2 = +01070

1004 Переслать R2 в R0

1054 3

R3 = +01080

1006 Переслать R3 в R1

1056 -2

R6 = +01200

1008 Переслать R4 в R2

1058 4

R7 = +01000

1010 Переслать R5 в R3

1060 1

1012 Вызов подпрограммы

1014 по адресу 1022

1070 -2

1016 Переслать R2 в (R5)

1072 5

1018 Переслать R4 в (R3)

1074 6

1020 Стоп

1076 -3

1022 Очистить R4

1078 7

1024 Переслать R0 в R5

1080 -7

1026 Переслать (R0)+ в R4

1028 Сравнить (R0) с R4

1030 Если < переход на 2 слов

1032 Переслать R0 в R5

1034 Переслать (R0) в R4

1036 Увеличить на 1 R0

1038 Увеличить на 1 R0

1040 Сравнить R0 с R1

1042 Если <= переход на -8 слов

1044 Возврат

В данной программе регистры R4 и R5 используются как вспомогательные.

Заключение.

Разработанная программа-имитатор позволяет наглядно иллюстрировать логическую структуру процессора и показать как он исполняет программы написанные пользователем. Фактически мой имитатор во многом повторяет написанную для ПЭВМ "Yamaha" программу-имитатор PDP.

Характеристики

Тип файла
Документ
Размер
107,4 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6543
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее