Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_140800 / 2011-2012-учебный год / 1_семестр / Сам_изуч / !!!!!_0А14_0А15_0А16_пропавшая_лекция.doc
Скачиваний:
61
Добавлен:
30.05.2015
Размер:
259.58 Кб
Скачать

3) По способу формирования адресов ячеек памяти:

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

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

- Б - код базы;

- И - код индекса;

- С - код смещения.

Эти составляющие используются в различных сочетаниях.

Виды относительной адресации:

1) Индексная адресация (рисунок 9).

Рисунок 9

Для формирования адреса операнда используется регистровая память.

Адрес i -операнда в массиве определяется как сумма начального адреса массива операнда, задаваемого смещением S, и индекса i , записанного в одном из регистров регистровой памяти, называемым индексным регистром.

Адрес индексного регистра задается в команде полем адреса индекса Аи.

В каждом i-том цикле содержимое индексного регистра изменяется на постоянную величину, как правило, это 1.

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

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

3) Стековая адресация. Стековая память широко используется в современных ЭВМ. Хотя адрес обращения в стек отсутствует в команде, он формируется схемой управления (рисунок 9):

Рисунок 9

Для чтения записи доступен только один регистр - вершина стека.

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

Стековая память реализуется на основе обычной памяти с использованием указателя стека и автоиндексной адресации. Логически ячейки памяти, отводимые под стек, организованы так, чтобы считывание последнего записанного адреса производилось первым, а первого записанного адреса производилось последним. Такая логическая организация формируется специальным счётчиком. Этот счётчик называется указателем стека SP – это регистр микропроцессора. Ячейка памяти, в которую в данный момент может быть записан, например адрес возврата из подпрограммы, называется вершиной стека. Количество ячеек памяти, предназначенных для организации стека, называется глубиной стека. Последняя ячейка памяти, в которую можно производить запись называется дном стека. Запись в стек производится с использованием автодекрементной адресации, а чтение - с использованием автоинкрементной адресации (рисунок 10).

Рисунок 10

Пример. Вызов подпрограммы, написанной на языке С.

В языке С подпрограммы называются функциями. Функция может иметь аргументы и локальные переменные, т. е. переменные, существующие только в процессе выполнения функции. Предположим, функция зависит от двух входных аргументов х и у целого типа и использует три локальные переменные а, b и с также целого типа. Функция возвращает целое значение.

Подпрограмма:

Основная программа:

Например, в определённом месте программы вызывается функция f с аргументами х = 2, у = 3. Вызывающая программа помещает фактические значения аргументов х и у функции f в стек, при этом наверху стека лежит первый аргумент функции, под ним — второй аргумент. При выполнении инструкции вызова функции вверх стека помещается также адрес возврата. В начале работы функции f стек имеет следующий вид:

Перед выполнением функция f должна захватить в стеке область памяти под свои локальные переменные а, b, с.

Множество реализуемых машинных действий образует её систему команд.

Несмотря на большое число разновидностей ЭВМ, на самом низком (“машинном”) уровне они имеют много общего.

Система команд любой ЭВМ обязательно содержит следующие группы команд обработки информации:

1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.

- обмен между регистрами процессора,

- процессора и оперативной памятью,

- процессора и периферийными установками.

2. Арифметические операции. К основным арифметическим операциям обычно относятся сложение и вычитание (последняя чаще всего сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным алгоритмам.

3. Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Например, операции сравнение или известные логические операции И, ИЛИ, НЕ. Кроме того, к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

4. Сдвиги двоичного кода влево и вправо. Для доказательства важности этой группы команд достаточно вспомнить правило умножения столбиком: каждое последующее произведение записывается в такой схеме со сдвигом на одну цифру влево. В некоторых частных случаях умножение и деление вообще может быть заменено сдвигом (вспомните, что дописав или убрав ноль справа, т.е. фактически осуществляя сдвиг десятичного числа, можно увеличить или уменьшить его в 10 раз).

5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.

6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего относят условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором – типа «останов» или НОП («нет операции»). Иногда их выделяют в особую группу.

Рассматривая систему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором – RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически. Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, , получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации “отброшенных” команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования.