Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Непосредственная адресация




Оператор выбора Паскаля

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

Структура оператора выбора в Паскале такова:

Case <ключ_выбора> of <список_выбора> [else <оператор_иначе>] end

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

  • <ключ_выбора> - выражение порядкового типа;
  • <список_выбора> - одна или более конструкций вида:
    • <константа_выбора>: <оператор>;
  • <константа_выбора> - константа того же типа, что и выражение
    • <ключ_выбора>;

<операторы> - произвольные операторы Паскаля.

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

Например, составим программу, которая по номеру дня недели выводит на экран его название:

Пример программы с использованием Case of

Program dni_nedeli;
Var n: byte;
Begin
Readln(n);
Case n of
1: writeln(‘понедельник ’);
2: writeln(‘вторник ’);
3: writeln(‘среда ’);
4: writeln(‘четверг ’);
5: writeln(‘пятница ’);
6: writeln(‘суббота ’);
7: writeln(‘воскресенье’);
else writeln(‘дня недели с номером’, n,’нет’);
end;
end.

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

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Пример программы с использованием Case of с несколькими переменными

Var ch: char;
Begin
Readln(ch);
Case ch of
N, n: writeln(‘Да ’);
Y, y: writeln(‘Нет ’);
End;
End.

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

 

3.

Непосредственная адресация

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

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

В 50-60% команд с непосредственной адресацией длина операнда не превыша­ет 8 бит, а в 75-80% — 16 бит. Таким образом, в подавляющем числе случаев шест­надцати разрядов вполне достаточно, хотя для вычисления адресов могут потре­боваться и более длинные константы.

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

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

При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение, то есть адрес­ный код совпадает с исполнительным адресом.

При всей простоте использования способ имеет существенный недостаток -ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомен­дуется). Это ограничивает возможности по произвольному размещению програм­мы в памяти.

Косвенная адресация

Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указы­вается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда:

Этот способ известен как косвенная адресация (КА). Запись к) озна­чает содержимое ячейки, адрес которой указан в скобках.

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

Недостатком косвенной адресации является необходимость в двукратном об­ращении к памяти: сначала для извлечения адреса операнда, а затем для обраще­ния к операнду. Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда.

Регистровая адресация

Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессора.

Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или че­тыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).

Двумя основными преимуществами регистровой адресации являются: корот­кое адресное поле в команде и исключение обращений к памяти. К сожалению, возможности по использованию регистровой адре­сации ограничены малым числом РОН в составе процессора.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 335 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2524 - | 2183 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.