Документ взят из кэша поисковой машины. Адрес оригинального документа : http://al.cs.msu.ru/files/bordachenkova.architecture.model.machines.2010.doc
Дата изменения: Mon Nov 19 15:12:17 2012
Дата индексирования: Sat Feb 2 22:33:26 2013
Кодировка: koi8-r

АРХИТЕКТУРА ЭВМ. УЧЕБНЫЕ МАШИНЫ

Бордаченкова Е.А.


Пособие предназначено для студентов первого курса факультета ВМиК в
поддержку курса "Архитектура ЭВМ и язык ассемблера".

В первом семестре Вы уже познакомились с понятием "алгоритм". Как Вы
помните, алгоритм описывает действия, которые исполнитель произведёт над
объектами для достижения некоторой цели. В этом пособии мы рассмотрим
пример одного возможного исполнителя, а именно электронно-вычислительную
машину (ЭВМ, или компьютер). Мы разберем, как устроен компьютер и как
именно он выполняет алгоритм.


(1. Принципы фон-Неймана.



П.1. Свойства ЭВМ.

Целью создания первых вычислительных машин было облегчить, упростить
громоздкие арифметические вычисления, которые приходилось выполнять при
решении физических и инженерных задач. Для того чтобы производство
вычислительной машины экономически оправдало себя, нужно чтобы
1. машина была универсальной - пригодной для решения не одной
конкретной задачи, а целого класса задач.
2. машина должна обладать достаточным быстродействием. (Быстродействие
- скорость вычислений). Чем выше быстродействие, тем больше задач решает
машина за фиксированный отрезок времени. Тем эффективнее работа машины.
3. стоимость производства машины не должна быть очень большой.


П.2. Принципы фон-Неймана.


В 1943 г. американский математик Джон фон-Нейман описал как, по его
мнению, должна быть устроена машина для вычислений. Сформулированные им
принципы получили название "принципов фон-Неймана", а машины, построенные в
соответствии с ними, стали называть фон-Неймановскими. Большинство
современных ЭВМ являются фон-Неймановскими.
Основными частями ЭВМ являются процессор и память. Процессор
управляет работой компьютера; обеспечивает выполнение программ. Память
(оперативная память) служит для хранения данных и программы во время
работы компьютера.
| |О.П. |
|0 | |
|1 | |
|. | |
|. | |
|. | |
|N-1 | |


Оперативная память состоит из элементов - ячеек. Каждая ячейка имеет
свой номер, который называется адресом. Если в памяти N ячеек, они
нумеруются от 0 до N-1. Ячейка состоит из разрядов. Каждый разряд содержит
одну двоичную цифру (0 или 1). Количество разрядов во всех ячейках
одинаково и называется разрядностью машины.

Принципы фон-Неймана.
1. Линейная организация памяти.
Ячейки памяти располагаются последовательно по возрастанию номеров.
2. Прямой доступ к элементам памяти.
Доступ к ячейке осуществляется по её адресу, в каждый момент работы
компьютера можно обратиться к любой ячейке памяти.
Этот принцип обеспечивает облегчение программирования, удобство и
надежность использования ЭВМ. (Вспомните машину Тьюринга. Для доступа к
ячейке, отстоящей, например, на три ячейки правее данной, требовалось
вводить три дополнительных состояния.)
3. Использование двоичной системы для хранения и обработки информации.
Этот принцип следует прежде всего из практических соображений:
довольно легко с помощью электронных устройств реализовать два возможных
состояния - 0 и 1.
4. Принцип хранимой программы.
Программа, управляющая процессом вычислений, хранится в памяти машины.
Этот принцип обеспечивает универсальность ЭВМ. (Сравним с машиной
Тьюринга: каждая машина Тьюринга имела одну программу и могла решать только
одну задачу! )
5. Машинные операции.
Существует набор действий по обработке данных, выполняемых аппаратно
(реализованных в виде электронных схем). Эти действия называются машинными
операциями.
Чем больше машинных операций, тем легче программировать для ЭВМ и тем
выше ее быстродействие. ( Вспомните, чтобы прибавить 1 к числу с помощью
МТ, требовалось написать достаточно объемную программу.)
Каждой машинной операции соответствует машинная команда -
последовательность нулей и единиц, которую может понять и выполнить
процессор.
Таким образом, содержащиеся в ячейке памяти нули и единицы могут
изображать данное, а могут являться командой. Что же именно записано в
ячейке - данное или команда - определяется во время работы ЭВМ. В
дальнейшем мы обсудим подробнее этот вопрос.
Итак, команда - это приказ процессору выполнить машинную операцию.
Последовательность команд называется программой.
6. Последовательное исполнение команд.
Команды, записанные в памяти компьютера, выполняются последовательно, друг
за другом.

(2. Структура ЭВМ.

Вычислительная машина состоит из следующих компонент

[pic]

Назначение компонент.

|Процессор |( управляет работой ЭВМ, обеспечивает выполнение |
| |программ. |
|Оперативная |( используется для хранения данных и программ во время |
|память |работы ЭВМ |
|Внешние |( служат для связи ЭВМ с внешним миром |
|устройства | |


Рассмотрим структуру и работу каждой из компонент.


П.1. Процессор. Такт работы процессора.


[pic]
ЦП
Процессор включает в себя следующие устройства.




|АЛУ (арифметическое |( оно выполняет арифметические и логические |
|устройство) |операции (например, сложение, вычитание, |
| |умножение) |
|УУ (устройство управления) |( управляет работой процессора |


Регистры - специальные ячейки, которые находятся в ЦП.

|РК (регистр команды) |содержит машинную команду, которую выполняет в |
| |данный момент процессор. |
|СА (счетчик адреса) |содержит адрес следующей команды. |
|СС (слово-состояние) |содержит информацию о результате выполнения |
| |команды. |

Выполнение процессором одной машинной команды назовём тактом работы
процессора.
Рассмотрим, как процессор выполняет машинную команду на примере
команды
[pic]
Пусть 01 изображает код операции (КОП) "сложение"; А1, А2, А3 -
адреса первого операнда, второго операнда и результата соответственно.
1. В РК считывается из ОП команда, адрес которой записан в СА.
2. Содержание СА увеличивается на 1, так что теперь в СА получился
адрес следующей команды программы.
3.УУ анализирует содержимое РК и организует выполнение команды.
Выделяется КОП. Определяется, что надо выполнить операцию "сложение".
Определяются А1, А2, А3. Содержимое ячеек ОП с адресами А1, А2 пересылаются
в АЛУ. Далее АЛУ выполняет действие сложение. Результат сложения из АЛУ
пересылается в ячейку памяти с адресом А3. В регистр СС записывается
информация об удачном (или неудачном) окончании выполнения сложения.
Далее работа повторяется с первого шага.
Ранее мы отмечали, что ячейка ОП может содержать данное или команду.
Теперь понятно, как процессор отличает данное от команды: если адрес ячейки
встретился в команде как адрес операнда, процессор обрабатывает содержимое
ячейки как данное; если адрес ячейки получился в счетчике адреса, процессор
обрабатывает содержимое ячейки как команду. Содержимое одной и той же
ячейки в один момент работы процессора может трактоваться как данное, а в
другой - как команда.
Перед началом работы процессора в регистр СА записывается аппаратно
всегда один и тот же адрес, и первая команда программы должна располагаться
в ОП в ячейке именно с этим адресом.



П.2. Оперативная память.


Мы касались устройства оперативной памяти в (1. Напомним основные
сведения.
| |О.П. |
|0 | |
|1 | |
|. | |
|. | |
|. | |
|N-1 | |


Оперативная память (ОП) состоит из ячеек. Каждая ячейка имеет свой
адрес - число от 0 до N-1. Количество ячеек (N) называется объемом ОП.
Заметим, что объем ОП и размер регистра СА взаимосвязаны: количество
разрядов в СА должно быть достаточно для хранения любого возможного адреса.
(Наибольший возможный адрес в нашем предположении N-1.)
Ячейки состоят из разрядов. Количество разрядов во всех ячейках
одинаково и называется разрядностью машины. Каждый разряд содержит одну
двоичную цифру. Иногда разряды называются битами. В программировании слово
"бит" используют в двух смыслах:
Бит - один двоичный разряд ячейки.
- содержимое одного двоичного разряда.
Содержимое ячейки называют словом или машинным словом.
Содержимое ОП. Ячейки могут хранить данные и команды. Команды,
составляющие программу, обычно располагаются в ОП последовательно, друг за
другом. Что именно содержит ячейка - данное или команду - определяется в
момент использования содержимого ячейки.
Работа ОП. Заметим, что ячейка ОП всегда имеет некоторое содержимое. В
самом деле, электронное устройство, являющееся разрядом в ячейке,
обязательно находится в каком-нибудь состоянии; это состояние изображает
"0" или "1". Таким образом, ячейка заполнена нулями и единицами. Однако это
содержимое не имеет никакого смысла. Для того, чтобы можно было
обрабатывать данное, содержащееся в ячейке, надо сначала это данное
записать в ячейку.
Итак, есть две основные операции работы с ОП:
1. Запись данного в ячейку.
ЦП сообщает ОП, чт( именно надо записать и по какому адресу. При записи в
ячейку ее старое содержимое теряется, становится недоступным.
2. Чтение содержимого ячейки.
ЦП передает ОП нужный адрес. Содержимое ячейки с этим адресом считывается и
пересылается в ЦП. При чтении содержимое ячейки не изменяется.
Чтение и запись в ОП производится специальными электронными схемами.
При выключении вычислительной машины содержимое ОП теряется.


П.3. Внешние устройства.


Внешние устройства служат для связи ЭВМ с окружающим миром. Обычно к
ЭВМ подключаются клавиатура, монитор (экран, дисплей), внешние запоминающие
устройства (жесткие диски, дисководы для гибких дисков) и мышь. В
зависимости от того, для каких целей используют ЭВМ, набор подключенных к
ЭВМ устройств может сильно изменяться. К внешним устройствам относятся:
принтер (печатающее устройство),
устройство для работы с магнитными лентами,
сканер (устройство для ввода графических изображений),
модем (устройство для связывания компьютеров через телефонную сеть),
устройство чтения с лазерных дисков
и другие специальные приборы.
[pic]
Для подключения внешних устройств в ЭВМ имеются каналы.
Канал - аппаратура и программное обеспечение (программы), занимающиеся
передачей сигналов между ЭВМ и внешним устройством.
Во внешнем устройстве есть контроллер.
Контроллер - аппаратура и программное обеспечение, которое
обрабатывает сигналы ЭВМ и подготавливает данные для устройства. Контроллер
учитывает особенности работы своего внешнего устройства.
Внешние устройства работают намного медленнее процессора. Для того,
чтобы процессор не простаивал во время работы внешнего устройства,
организуется параллельная работа процессора и внешнего устройства.
Пусть процесс решения некоторой задачи состоит из трех отрезков счета
(работы ЦП), двух печатей и одной записи данных на диск:
[pic]

По окончании этапа Счет 1, когда получены данные для первой печати,
принтер может заняться печатью, а ЦП может продолжить решение задачи. После
получения данных для диска, дисковод начинает записывать, а ЦП может
продолжить работу. В итоге, общее время решения задачи сократится.
[pic]
Параллельная организация работы устройств позволяет повысить
эффективность использования ЭВМ, увеличить быстродействие, обеспечивая
выполнение второго свойства вычислительных машин.



(3. Учебные машины.

Ранее мы рассмотрели общие принципы построения ЭВМ. В данном параграфе
мы разберем 4 учебные вычислительные машины. Эти машины называются
учебными, потому что они не существуют на самом деле. Однако они помогут
нам представить работу реальных ЭВМ, разобрать некоторые проблемы,
возникающие при построении ЭВМ, и способы решения этих проблем.
Для записи содержимого ячеек будем пользоваться шестнадцатиричными
цифрами.


П.1. Учебная трехадресная машина УМ-3.


1. Структура процессора.
[pic]
Кроме тех регистров, которые мы обсуждали в (2, в арифметическом
устройстве УМ-3 имеются регистры первого операнда ОП1, второго операнда ОП2
и результата РЕЗ.








2. Оперативная память.
Ячейка - 14 шестнадцатиричных разрядов.
Объем ОП - 164 ячеек с адресами 0000(FFFF.
Представление чисел: число содержится в одной ячейке; отрицательные
числа записываются в дополнительном коде.
Представление команд: команда занимает одну ячейку. Разряды ячейки
имеют следующий смысл (формат команд):

| останов |99 |стоп |А1,А2,А3 - любые |
| пересылка |00 |[А1] ( [А3] |А2 - любой |
| | |арифметические | |
| сложение |01 |[А1]+[А2] ( [А3] |Устанавливаются |
| вычитание |02 |[А1]-[А2] ( [А3] |арифметические флаги |
| умножение | | | |
|со знаком |03 |[А1]*[А2] ( [А3] | |
|без знака |13 | | |
| деление | | | |
|со знаком |04 |[А1] div [А2] ( [А3], [А1] mod [А2] ( |
| | |[А3+1] |
|без знака |14 | | |

| | |переходы | |
| безусловный |80 | перейти к А3 |А1,А2 - любые |
|условные | | |После выполнения |
|по = |81 | при [А1]=[А2] |команды перехода работа|
| | |перейти к А3 |продолжается |
|по ( |82 | при [А1]([А2] |с команды, записанной в|
| | |перейти к А3 |ячейке с адресом A3 |
|по ( |с/зн - 83 б/зн -| при [А1]([А2] перейти к А3 |
| |93 | |
|по ( |с/зн - 84 б/зн -| при [А1]( [А2] перейти к А3 |
| |94 | |
|по ( |с/зн - 85 б/зн -| при [А1]([А2] перейти к А3 |
| |95 | |
|по ( |с/зн - 86 б/зн -| при [А1]( [А2] перейти к А3 |
| |96 | |


В таблице использовано обозначение [A] - содержимое ячейки с адресом A.
Арифметические команды выполняются следующим образом: содержимое ячеек
с адресами A1 и A2 пересылается в регистры ОП1 и ОП2, выполняется
арифметическая операция (результат - в регистре РЕЗ), содержимое регистра
РЕЗ пересылается в ячейку с адресом А3. Следует обратить внимание на то,
что есть две команды умножения и две команды деления. Программист
использует подходящую команду в зависимости от того, с какими данными
(числами со знаком или без знака) должна работать программа. Команда
деления дает два результата - частное и остаток. Они записываются в
соседние ячейки: частное - по адресу А3, остаток - в ячейку с адресом А3+1.
Действие команд перехода заключается в изменении содержимого регистра
СА. При этом на следующем такте работы ЦП будет выполнять команду,
записанную в ячейке с адресом А3. (Вспомните (2.)
В командах условного перехода производится проверка соответствующего
условия. Если условие выполняется, тогда в СА записывается адрес А3.
Сравнение значений [ А1] и [А2] выполняется так: в ОП1 записывается [А1], в
ОП2 - [А2]; выполняется вычитание ОП1-ОП2, при этом получают значение все
четыре арифметических флажка. По значениям флагов и определяется
истинность условия. Некоторым условиям (например,<) соответствуют разные
наборы значений флагов для разных данных - чисел со знаком и чисел без
знака. Поэтому команды переходов для чисел со знаком и чисел без знака
разные.
Рассмотрим на примерах соответствие между условиями и значениями
флагов.
1) Переход по равенству. В результате вычитания [А1] - [А2] получится
ZF=1 тогда и только тогда, когда [А1] = [А2].
2) Переход по "меньше", числа без знака.
[А1] < [А2] ( [А1] - [А2] < 0 ( CF=1.
3) Переход по "меньше", числа со знаком. Если вычитаются числа со
знаком, то при [А1] < [А2], [А1] - [А2] < 0, возможны ситуации
а) результат вычислили правильно (OF=0) и он оказался
отрицательным , значение SF=1,
б) результат вычислили неправильно (OF=1), при этом знак
вычисленного значения противоречит знаку числа [А1] - [А2], вычисленный
результат оказался положительным, то есть SF=0.
Таким образом, для чисел со знаком

[А1] < [А2] ( [А1] - [А2] < 0 ( (OF=1) and (SF=0) or (OF=0) and
(SF=1), или более коротко OF ( SF. При выполнении команды перехода по
"меньше" для чисел со знаком процессор проверяет выполнимость условия OF (
SF.

4. Разберем теперь несколько примеров программ для УМ-3. Условимся,
что перед началом работы
1) в СА записывается 0100, то есть выполнение начинается с
команды по адресу 0100,
2) в ячейки ОП уже записаны все данные, необходимые для работы
программ (ввод и вывод не рассматриваем).
Пример 1. Вычислить значение x= ( a mod 50 - b )2 по заданным a и b.
Поскольку в выражении есть операция вычитания, лучше работать с числами со
знаком. Пусть данные располагаются в следующих ячейках

| Адрес |Содержимое |
|0000 |a |
|0001 |3216 (=5010) |
|0002 |b |
|0003 |x |
|0004 |рабочая (потребуется для деления) |

Программа.

|Адрес |Содержимое ячейки |Комментарий |
|0100 |04 0000 0001 0003 |a mod 50 ( [0004] |
|0101 |02 0004 0002 0003 |[0004] - b ( x |
|0102 |03 0003 0003 0003 |x(x ( x |
|0103 |99 0000 0000 0000 |стоп |

Напомним, что деление даёт два результата, поэтому первая команда
программы записывает в [0003] x div 50 (это значение в дальнейшем не
используется) и в [0004] a mod 50.
Пример 2. Вычислить
S1 = max(a,b) * 20,
S2 = min(a,b) div 3.
Вычисления организуем так:
begin if a < b then begin S1 := b; S2 := a end
else begin S1 := a; S2 := b end;
S1 := S1 * 20;
S2 := S2 div 3
end.
Данные:
0000 a
0001 b
0002 1416 (=2010)
0003 3
0004 S1
0005 S2
0006 рабочая.
Будем считать, что работаем с числами без знака.
Программа:
|Адрес |Содержимое ячейки |Комментарий | |
|0100 |94 0000 0001 0104 |if a(b, go to 0104| |
|0101 |00 0001 0000 0004 |S1 := b |часть |
|0102 |00 0000 0000 0005 |S2 := a |then |
|0103 |80 0000 0000 0106 |go to 0106 | |
|0104 |00 0000 0000 0004 |S1 := a |часть |
|0105 |00 0001 0000 0005 |S2 := b |else |
|0106 |13 0004 0002 0004 |S1 := S1 * 20 | |
|0107 |14 0005 0003 0005 |S2 := S2 div 3 | |
|0108 |99 0000 0000 0000 |стоп | |

Пример 3. Вычислить p = n!.
Алгоритм:
begin p:=1; k:=2;
while k ( n do
begin p := p * k;
k := k + 1
end
end.
В этой задаче могут возникнуть довольно большие положительные числа,
поэтому будем работать с числами без знака.
Данные:
0000 n
0001 1
0002 2
0003 p
0004 k
Программа:
|0100 |00 0001 0000 0003 |p :=1 |
|0101 |00 0002 0000 0004 |k := 2 |
|0102 |95 0004 0000 0106 |if k > n, go to 0106|
|0103 |13 0003 0004 0003 |p := p * k |
|0104 |01 0004 0001 0004 |k := k + 1 |
|0105 |80 0000 0000 0102 |go to 0102 |
|0106 |99 0000 0000 0000 |стоп |

Заметим, что в машинной программе начало цикла while k ( n do заменилось на
переход на конец программы по отрицанию условия. Тело цикла заканчивается
безусловным переходом на начало цикла.


П.2. Учебная двухадресная машина УМ-2.


Анализ большого числа программ показывает, что только 25% команд
содержат три различных адреса. В остальных командах либо два, либо все три
адреса совпадают. Этот факт наталкивает на идею отказаться от одного из
адресов - сделать команды двухадресными. Тогда можно использовать
освободившиеся разряды для задания более длинных адресов - появляется
возможность адресовать б(льший объем памяти. Либо можно сократить размер
ячейки, сделав более дешевой оперативную память.
Как избавиться от третьего адреса? В УМ-3 существенно трехадресными
были арифметические команды и команды условного перехода.
а) Арифметические команды. Договоримся, что результат записывается на
место первого операнда (по адресу А1).
б) Команды условного перехода. Можно разбить команду на две, выделив в
отдельную команду действие сравнения.

1. Описание УМ-2.
Структура процессора та же, что и в УМ-3; разрядность регистров
соответствует разрядности ячейки и объему ОП.
Ячейка ОП - 10 шестнадцатиричных разрядов.
Объем ОП - 164 ячеек.
Представление чисел. Число занимает одну ячейку. Отрицательные числа
записываются в дополнительном коде.
Формат команд. Команда занимает одну ячейку:

| | | | | | | | | | |


( ( ( ( ( (
КОП А1 А2

Система команд. Коды операций те же, что в УМ-3. Отличия заключаются в
следующем.

|Команды |Действие |
|Пересылка 00 А1 А2 |[А1] := [А2] |
|Арифметические |[А1] := [А1] ( [А2], где ( ( {+, -, *} |
|команды | |
|Деление |вычисляет частное и остаток от деления [А1] на |
| |[А2]; частное записывается в [А1], остаток в |
| |[А1+1] |
|Сравнение 05 А1 А2 |вычисляется [А1] - [А2], устанавливаются |
| |арифметические флаги; результат вычитания не |
| |сохраняется |
|Условные переходы |переход по А2, если условие выполняется; А1 не |
|КОП А1 А2 |используется |

Остальные команды те же, что в УМ-3.

2. Рассмотрим два примера программ для УМ-2.
Пример 1. Вычислить значение x= ( a mod 50 - b )2 по заданным a и b.
Распределение памяти:
0000 a
0001 x
0002 3216 (=5010)
0003 b
Программа:
|0100 |04 0000 0002 |x := a mod 50|
|0101 |02 0001 0003 |x := x - b |
|0102 |03 0001 0001 |x := x * x |
|0103 |99 0000 0000 |стоп |

Пример 2. Вычислить p = n!.
Алгоритм:
begin p:=1; k:=2;
while k ( n do
begin p := p * k;
k := k + 1
end
end.
Распределение памяти:
0000 1
0001 2
0002 n
0003 p
0004 k.
Программа:
|0100 |00 0003 0000 |p := 1 |
|0101 |00 0004 0001 |k := 2 |
|0102 |05 0004 0002 |k ( n ? |
|0103 |95 0000 0107 |k > n, go to 0107 |
|0104 |13 0003 0004 |p := p * k |
|0105 |01 0004 0000 |k := k + 1 |
|0106 |80 0000 0102 |go to 0102 |
|0107 |99 0000 0000 |стоп |



П.3. Учебная машина с регистрами УМ-Р.


Вспомним, как выполняется арифметическая команда. Процессор обращается
к ОП для получения операндов и для записи результата. Поскольку ОП внешнее
по отношению к ЦП устройство, на это взаимодействие затрачивается б(льшая
часть времени выполнения команды. Кроме того, часто оказывается, что
результат, полученный ЦП в предыдущей команде, требуется в качестве
операнда для выполнения следующей команды. Принимая во внимание эти
обстоятельства, имеет смысл включить в ЦП несколько ячеек памяти. Так как
этих ячеек будет немного, можно сделать их более быстродействующими (и,
видимо, более дорогими), чем ячейки ОП. Такие ячейки, расположенные в ЦП,
называются регистрами. Программист может использовать эти регистры по
своему желанию для хранения информации, в отличие от других регистров
процессора. Поскольку регистров немного, для указания их в команде
требуется меньше разрядов, чем для задания адресов ОП. Использование
регистров позволяет сократить размер программ.

1. Описание УМ-Р.
Кроме обычных регистров, ЦП содержит 16 регистров общего назначения.
Регистры нумеруются от 0 до F16. Размер регистров совпадает с разрядностью
чисел.
Ячейка ОП состоит из четырех шестнадцатиричных разрядов.
Объем ОП - 165 ячеек.
Число занимает две соседние ячейки, отрицательные числа записываются в
дополнительном коде.
Команды бывают двух типов.
а) Регистр-регистр. Занимает одну ячейку. Формат команды

| | | | |


( (
КОП R1 R2,

где R1 - первый операнд, R2 - второй операнд.
б) Регистр-память. Занимает две ячейки. Формат команды


| | | | | | | | |


( ( ( (
КОП R1 А2,

где R1 - первый операнд, A2 - адрес второго операнда.
Система команд следующая:

|Название |КОП |Регистр-память |КОП |Регистр-регистр |
| останов | | |99 | стоп |
| пересылки |00 | R1:=(A2,A2+1) |20 | R1:=R2 |
| |10 | R1((A2,A2+1) | | |
| | |арифметические | | |
| сложение |01 |R1:=R1+(А2,A2+1) |21 | R1:=R1+R2 |
| вычитание |02 |R1:=R1-(А2,A2+1) |22 | R1:=R1-R2 |
| умножение | | | | |
|со знаком |03 |R1:=R1*(А2,A2+1) |23 | R1:=R1*R2 |
|без знака |13 | |33 | |
| деление | | | | |
|со знаком |04 | R1:=R1 div |24 |R1:=R1 div R2, |
| | |(А2,A2+1), | |(R1+1):=R1 mod R2 |
| | |(R1+1):=R1 mod | | |
| | |(А2,A2+1) | | |
|без знака |14 | |34 | |
| сравнение |05 |R1-(А2,A2+1) |25 | R1-R2 |
|переходы по А2 (типа регистр-память)(R1- любой) |
| безусловный |80 | | | |
|по = |81 | | | |
|по ( |82 | | | |
|по ( | с/зн - 83| б/зн - 93 | |
|по ( | с/зн - 84| б/зн - 94 | |
|по ( | с/зн - 85| б/зн - 95 | |
|по ( | с/зн - 86| б/зн - 96 | |


2. Примеры.
Для удобства чтения программы будем записывать, располагая по одной
команде на строке. Тот факт, что команды имеют разную длину, будем
учитывать при подсчете адресов команд.
Пример 1. Вычислить значение x= ( a mod 50 - b )2 по заданным a и b.
Распределение памяти:
00000 a
00002 b
00004 3216 (=5010)
00006 x
Программа:
|00100 |00 0 00000 |R0 := a |
|00102 |04 0 00004 |R1 := a mod 50 |
|00104 |02 1 00002 |R1 := R1 - b |
|00106 |23 1 1 |R1 := R1 *R1 |
|00107 |10 1 00006 |x := R1 |
|00109 |99 0 0 |стоп |


Пример 2. Вычислить
S1 = max(a,b) * 20,
S2 = min(a,b) di