|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Система команд микропроцессораОдин из основных принципов построения ЭВМ был сформулирован американским ученым Дж.фон Нейманом: работой ЭВМ управляет программа, состоящая из отдельных команд. Программа размещается вместе с данными в основной памяти ЭВМ. Каждая команда хранится в отдельной ячейке памяти (или группе смежных ячеек) и имеет свой адрес. Все команды имеют одинаковую структуру. Они состоят из двух частей: кода операции и адресной части. Код операции определяет, какую команду нужно выполнить. Адресная часть определяет, где хранятся операнды, т.е. обрабатываемые данные, и куда необходимо поместить результат операции. В зависимости от количества используемых в команде операндов различаются одно-, двух-, трех-, четырехадресные и безадресные команды. В одноадресных командах указывается, где находится один из двух обрабатываемых операндов. Второй операнд должен быть помещен заранее в арифметическое устройство (для этого в систему команд вводятся специальные команды пересылки данных между устройствами). В двухадресных командах оба операнда перед выполнением операции находятся в памяти, поэтому их адреса указываются в команде. После выполнения команды в один из этих адресов засылается результат, а находившийся там операнд теряется, В трехадресных командах два адреса указывают, где находятся исходные операнды, а третий — куда необходимо поместить результат. В четырехадресных командах три адреса используются для указания исходных операндов и результата, а четвертый — для указания адреса следующей команды. В безадресных командах обычно обрабатывается один операнд, который до и после операции находится в арифметическом устройстве (в память не пересылается). Кроме того, безадресные команды используются для выполнения служебных операций (очистить экран, заблокировать клавиатуру, снять блокировку и др.). Все команды программы выполняются последовательно, команда за командой, в том порядке, как они записаны в памяти ЭВМ (естественный порядок следования команд). Этот порядок характерен для линейных программ, т.е. программ, не содержащих разветвлений. Для организации разветвлений, циклического выполнения участков программы, есть команды, нарушающие естественный порядок. К ним относятся: безусловная передача управления (или «безусловный переход»), условная передача управления (т.е. переход, если выполняется заданное условие), обращение к подпрограмме (т.е. «переход с возвратом»), циклические операции. Кроме того, естественный порядок следования команд не соблюдается в машинах, использующих четырехадресные команды (в этом случае некоторые из команд передачи управления упраздняются). При явном указании адреса следующей команды реализуется «принудительный» порядок следования команд. Онвозможен только в том случае, если программа размещается в доступной процессору части основной памяти. Поскольку при этом команды (с точки зрения процессора) ничем не отличаются от данных, в процессе выполнения программы ее команды можно изменять (модифицировать), что повышает гибкость программирования и универсальность ЭВМ. Семейство микропроцессоров фирмы Intel, начиная от 8086 и вплоть до Pentium, имеет базовую систему команд, в состав которой входят следующие группы: • команды пересылки данных: команды пересылки данных внутри МП (MOV, PUSH, POP, XCHNG и т.д.); команды ввода-вывода (IN, OUT); • арифметические команды: основные (сложение, вычитание, умножение, деление); дополнительные (INS, DEC и др.); • логические команды (сдвиг, дизъюнкция, конъюнкция, отрицание • команды обработки строковых данных (пересылка, сравнение, ска • команды передачи управления (безусловный переход, условный пе • команды управления («нет операции», «внешняя синхронизация» Каждая команда имеет большое число модификаций, чаще всего определяемых режимом адресации данных (операндов). Операнды бывают трех типов: регистровый, непосредственный и «операнд в памяти». Регистровые операнды указываются именами используемых регистров МП. Непосредственные операнды бывают всегда числовые. Причем числа могут быть представлены в различных системах счисления. Различаются они по последней букве, сопровождающей число: «b» — двоичное, «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 где: г — регистр общего назначения микропроцессора; 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].
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.) |