Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
акс конспект епта.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
524.14 Кб
Скачать

Переадресация

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

Изменение адресов: ее можно выполнить прибавлением, вычитанием заранее подобранной константы.

Р

А+1

с

В+1

K

m

m

m

C – беззнаковая константа

K и m - число бит в соотв.

D: D+1; ячейка где расположена команда цикла.

Алгоритм:

  1. D(C1)→H – инициализация счетчика

  2. D+1(A+1)^(CJ) →B+1 – вычисление в цикле

  3. D+2(D+1)(v)( C )→D+1 – изменение адреса

  4. D+3(H) – (C2) → H – продвижение счетчика

  5. D+4 zf ≠1, DA→A+1 – нет D+5, условие перехода на ≠ 1

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

Для вычисления 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

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