Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Вариант 18.docx
Скачиваний:
25
Добавлен:
17.06.2016
Размер:
188.59 Кб
Скачать

4.2. Моделирование процесса выполнения программы

Моделирование заключается в описании последовательности микроопераций, выполняемых функциональными блоками ЭВМ при интерпретации инструкций (команд) ЭВМ, составляющих объектную программу, и результатов, получаемых с помощью этих микроопераций. Для выбора очередной выполняемой микрооперации в алгоритме функционирования ЭВМ служат операторы проверки признаков, характеризующих результат действия микроопераций. При моделировании необходимо также описать конкретные значения указанных признаков, используемых в процессе интерпретации команды. Моделированию подвергаются следующие команды: READ и WR.

READ [REG], необходимо прочитать Аi и переместить в Акк. В REG находится адрес R1 00000400

  1. Проверяем триггер пуска. Тп=1.

  2. Проверяем условие INTR=1. INTR=0 прерывания нет.

  3. Выборка очередной команды

    1. Запись указателя на текущую инструкции в регистр адреса (RA←IP=104), сигнал V1

    2. Ожидание готовности памяти (проверка ReadyRam = 1), сигнал Y0

    3. Копирование инструкции из регистра RD →RI, сигнал V2

      00100

      11

      0000000000000 0000 00000000

  4. Проверка кода операции на равенство 00000. Код выбранной операции не равен 00000 и соответствует коду операции READ (00100)

  5. Вычисление исполнительного адреса операнда. Способ адресации – косвенная 11. Перемещаем в RA содержимое регистра косвенной адресации REG, Y11

  6. Перемещаем операнд из памяти, т. к. СА=11

    1. Включение режима чтения из памяти (RD RAM устанавливаем равным 1)

    2. Инициализация ячейки памяти (адрес 400)

    3. Ожидание готовности памяти (проверка ReadyRam = 1), сигнал Y0

  7. Перемещаем операнд A0 = 17 из RD в Акк, сигнал Y5

  8. Увеличение указателя текущей команды IP=104+4=108, сигнал Y2

  9. Возврат в начало цикла (Тп=1).

Вывод моделирования READ[REG]: моделирование прошло успешно и без ошибок, А0 равное 17 было перемещено в Акк.

WR C2, необходимо переместить содержимое Акк равное 32 в ячейку памяти С2 по адресу 610

  1. Проверяем триггер пуска. Тп=1.

  2. Проверяем условие INTR=1. INTR=0 прерывания нет.

  3. Выборка очередной команды

    1. Запись указателя на текущую инструкции в регистр адреса (RA←IP=174), сигнал V1

    2. Ожидание готовности памяти (проверка ReadyRam = 1), сигнал Y0

    3. Копирование инструкции из регистра RD →RI, сигнал V2

      00011

      01

      0000000000000 011000010000

  4. Проверка кода операции на равенство 00000. Код выбранной операции не равен 00000 и соответствует коду операции WR (00011)

  5. Вычисление исполнительного адреса операнда. Способ адресации – прямая, СА= 01. Перемещаем в RA содержимое RI[24..0], сигнал Y8

  6. Перемещаем содержимое Акк равное 32 на RD, сигнал Y6

  7. Сохраняем операнд в память.

    1. Включение режима записи в память (WR RAM устанавливаем равным 1)

    2. Инициализация ячейки памяти (адрес 610)

    3. Ожидание готовности памяти (проверка ReadyRam = 1), сигнал Y0

  8. Увеличение указателя текущей команды IP=174+4=178, сигнал Y2

  9. Возврат в начало цикла (Тп=1).

Вывод моделирования WR C2: моделирование прошло успешно и без ошибок, была осуществлена запись в ячейку С2 числа 32.

ADD 32 Необходимо к аккумулятору, в котором содержится значение 0, добавить 32 из адресной части.

  1. Проверяем триггер пуска. Тп=1.

  2. Проверяем условие INTR=1. INTR=0 прерывания нет.

  3. Выборка очередной команды

    1. Запись указателя на текущую инструкции в регистр адреса (RA←IP=170), сигнал V1

    2. Ожидание готовности памяти (проверка ReadyRam = 1), сигнал Y0

    3. Копирование инструкции из регистра RD →RI, сигнал V2

10011

10

0000000000000000000 100000

  1. Проверка кода операции на равенство 00000. Код выбранной операции не равен 00000 и соответствует коду операции ADD (10011)

  2. Вычисление исполнительного адреса операнда. Способ адресации –непосредственная (10) В Акк хранится значение (0)

  3. Перемещаем операнд 32 – из адресной части в RD. Однако, для перемещения необходима связь напрямую адресной части и регистра данных. На регистровой схеме же у нас представлено только соединение полностью RI c RD, что не дает нам необходимой связи. Отсюда, необходимо внести изменения в регистровую схему, соединив непосредственно адресную часть RI и регистр данных RD, связав их сигналом Y9. (На странице 19 представлена уже исправленная схема)

  4. Так как. СА=10 выборка из памяти операнда не производится.

  5. Сразу выполняем следующий шаг перемещает операнд 32 из RD в R0, сигнал Y7.

  6. Выполняем арифметическую операцию:

    1. Пуск ALU, сигнал Y10

    2. Ожидание готовности памяти (проверка условия ReadyRam=1), сигнал Y0

  7. Увеличение указателя текущей команды IP=170+4=174, Y2

  8. Проверка условия переполнения ОVR == 1, если OVR=1, то имеет место переполнение и необходимо выставить Тп=0, если же OVR = 0, то переполнения нет, и идем в начало цикла, в нашем случае OVR = 0.

  9. Возврат в начало цикла (Тп=1).

Вывод моделирования ADD 32: в процессе моделирования была найдена ошибка в регистровой схеме (отсутствовала связь между адресной частью RI и регистром данных RD, тем самым не давая возможности использовать непосредственную адресацию). Ошибка устранена.