Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.205


Таненбаум Э.- Архитектура компьютера. стр.205

MDR = SP + MDR

Такое ограничение существует, поскольку для операции сложения (в отличие от увеличения или уменьшения на 1) один из операндов должен быть значением регистра Н. Точно так же могло бы пригодиться, например, такое выражение:

Н = Н - MDR

Однако оно недопустимо, поскольку единственным возможным источником вычитаемого является регистр Н. В ассемблере не должно быть выражений, которые кажутся пригодными, но в действительности недопустимы.

В нашей системе записи допускается использование нескольких операторов присваивания. Например, чтобы прибавить 1 к регистру SP и сохранить полученное значение в регистрах SP и MDR, нужно записать следующее:

SP = MDR = SP + 1

Для обозначения процессов считывания из памяти и записи в память слов по 4 байта мы будем вставлять в микрокоманду операторы rd и wr. Для вызова байта через однобайтный порт используется оператор fetch. Операции присваивания и операции взаимодействия с памятью могут происходить в одном и том же цикле. То, что происходит в одном цикле, записывается в одну строку.

Чтобы избежать путаницы, напомним еще раз, что Mic-1 может обращаться к памяти двумя способами. При чтении и записи 4-байтных слов данных используются регистры MAR и MDR. Эти процессы показываются в микрокомандах операторами rd и wr соответственно. При чтении однобайтных кодов операций из потока команд используются регистры PC и MBR. В микрокоманде это показывается оператором fetch. Оба типа операций взаимодействия с памятью могут происходить одновременно.

Однако один и тот же регистр не может получать значение из памяти и тракта данных в одном и том же цикле. Рассмотрим фрагмент программы:

MAR = SP; rd MDR = H

В результате выполнения первой микрокоманды значение из памяти приписывается регистру MDR в конце второй микрокоманды. Однако вторая микрокоманда в то же самое время приписывает другое значение регистру MDR. Эти две операции присваивания конфликтуют, поскольку результаты не определены.

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

Однако программисту иногда нужно совершать переход, условный или безусловный. Запись безусловных переходов проста:

goto label

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

goto Mai ni

Отметим, что в тракте данных происходят обычные операции даже во время выполнения микрокоманд, которые содержат оператор goto. В любой микрокоманде есть поле NEXT_ADDRESS. Оператор goto сообщает ассемблеру, что в это поле вместо адреса микрокоманды, записанной в следующей строке, нужно поместить особое значение. В принципе, каждая строка должна содержать запись goto, но если нужный адрес — это адрес микрокоманды, записанной в следующей строке, goto для удобства можно опускать.


⇐ Предыдущая страница| |Следующая страница ⇒

.