Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Команды условной передачи управления





Команды, расположенные друг за другом в памяти, машина считывает последовательно. При реализации алгоритма, требующего изменение естественной последовательности выполнения команд в зависимости от результата вычислений, используют команды условной передачи управления, т.е. «переход при условии…» по определенному адресу. Фактически, каждое условие является каким-либо состоянием флагов.

Команды условной передачи управления: JZ, JNZ, JS, JNS, JO, JNO, JSIf Асc < 0 then PC ← CR[ADR]. Если результат операции меньше нуля (Асс < 0), т.е. в знаковом разряде единица, тогда адресная часть команды ADR заносится в регистр PC, тем самым осуществляется переход;

JNSIf Асc > 0 then PC ← CR[ADR]. Переход, если результат операции больше нуля Асс > 0, т.е. в знаковом разряде ноль;

JZ – If Асc = 0 then PC ← CR[ADR]. Переход, если результат операции равен нулю, Асс = 0;

JNZ - If Асc ≠ 0 then PC ← CR[ADR]. Если результат операции не равен нулю, Асс ≠ 0; JO – If |Acc| ≥ 99999 then PC ← CR[ADR]. В данном случае, управление передается при условии переполнения разрядной сетки;

JNO - If |Acc| ≤ 99999 then PC ← CR[ADR]. Переход, если нет переполнения разрядной сетки. Допустим, необходимо возвести в степень (2), положительное число х. Программа должна проверить знак числа х, а затем совершить переход в зависимости от полученного результата. Если число отрицательное, программа завершает работу. Если число положительное, программа должна возвести в степень число, выдать результат арифметической операции и завершить работу. Этот алгоритм можно реализовать с помощью команды JS, которая осуществляет переход, если результат отрицательный.

Порядок выполнения работы:

Дана следующая функция:

Область допустимых значений:

Блок-схема:


Размещение данных в ОЗУ:

Параметр Диапазон ячеек памяти
Программа 000-023
Данные 030-031

Пример вычисления функции:

Адрес Команда Комментарии
Мнемокод Код
  IN   Ввод х
  WR 030   Запись в яейку M(30)
  SUB #1   Сравнение с нижней границей (х-1)
  JS 012   Переход, если разность отрицательна
  RD 030   Чтение ОЗУ
  SUB #051   Сравнение с верхней границей (х - 51)
  JNS 20   Переход, если разность положительна
  RD 030   Вычисление по первой формуле Запись х
  ADD #3   Сложение с содержимым ячейки (х +3)
  MUL 030   Умножение на содержимое ячейки (возведение х*х)
  DIV 030   Деление на содержимое ячейки (х)
  WR 031   Запись в ячейкуМ (31)
  JMP 22   Переход на вывод результата
  RD 030   Чтение ОЗУ
  SUB #2   Сравнение с нижней границей (х - 2)
  JS 20   Переход к ячейке М (20)
  RD 030   Вычисление по второй формуле
  ADD #17   Сложение с содержимым ячейки 030 (х +17)
  DIV #1   Деление на содержимого на 1
  SUB 030   Вычитание из содержимого ячейки 030
  WR 032   Запись результат в ячейку M (32)
  JMP 22   Переход на вывод результата
  OUT   Вывод результата
  HLT   СТОП

Мнемокод программы:

IN

WR 030

SUB #1

JS 012

RD 030

SUB #051

JNS 20

RD 030

ADD #3

MUL 030

DIV 030

WR 031

JMP 22

RD 030

SUB #2

JS 20

RD 030

ADD #17

DIV #1

SUB 030

WR 032

JMP 22

OUT

HLT

Последовательность состояний регистра:

IR = 000020 (20)

PC Acc M(30) M(31)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       

OR = 000040 (40)

Результаты выполнения программы для нескольких значений аргумента


Входные данные Выходные данные
   
   
   
   

 

Вывод: согласно переходам JNS – Если Acc > 0 и JS – Если Acc < 0, были решены функции с областями допустимых значений функции Fi(x), Fj(x).


Задание 4

 

Тема: «Программирование цикла»;

Цель: изучение организации циклических программ с условной передачей управления; исследование порядка функционирования ЭВМ при выполнении команд условной передачи управления;

Техническое обеспечение: персональный компьютер, программная модель учебной ЭВМ;

Основные понятия: косвенная адресация, косвенно-регистровая адресация.

Решение:

Блок-схема алгоритма решения задачи:

Распределение памяти:

Параметр Диапазон ячеек памяти
Программа 000-023
Константы 023-049
Переменные 050-054

Программа в форме таблицы:

Адрес Команда Комментарий
Мнемокод Код
  rd @050   Чтение четных чисел в регистр 050
  div #002   Определение четности элемента массива Деление на 2
  mul #002   Умножение на 2
  sub @050   Вычитание содержимого регистра 050
  js 009   Переход, если больше нуля
  rd @050   Чтение в ячейку 050
  add 052   Сложение с ячейкой 052
  wr 052   Запись ячейки 052
  jmp 012   Иначе возврат в начало
  rd @050   Чтение нечетных чисел в регистр 050
  add 053   Сложение с ячейкой 053
  wr 053   Запись в ячейку 053
  rd 050   Чтение из ячейки 050
  add #001   Сложить 1
  wr 050   Запись ячейки 050
  rd 051   Чтение ячейки 051
  sub #001   Вычесть 1
  wr 051   Запись в ячейку 051
  jnz 0   Переход, если не 0
  rd 052   Чтение ячейки 052
  div 053   Разделить на содержимое ячейки 053
  wr 054   Запись в ячейку в 054
  out   Вывод
  hlt   СТОП

 

Контрольные вопросы

1. Как работает механизм косвенной адресации?

2. Как работает механизм косвенно-регистровой адресации?

3 и 4 вопросы ссылаются на информацию, не приведённую в методическом пособии.

Ответы на контрольные вопросы

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

2. Косвенно-регистровая адресация похожа на обычную косвенную. Только адрес с операндом хранится не в ОЗУ, а в регистрах общего назначения.







Date: 2016-05-14; view: 1687; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.013 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию