- •Глава 5 центральные устройства эвм
- •5.1.Основная память
- •5.1.1.Состав, устройство и принцип действия основной памяти
- •5.1.2. Размещение информации в основной памяти ibm pc
- •5.1.3. Расширение основной памяти ibm pc
- •5.2. Центральный процессор эвм
- •5.2.1. Структура базового микропроцессора
- •" Таблица 5.1 Творческая деятельность компьютерных фирм в 1997 г.
- •5.2.2. Система команд микропроцессора
- •5.2.3.Взаимодействие элементов при работе микропроцессора
- •5.2.4. Работа микропроцессора при выполнении программного прерывания
5.2.2. Система команд микропроцессора
Один из основных принципов построения ЭВМ был сформулирован американским ученым Дж.фон Нейманом: работой ЭВМ управляет программа, состоящая из отдельных команд. Программа размещается вместе с данными в основной памяти ЭВМ. Каждая команда хранится в отдельной ячейке памяти (или группе смежных ячеек) и имеет свой адрес. Все команды имеют одинаковую структуру. Они состоят из двух частей: кода операции и адресной части. Код операции определяет, какую команду нужно выполнить. Адресная часть определяет, где хранятся операнды, т.е. обрабатываемые данные, и куда необходимо поместить результат операции.
В зависимости от количества используемых в команде операндов различаются одно-, двух-, трех-, четырехадресные и безадресные команды.
В одноадресных командах указывается, где находится один из двух обрабатываемых операндов. Второй операнд должен быть помещен заранее в арифметическое устройство (для этого в систему команд вводятся специальные команды пересылки данных между устройствами).
В двухадресных командах оба операнда перед выполнением операции находятся в памяти, поэтому их адреса указываются в команде. После выполнения команды в один из этих адресов засылается результат, а находившийся там операнд теряется.
В трехадресных командах два адреса указывают, где находятся исходные операнды, а третий — куда необходимо поместить результат.
В четырехадресных командах три адреса используются для указания исходных операндов и результата, а четвертый — для указания адреса следующей команды.
В безадресных командах обычно обрабатывается один операнд, который до и после операции находится в арифметическом устройстве (в память не пересылается). Кроме того, безадресные команды используются для выполнения служебных операций (очистить экран, заблокировать клавиатуру, снять блокировку и др.).
Все команды программы выполняются последовательно, команда за командой, в том порядке, как они записаны в памяти ЭВМ (естественный порядок следования команд). Этот порядок характерен для линейных программ, т.е. программ, не содержащих разветвлений.
Для организации разветвлений, циклического выполнения участков программы, есть команды, нарушающие естественный порядок. К ним относятся: безусловная передача управления (или «безусловный переход»), условная передача управления (т.е. переход, если выполняется заданное условие), обращение к подпрограмме (т.е. «переход с возвратом»), циклические операции. Кроме того, естественный порядок следования команд не соблюдается в машинах, использующих четырехадресные команды (в этом случае некоторые из команд передачи управления упраздняются).
При явном указании адреса следующей команды реализуется «принудительный» порядок следования команд. Он возможен только в том случае, если программа размещается в доступной процессору части основной памяти. Поскольку при этом команды (с точки зрения процессора) ничем не отличаются от данных, в процессе выполнения программы ее команды можно изменять (модифицировать), что повышает гибкость программирования и универсальность ЭВМ.
Семейство микропроцессоров фирмы Intel, начиная от 8086 и вплоть до Pentium, имеет базовую систему команд, в состав которой входят следующие группы:
• команды пересылки данных:
команды пересылки данных внутри МП (MOV, PUSH, POP,
XCHNG и т.д.);
команды ввода-вывода (IN, OUT); -
• арифметические команды:
основные (сложение, вычитание, умножение, деление); дополнительные (INS, DEC и др.);
• логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание равнозначности и др.);
• команды обработки строковых данных (пересылка, сравнение, сканирование, слияние/разделение и др.);
• команды передачи управления (безусловный переход, условный переход, прерывания, переход с возвратом);
• команды управления («нет операции», «внешняя синхронизация»
и т.д.).
Каждая команда имеет большое число модификаций, чаще всего определяемых режимом адресации данных (операндов). Операнды бывают трех типов: регистровый, непосредственный и «операнд в памяти».
Регистровые операнды указываются именами используемых регистров МП.
Непосредственные операнды бывают всегда числовые. Причем числа могут быть представлены в различных системах счисления. Различаются они по последней букве, сопровождающей число: «Ь» — двоичное, «q» — восьмеричное, «d» — десятичное, «h» — шестнадцатеричное.
«Операнды в памяти» могут указываться с помощью регистров, символическими именами, константами. Различные комбинации этих элементов в команде называются способами адресации. Так, команда MOV (переслать число) может иметь следующие способы адресации:
mov r,r mov sr,m
mov r,m mov sr,r
mov m,r mov m,sr
mov r,imed mov r,sr
mov m,imed
где: г — регистр общего назначения микропроцессора; m — адрес в памяти; imed — число; sr — сегментный регистр.
При использовании «операндов в памяти» указание на физический адрес ОП может производиться непосредственно, косвенно и со смещением.
При непосредственной адресации исполнительный адрес указывается в виде шестнадцатеричного числа, однозначно определяющего ячейку внутри заданного сегмента или в виде символического имени. Если адресуется ячейка текущего сегмента, то имя сегмента в адресной части команды не указывается (это связано с режимом умолчания: текущим по умолчанию для адреса команды является регистр CS, для адресации ячейки в стековом сегменте — SS, для адресации данных — DS). Это значит, что в команде безусловного перехода внутри того же сегмента нет необходимости указывать:
cs: исполнительный адрес,
а при адресации данных —
ds: исполнительный адрес.
Только, если адрес ОП относится к сегменту, указанному в другом регистре (или не указанному в сегментных регистрах), его имя необходимо указывать в команде.
При косвенной адресации исполнительный адрес ОП хранится в одном из 16-битовых регистров МП, а в команде указывается имя этого регистра. В этом случае имя регистра, содержащего адрес, заключается в квадратные скобки. Например:
mov [si], 12 .
Косвенная адресация имеет несколько разновидностей, в зависимости от используемых регистров и от способа их использования. По способу использования различаются базовая, индексная и базово-индексная адресации.
Базовая адресация появилась впервые, когда стало применяться динамическое размещение программ в ОП, а это в свою очередь возникло, когда объем ОП стал настолько большим, что превысил размеры выполняемых программ.
(Программу можно писать в абсолютных адресах, когда программист сам определяет, в каких ячейках ОП она должна размещаться для исполнения, и в относительных адресах, когда заранее неизвестно, в какую часть ОП программа попадет при загрузке. В первом случае программа окончательно готова к использованию, но является неперемещаемой. Если требуемая область ОП занята хотя бы частично, такую программу выполнить уже нельзя. Во втором случае программа перед выполнением должна быть «привязана» к своему месту в ОП, поскольку все программы пишутся так, как будто при загрузке они обязательно попадут в область ОП, начиная с ячейки 0. Перед загрузкой операционная система ищет свободное место в ОП, в которой можно разместить программу, и адрес первой ячейки этой свободной области запоминается как общая добавка ко всем адресам, употребляемым в программе. Этот адрес называется «базовым». Абсолютные адреса определяются по сложению с базовым адресом. Такая система реализована в мультипрограммных вычислительных машинах с динамическим распределением ресурсов.)
В IBM PC базовая адресация реализована с использованием регистров ВХ или ВР.
Индексная адресация имеет смысл, когда надо осуществить перебор элементов какого-то набора данных. Если элемент данных имеет длину 1 байт, то при переходе от одного элемента к другому адрес должен меняться на 1. Если длина равна 3 байтам — на 3. Начальный же адрес массива (НА) желательно не менять, так как одновременно может быть несколько обращений к одному и тому же массиву. НА является как бы константой этого массива. Индекс (i) указывает на конкретный элемент массива, адрес которого может быть вычислен как сумма: HA+i. Для хранения индексов в IBM PC предусмотрено два индексных регистра: EI и DI.
Могут встретиться комбинированные системы адресации, например базовая (или индексная) со смещением, базово-индексная и т.д. Базово-индексная адресация в команде выглядит в виде такого адреса: [BP+SI].