Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3-й семестр / Лекции.docx
Скачиваний:
115
Добавлен:
25.12.2020
Размер:
1.66 Mб
Скачать
    1. Примеры выполнения простой программы на эвм

Рассмотрим примеры выполнения простой программы на ЭВМ с различными форматами команд. В качестве примера возьмем вычисление функции

Q=B*C + D*E.

Это выражение содержит две операции умножения и одну операцию сложения.

Предположим, что программа, выполняющая данную функцию, находится в памяти, начиная с адреса 11. Для 4-хадресной ЭВМ данная программа может быть представлена следующей последовательностью команд:

11 MUL B, C, T1, 12 / T1← B*C

12 MUL D, E, T2, 13 / T2← D*E

13 ADD T1, T2, Q, 14/ Q←T1+ = B*C + D*E

Здесь B, C, D, E, Q – адреса ячеек памяти, где хранятся соответствующие числа. T1 и T2 – адреса вспомогательных ячеек памяти.

Для удобства восприятия команд необходимо в тексте программы оставлять комментарии, которые пишутся в строках программы после символа / (слэш). Комментарии могут быть достаточно объемными.

Поскольку последний адрес в команде – адрес следующей выполняемой команды, то в нашем случае, когда команды программы расположены в памяти ЭВМ последовательно, можно обойтись без этого адреса, заменив поле команды регистром счетчика команд, который будет наращивать свое значение на 1 после каждой выполненной команды.

Поэтому, исключив последнее поле в командах, для 3-хадресной ЭВМ имеем следующий текст программы:

11 MUL B, C, T1 / T1← B*C

12 MUL D, E, T2 / T2← D*E

13 ADD T1, T2, Q / Q←T1+ = B*C + D*E

Для двухадресной ЭВМ, которая имеет формат команды, приведенный на рис.1.5, имеем следующее:

MUL B, C / C ← B*C

MUL D, E / E ← D*E

ADD C, E / E←C + E

MOV E,Q / Q←E

К слову сказать, некоторые варианты ВМ размещают результат по адресу не второго, а первого операнда:

OP

AD1

ADR

AD2

Но это различие не принципиально.

Для одноадресной ЭВМ один из операндов перед исполнением команды должен находиться в аккумуляторе. Для этого вводится понятие загрузки аккумулятора. Вводится команда LOAD, LD или специально для загрузки аккумулятора LDA. Также вводится команда выгрузки из аккумулятора «запомнить» - STORE, ST или для аккумулятора STA. Тогда имеем:

LDA B / AC ← B

MUL C / AC← B*C

STA T1 / T1 ← AC

LDA D / AC ← D

MUL E / AC ← AC*D

ADD T1 / AC ← AC + T1 = B*C + D*E

STA Q / Q ← AC = B*C + D*E

Как видим, при уменьшении длины формата команды программа увеличивается в количестве слов, требуемых для выполнения той же функции. Это и понятно, ведь при уменьшении информативности команды (она становится короче) длина программы увеличивается.

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

E

C

D

D

D*E

B

B

B*C

B*C

B*C

B*C

B*C+ D*E

PUSH B

PUSH C

MUL

PUSH D

PUSH E

MUL

ADD

POP Q

Рис.1.8. Пример выполнения вычислений на стековой ВМ

Сравним вычисления на ВМ с различной разрядностью.

Таблица 1.1

Адресность команды

Длина команды, разрядов

Кол-во строк программы

Длина программы, бит

4

52

3

156

3

40

3

120

2

28

4

112

1

16

7

112

стек

4

16

3

5

92

Анализ таблицы позволяет сказать, что при уменьшении количества полей в команде уменьшается общая длина программы, но увеличивается количество строк программы, поскольку информативность команды падает.

Соседние файлы в папке 3-й семестр