Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсач docx80 / kursach_arkh_olezha.docx
Скачиваний:
43
Добавлен:
07.08.2013
Размер:
730.53 Кб
Скачать

6


0


S


Байт


7



14


0


S


Слово


15


Числа с фиксированной точкой представляют собой целые со знаком или без него. Целые числа со знаком представляются в дополнительных кодах.

Адреса представляются в виде целых чисел без знака

Формат команд

В битах 26 – 31 (КОП) хранится код операции.

Двухразрядное поле ПА1, ПА2, ПА3 указывает способ адресации для соответствующих полей А:

  • ПА1, ПА2, ПА3 = 0 – непосредственная адресация;

  • ПА1, ПА2, ПА3 = 1 – прямая адресация;

  • ПА1, ПА2, ПА3 = 2 – относительная адресация.

Адресные поля А1, А2 и А3 используются для хранения 1-го, 2-го операндов и результата.

Поля ИР1, ИР2, ИР3 служат для указания номера индексного регистра, используемого при относительной адресации (это регистры R60 –R63).

Способы адресации

В соответствии с техническим заданием, требуется осуществить 3 способа адресации.

Непосредственная адресация

Значение, записываемое в регистр, задаётся непосредственно в команде. Например movax,50.

Относительная адресация

Исполнительный адрес формируется следующим образом:

AИСП=A+X, где

A– базовый адрес, указываемый в адресном поле команды;

X– относительный адрес (индекс), указывающий положение данного, относителен

МП

ВК

МП

ОА

АО

УПi

КВВ

ЛО

БП

БПВ

Ост

МП

АО

МП

УПi

МП

КВВ

МП

ЛО

МП

БП

МП

БПВ

МП

Ост

МП

АвОст

Ост пу?

Нет

ПР?

Да

Нет

МП

Пр

Да

Рис. 4

Обобщённый алгоритм функционирования

Обобщённая схема алгоритма функционирования процессора показана

В блоке МП ВК происходит выбор очередной команды и подготовка следующей. В соответствии с последовательностью управляющих сигналов {У}, выра­батываемых УУ центрального устройства управления, содержимое IPпередается на РА ОП и, после выполнения операции “Чтение”, содержимое РД, на котором находился очередная команда, передается на РК. Одновременно содержимоеIPувеличивается на единицу, чем обеспечивается подготовка следующей команды.

В блоке МП ОА происходит обработка адресной части команды. По этой команде в УУ центрального устройства управления производится анализ полей признака адресации (ПА1, ПА2, ПА3) РК и, в случае относительной адресации, формируются исполни­тельные адреса в соответствии с разделом 4.3.

После этого блока происходит проверка признака выполнения:

  • арифметической операции (АО),

  • логической операции (ЛО),

  • операции безусловного перехода (БП),

  • операции условного перехода (УП),

  • безусловного перехода с возвратом (БПВ) (вызов подпрограммы),

  • команд ввода – вывода (КВВ),

  • команды программного останова (Ост).

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

В блок-схеме присутствует блок АвОст. Это аварийный останов. Он производится всегда, когда приходит неверный код операции.

В блоке Ост ПУ производится проверка поступления сигнала останова с пульта управления.

В блоке ПР производится проверка прихода сигнала прерывания. Если такой сигнал пришёл, то в блоке МП Пр происходит обработка прерывания.

Алгоритмы выполнения отдельных операций оп команд y1 y2 x1 y4 ram d fl a rd wr rgрдВыборка команды

Y3

Рис. 5

На рис. 8 приведён фрагмент структуры процессора, относящийся к выборке команды, а на рис. 9 – соответствующая ей микропрограмма.

У разрабатываемого процессора разрядность команды и разрядность ячейки памяти в которой она хранится совпадают. Исходными данными является адрес размещения команды в памяти ЭВМ, который хранится в счётчике адреса команд IP. СодержимоеIPпередаётся в регистр адреса РА оперативной памяти, осуществляется чтение из оперативной памяти команд хранящейся в ней информации в регистр даных РД. После чтения из ОП, требуемая команда будет находиться в регистре РД. Далее осуществляется передача содержимого РД на РК.

Обработка адресной части команды

Рис. 6

РК

A

RG

ИР

ПА

Дш

0

1

2

3

DC

1

2

R60

X0

RG

R63

X3

RG

SE0

SE7

K

MUX

D0

.

.

D7

D8

E

E

СмИ

SM

D

РА

RG

D

E

Y8

Y7

Y5

Y6

X2

Aисп

Если не используется прямая или непосредственная адресация, то необходимо вычислить исполнительный адрес при помощи относительной адресации. Для реализации относительной адресации в процессоре предусмотрено 4 индексных регистра R60 –R63.

На сумматоре производится сложение адресной части РК с индексом, находящимя в одном из индексных регистров R60 –R63. Для определения номера индексного регистра, в команде отведены поля ИР1, ИР2, ИР3. После этого исполнительный адрес заносится в РА. Структурная схема и микропрограмма приведены на рис. 10 и рис. 11.

Арифметические и логические операции

Рис. 7

РК

A3

RG

A1

INS

K

MUX

D1

SE3

SE2

РА

RG

D

E

Y9

Память данных

RAM

D

END

A

RD

WR

RG

РД

Y3

Y16

АЛУ

ALU RG

RG3

Р3

ST

RG4

Р4

INS

RG2

Р2

D

E

RG1

Р1

D

E

FL

Y13

Y14

Y15

X3

A2

SE1

D2

D1

Y10

Y12

Y11

Y9,Y10

X1

Y13

Y9,Y10: РА=А1

X1: ОП завершила работу?

Y13: Р1=РД

Y3

Y9,Y11

Y3

X1

Y14

1

1

Y15

X3

Y9,Y12

X1

Y16

Y3: Чтение из ОП

Y9,Y11: РА=А2

Y14: Р2=РД

Y15: Запуск АЛУ

X3: АЛУ закончило работу?

Y9,Y12: РА=А3

Y16: Запись в ОП

Рис. 8

X1

В регистре команд уже находится очередная считанная команда в результате выборки команды. На первом этапе из памяти данных читается первый операнд, адрес которого находится в поле А1 регистра команд (то есть в текущей выполняемой команде). Операнд из РД передаётся в регистр Р1 АЛУ. Аналогично из памяти данных считывается второй операнд и заносится в Р2 АЛУ. Далее запускается устройство управления АЛУ. В соответствии с кодом операции, поступающим на АЛУ из РК, АЛУ выполняет требуемую микропрограмму. В процессе выполнения микропрограммы на Р4 АЛУ формируется результат операции, а на Р3 фиксируются признаки результата операции (равенство нулю, переполнение, перенос…). По завершении выполнения операции, АЛУ вырабатывает сигнал X1. После этого результат выполнения операции из Р4 помещается в ОП по адресу, указанному в поле А3 регистра команд.

Y17

Безусловный переход

Y17

Y17: IP=Адрес

Рис. 9

РК

А

RG

INS

В счётчик адресов команд просто записывается адресная часть команды

Ввод – вывод

A1

РА

RG

D

E

Y19

A2

КОП

РД

RG

D

E

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

Обработка запроса на прерывание.

В данном курсовом проекте требуется реализовать одноуровневую систему прерываний. Это значит, что прерывания от различных устройств имеют одинаковый приоритет и выполняются последовательно.

Запросы на прерывания могут быть внутренними (например деление на 0, переполнение …) или внешними (различные запросы от внешних устройств). На рис. 17 внутренним прерываниям соответствуют сигналы Y20 иY21, а внешним – ЗП3 и ЗП4. Внутренние запросы запоминаются на триггерах Т1 и Т2. Все запросы фиксируются на регистре РЗПР сигналомY22. На выходе блока обработки запросов образуется признак наличия запросаX5 и номер запроса. Дешифратор испoльзуется для сброса триггеров внутренних запроcсов

Заключение

В курсовой работе был разработан RISCпроцессор для встроенных применений, который может использоваться, например, в составе систем управления в реальном масштабе времени.

Практика по архитектуре

Debug — Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Использовалась при операционной системе MS-DOS. Под более поздние версии операционных систем работает через эмулятор MS-DOS и имеет ограниченные возможности.

Ниже приведен пример создания с помощью отладчика debug простой программы, выводящей строку текста

Сначала, используя команду a, вводятся команды программы на языке Ассемблера.

Сама программа представлена ниже.

jmp 118

db 0d,0a, "My first program!"

db 0d,0a, "$"

mov ah,9

mov dx,102

int 21

mov ah,0

int 21

Дадим некоторые пояснения к программе. В первой строке с помощью команды jmp осуществляется безусловный переход по адресу 118, что позволяет пропустить текстовую строку, записанную во второй и третьей строках программы. В четвертой строке с помощью команды mov в регистр ah заносится число 9, что подготавливает программу к вызову функции вывода строки на экран. В пятой строке в регистр dx заносится число 102, указывающее начало выводимой строки. В шестой строке прерывание int 21 обеспечивает вывод требуемой строки. И, наконец, последние две строки завершают работу программы.

Чтобы проверить работу программы используется команда отладчика g с параметром =100, указывающим откуда должна выполняться программа. На экране видно, что после ввода этой команды и выполнения программы выводится заданная строка и сообщение о нормальном завершении программы.

Следующие команды отладчика иллюстрируют как можно полученную программу записать в отдельный исполнимый файл с расширением com и произвольным именем first.

Для этого с помощью команды n определяем имя создаваемого файла. После этого командой rcx меняем содержимое регистра cx, записывая в него размер созданной программы и, наконец, командой w записываем программу в файл. Команда q заканчивает сеанс работы с отладчиком.

Debug.exe позволяет вводить программу непосредственно в память машины, а затем следить и управлять ее выполнением. Мы будем вводить программу в машинных кодах, используя команду E. При этом будьте бдительны - ввод ошибочных данных по ошибочному адресу чреват не предсказумыми последствиями! Хотя к серьезным проблемам в системе это вряд ли приведет, но потерять все данные, введенные в debug.exe, можно потерять запросто. Программа, которую мы сейчас будем вводить, использует данные, заложенные непосредственно в теле инструкций. Далее показан листинг программы на Ассемблере, в комментариях указаны аналоги команд языка в машинных кодах, а также объяснение каждый команды. Замечу, что в числах нет символа h, поскольку, как было сказано выше,debug.exe понимает только числа в шестнадцатеричной системе.

MOV AX, 0123 ; код B82301: заносим значение 0123h в AX

ADD AX, 0025 ; код 052500: прибавляем 0225h к значению AX

MOV BX, AX   ; код 8BD8: заносим значение AX в BX

ADD BX, AX   ; код 03D8: прибавляем значение AX к BX

MOV CX, BX   ; код 8BCB: заносим значение BX в CX

SUB CX, AX   ; код 2BC8: отнимаем значение AX из CX

SUB AX, AX   ; код 2BC0: очищаем AX

JMP 100      ; код EBEE: переходим к началу программы

Как можно заметить, каждая машинная инструкция имеет длину от 1 до 3 байтов. Первый байт указывает операцию, последующие - ее операнды. Исполнение программы начинается соответственно с первой инструкции и последовательно проходит через все инструкции одну за другой. Теперь можно ввести программу в память. Разделим машинный код на три части по шесть байт и введем каждую, используя команду E и начиная с адреса CS:100.

-E CS:100 B8 23 01 05 25 00

-E CS:106 8B D8 03 D8 8B CB

-E CS:10C 2B C8 2B C0 EB EE

-_

Теперь, когда программа введена в память, попробуем управлять ее выполнением. Для начала проверим текущее состояние регистров и флагов, для этого вводим команду R. Отладчик выведет содержимое регистров в шестнадцатеричной форме; на разных машинах содержимое регистров может различаться.

Заключение

Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложение под MS-DOS и отслеживать их работу. Данный отладчик находится на самом низком уровне компиляторов assembler. Но обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.

Соседние файлы в папке курсач docx80