Реферат: Программа-имитатор
Написание программы
Основная программа, как уже было сказано выше, пишется в редакторе, который по структуре напоминает таблицу. При запуске имитатора редактор пуст и курсор находится в начале первого столбца редактора. Перемещаться по редактору можно с помощью клавиш управления курсора, либо с помощью мыши. Выбор команды осуществляется только, когда курсор находится в первом или четвертом столбце. При нажатии клавиши 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. Принцип работы стека изложен в первой части курсовой, в разделе способы адресации.
Примеры программ