Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

3.1. Выполнение команд в эвм

Программа, выполняемая в ЭВМ, записана в последовательных ячейках памяти в виде кодов команд. Первоначально, перед выполнением программы, в счетчик команд заносится адрес ячейки памяти, содержащей код первой команды программы. Далее процессор выполняет последовательность следующих операций. Процессор передает содержимое счетчика команд (адрес очередной команды) через шину адреса в регистр адреса памяти ОЗУ. Из адресуемой ячейки памяти извлекается код команды и через шину данных передается в регистр команд процессора. После считывания из памяти содержимого ячейки, адрес которой указывается регистром-счетчиком команд, содержимое этого регистра автоматически увеличивается и становится равным адресу следующей по порядку ячейки памяти. Если команда занимает в памяти ЭВМ два байта, то увеличение СК производится на два. Вслед за этим устройство управления процессора начинает интерпретацию команды, находящейся в его регистре команд. В начале определяется операция, которая должна быть выполнена процессором по данной команде, и, в соответствии с ней, вырабатываются сигналы для управления элементами процессора. Если необходимо, то производится ввод из ОЗУ операндов, затем осуществляется выполнения заданной операции. Результат операции пересылается в один из регистров или в память по адресу, определяемому устройством управления при интерпретации кода команды. На этом цикл выполнения команды заканчивается. Процессор снова помещает содержимое СК (адрес следующей команды) в регистр адреса памяти, производит считывание и выполнение следующей команды.

Система команд и методы адресации

Каждый тип ЭВМ имеет свою систему команд и методов адресации, т.е. способов нахождения операндов. Расширение ЭВМ (переход к более производительным поколениям) связано с увеличением разрядности адресов и операндов, появлением более гибкой системы адресации, новых типов данных и команд.

Команды (инструкции) содержат одно- или двухбайтный код инструкции, за которым могут следовать несколько байт, определяющих режим исполнения команды и операнды. Результат выполнения операции записывается в место, определенное инструкцией или место, заданное операндом назначения. Операнды могут находиться в памяти, регистрах процессора или непосредственно в команде. Типовой набор инструкций включает: команды пересылки данных, арифметическо-логических операций, десятичной коррекции, сдвиговых операций, условных и безусловных переходов по программе и т. д.

Набор команд процессора включает безадресные (без указания операнда), одноадресные (с одним операндом), и двухадресные команды. При этом используются различные метода адресации. Наиболее часто используемые методы:

1. Регистровый метод адресации - операнд находится в регистре, указанном в команде.

2. Косвенно-регистровый метод – указанный в команде регистр (или пара регистров) содержит адрес операнда.

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

4. Абсолютный метод адресации - в байтах следующих за командным словом содержится абсолютный адрес операнда.

Команды условной или безусловной передачи управления (перехода) принудительно изменяют содержимое счетчика команд в соответствии со значением адреса перехода, задаваемого в команде. Обычно используют два способа указания адреса кода программы, на который происходит переход: указывают абсолютный адрес, на который следует перейти, или величину смещения адреса перехода относительно текущего значения счетчика команд (PC), т.е. адреса самой команды перехода. Указываемое в команде смещение может быть положительным или отрицательным, обеспечивая смещение в сторону старших или младших адресов соответственно. Аналогично изменяется содержимое счетчика команд при выполнении команды вызова процедуры (подпрограммы).

При эксплуатации и разработке систем управления объектами на базе ЭВМ необходимо тщательное изучение особенностей архитектуры используемых процессоров.

Стек

Стек - это один из способов организации памяти, используемый, для хранения адресов возврата и данных при обращении к подпрограммам и обработке прерываний. Стек - память магазинного типа, реализует последовательный способ доступа к данным, который коротко формулируют в виде: "первым пришел - последним вышел".

О бычно в ЭВМ под стек динамически выделяют определенное количество последовательных ячеек в адресном пространстве оперативной памяти. Доступ к ячейкам памяти, выделенным под стек, осуществляется путем специального режима адресации с использованием регистра - указателя стека (УС или SP). При работе со стеком содержимое регистра - указателя стека интерпретируется процессором как адрес ячейки памяти, в которой находится число, записанное в стек последним. Эта ячейка называется "вершиной стека". Общепринятым является заполнение стека данными в сторону уменьшения адресов его ячеек.

Начальная установка указателя стека выполняется операционной системой или пользователем до операций со стеком. Процедура начальной установки состоит в указании выделяемой под стек области памяти. Для этого записывают в указатель стека адрес ячейки памяти, являющейся "вершиной" пустого стека, т.е. максимальный адрес области ОЗУ, отводимой под стек.

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

Чтение информации из стека или, как еще говорят, выталкивание числа из стека происходит следующим образом. Число прочитывается из ячейки памяти, адрес которой находится в регистре-указателе стека, после чего содержимое этого регистра автоматически корректируется в сторону увеличения адресов. При прочтении следующего числа производится аналогичная операция. Хотя при считывании числа из вершины стека используется термин "выталкивание", само число из ячейки стека никуда не девается. Просто коррекция регистра-указателя стека делает содержимое этой ячейки недоступным с помощью механизма работы со стеком. При записи в стек очередного числа оно будет записано по адресу числа, вытолкнутого (считанного) из стека перед этим. Метод адресации ячеек памяти, используемый при чтении чисел из стека, называется автоинкрементный метод адресации через SP.

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