Архитектура микропроцессоров
Рефераты >> Программирование и компьютеры >> Архитектура микропроцессоров

Косвенная адресация. При этом способе адресации в одном из регистров общего назначения содержится не само число, с которым нужно работать, а его адрес, то есть номер ячейки памяти, в котором число находится. Записывается как (Rn), где n – номер регистра.

Автоинкрементная адресация. Этот вид адресации несколько сложнее двух предыдущих. Помимо основного действия (косвенного обращения к ячейке памяти), при использовании этого метода, происходит еще изменение адреса этого обращения. В данном случае увеличивается указатель адреса ячейки памяти, к которой мы обращаемся, то есть содержимое регистра, служащего указателем адреса. Данное увеличение происходит автоматически, без какой-либо команды. Записывается эта адресация как (Rn)+. То, что знак + стоит после имени регистра, намекает на порядок выполнения команды: сначала происходит операция с ячейкой, на которую указывает адрес помещенный в регистр Rn, а потом уже содержимое регистра увеличивается на 2 (если оператор работает со словом, то переход к адресу следующего слова), или на 1 (если оператор работает с байтом, переход к адресу следующего байта). Данный способ адресации применяется для работы с массивами и при использовании стека (например, при использовании подпрограмм).

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

1) уменьшит указатель стека на 2 (целое число занимает в памяти 2 байта);

2) запишет данные по полученному адресу.

При извлечении данных из стека процессор проделает следу шее:

1) считает данные из стека;

2) увеличит указатель на 2.

В командах работы со стеком адрес ОЗУ не фигурирует в явном виде. Но при этом молчаливо предполагается, что указатель стека уже задан. При задании указателя надо быть внимательным. Если указатель стека определен неправильно, то запись в стек может разрушить полезную информацию в ОЗУ.

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

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

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

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

Основную часть программы составляет Редактор. Он представляет собой место, где вводится программа, которую выполняет процессор. Каждая команда вводится в свою ячейку, имеющую адрес. Размер адресного пространства редактора составляет 1Кб. Начальная ячейка имеет адрес 1000, конечная – 2024. В качестве операнда в одно- и двухадресных командах выступает один из регистров общего назначения. Я выделил следующую систему команд.

1. Одноадресные команды.

Представлены в следующей форме: Операция операнд ОП1.

Очистить ОП1– обнуляет значение операнда.

Увеличить на 1 ОП1 – увеличивает значение операнда.

Уменьшить на 1 ОП1 – уменьшает значение операнда.

2. Двухадресные команды.

Представлены в следующей форме: Операция первый операнд ОП1 второй операнд ОП2.

Переслать ОП1 в ОП2 – пересылает значение первого операнда во второй операнд.

Добавить ОП1 к ОП2– добавляет значение первого операнда ко второму операнду, результат во втором операнде.

Вычесть ОП1 из ОП2 – вычитает значение первого операнда из второго операнда, результат во втором операнде.

Сравнить ОП1 с ОП2 – сравнивает разность второго и первого операнда с нулем, значения операндов не меняются, результат влияет на состояние регистра состояний.

3. Безадресные команды.

Возврат из подпрограммы – осуществляет возврат из подпрограммы в ячейку, следующую за командой вызвавшей эту подпрограмму, используется только в подпрограммах

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

4. Команды перехода.

Переход на К слов – безусловный переход – осуществляет переход на К слов.

Вызов подпрограммы по адресу – переход на адрес К с запоминанием адреса возврата для команды возврата из подпрограммы.

Если <> переход на К слов – переход на К слов, если результат <>0.

Если = переход на К слов – переход на К слов, если результат =0.

Если >= переход на К слов – переход на К слов, если результат >=0.

Если > переход на К слов – переход на К слов, если результат >0.

Если < переход на К слов – переход на К слов, если результат <0.

Если <= переход на К слов – переход на К слов, если результат <=0.

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

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

Не менее важной частью программы является часть Регистры, в которой расположены регистры используемые в моем проекте. Для своего имитатора процессора я решил использовать восемь шестнадцати разрядных регистров общего назначения (c R0 по R7) и особого регистра, в котором отражается текущее состояние процессора – регистра состояний PS.

Любой из регистров общего назначения может использоваться в командах на равных основаниях. Вместе с тем имеется два выделенных регистра, содержимое которых моя программа использует для собственных нужд. Прежде всего это регистр R7, выполняющий роль счетчика команд. Другим выделенным регистром является указатель стека R6. Остальные 6 регистров, обозначаемые R0 - R5, пользователь может использовать по своему усмотрению. Уместно заметить, что выделенные регистры программы R6 и R7 могут использоваться в любой команде наряду с обычными регистрами общего назначения R0 - R5. Как уже упоминалось регистры обшего назначения шестнадцати разрядные, то есть диапазон принимаемых значений от -32768 до 32767.

Регистр состояний PS в моем проекте является двухбитным. Его особенностью является то, что каждый его бит имеет самостоятельное значение и может использоваться процессором отдельно от других. Используемые биты регистра обозначаются N и Z. Управляющие признаки N (Negative) характеризует наличие знака минус у результата операций: если число отрицательое, то N=1, в случае неотрицательного значения N=0. Бит Z (Zero) говорит о равенстве или неравенстве нулю результата: в первом случае Z=1, иначе Z=0. Значение этих битов зависит от результата операции сравнения и влияет в свою очередь на операцию условного перехода. Регистр состояний управляется только программно и недоступен пользователю.


Страница: