Индексный регистр

Стек

Автоинкремент/декремент

Косвенные адреса

Цикл смешанного типа

Цикл итерационного типа

Для вычисления f(x)=у с погрешностью, не превышающим ∑, используется следующий алгоритм:

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

Схема:

Цикл имеет 2 выхода. Вычисления f(x) производятся пока не выполнится одно из условий: и – N - ∑≠0

Схема:

В цикле нужно контролировать число проверенных элементов и вовремя прекратить поиск. В программной части имеет место случаи, когда цикл должен быть повторен через некоторое время после изменения переменной в ячейке со счтетчиком, но команды в ячейке цикла уже изменены посредством переадресации. Тога посе выхода из цикла надо установить начальный вид команды. Для этого в алгоритм вводят блок восстановления, где имеет место D+S (Снач. → D).

Структура цикла с учетом возможной переадресации и восстановления:

Переадресация - пример обработки команд и данных. Однако лучше этого избегать, т.к в программе будет меньше ошибок и в случае появления их будет легче локализировать. Избежать переменных команд можно с помощью косвенных адресов и с помощью индексных регистров.

В КС с РОН удобно в организации циклов использовать команды с косвенной регистровой адресацией.

1. D(CN) → H – установка указателя на первый элемент массива аргументов

2. D+1 A+1 → R1 – начальное значение счетчика

3. D+2 B+1 → R2 – установка указателя на первый элемент массива результатов

4. D+3 ((R1))x(Cx) → R1 – основные вычисления

5. D+4 ((R1))x(Cz) → R2 – продвижение указателя элемента

6. D+5 (R2)+(C1) → R2

7. D+6 (H1) – (C1) → H – продвижение счетчика, выработка признака результата

8. D+7 zF =0? Да → 0+8, нет → нет 0+3 – условие перехода

Большинство циклов короткие, а команды переадресации и восстановления занимают место и время. Нужны изменения в архитектуре, а именно использование адресации с автокрементом/декрементом.

Команда: ((R1)+)≠((R2)) → R0

Алгоритм:

1. ((УК)) → РК

2. (УК) + 1 → УК

3. Дешифрация р

4. ((R1)) →r1

5. (R1) + 1 → R1 – инкремент

6. (R2) – 1 → R2 – декремент

7. ((R2)) → r2

8. (r1)p(r2) → r3

9. (r3) → R0

10. Переход к пункту 1

Разновидность косвенной адресации автокрементом/декрементом. Физически это часть ОП, доступ к которой организован спец. Образом (LIFO). Для стека выделяется участок памяти от ячейки А до В. Ячейка В имеет наибольший адрес - это дно стека. Ячейка А с наименьшим номером - вершина стека. За ней следует специальный стековый регистр (Rsp). Если (Rsp)=А, то А вершина стека. Если ячейки стека заполнены и нужно извлечь данные, то можно сделать это по указанию стекового регистра. После извлечения содержимое регистра увеличивается на единицу, т.к переместится вниз. Помещая новые данные в стек, указатель переместится вверх(-1).

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

Стековая команда имеет вид:

Р Rsp R(c)

Запись в стек из регистра:

1. ((УК)) → РК

2. (УК)+1 → УК

3. Дешифрация р.

4. (Rsp) – 1 → Rsp

5. (R1) → (Rsp)

6. Переход к пункту 1

Пространство стека – обычные ячейки памяти и их можно использовать все стековых команд. Можно изменить содержание ячейки А, а для стека она все равно будет вершиной пока не занесли в стековый регистр новое значение

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

1n, ∑2n, ∑3n

Схема исполнения:

(∑1)р(∑2)→ ∑3

ii+∑i(n*(ИР)

i – исполнительный или эффективный адрес

Пример использования:

1. D(C1) →H - начальные значения счетчика

2. D+1(C1) → ИР – начальные значения индекса (-1)

3. D+2(A1+(ИР)xC)x(Ci)B+(ИР)x∑1 – основные вычисления

4. D+3 (ИР)+(C1) →ИР – продвижение индекса

5. D+4(H) – (C1) →H – продвижение счетчика, выработка признака результата

6. D+5 ZF =? Да → D+6 Нет → D+2

Общий вид команды:

Р I1A1 I2A2 I3A3

Поле каждого адреса 2 числа. При рабе с большим количеством данных или команд, второе число – адрес начала большого блока элемента относительно числа.

Схема образования адреса с использованием ИР:


11+I1 –вычисление эффективного адреса

Сложные циклы(тройные, четверные) требуют некоторого количества индексных регистров. Чем их больше, тем проще организовывать сложные циклы. Есть компьютерная система, где 2, 8, 16 ИР. Но при этом усложняется аппаратная часть или программы будут сложнее.

Сложные команды управления циклом:

- Команда управления +продвижения индекса

В двух или трех адресных командах передачи управления имеет место один существенный адрес. Остальное можно использовать для встраивания в команду дополнительных функций. Можно команду управления совместить с увеличением индекса.

Пример:

1. ((УК)) → РК

2. (УК) + 1 → РК

3. Дешифрировать регистр

4. (R1)+1 → R

5. Если [РПр) and (Np)] ≠ 0, то А2 в УК

6. Перейти к пункту 1

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

Р R1 A2

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

- Команда управления + счетчик

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

Команда вида:

Р R1 A2

Пример:

1. ((УК)) → РК

2. (УК) + 1 → РК

3. Дешифрировать регистр

4. (R1)-1 → R1

5. Если (R1 ≠ 0, то А2 → УК

6. Перейти к пункту 1

Команду используют для продвижения индекса, если надо вести обработку массива в обратном порядке(от больших индексов к меньшим).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: