Смотрите подробности кто придумал тетрадь в клетку на нашем сайте.
Хотя наборы команд, реализованных в разных процессорах, различаются по количеству и перечню команд, по способам кодирования, по длине команд и по времени их выполнения, в системах команд разных процессоров есть весьма много общего. Знание этих общих свойств помогает быстрее освоить программирование нового процессора.
Разработчики процессора стремятся включить в систему команд прежде всего те действия, которые чаще требуются программистам. При этом наиболее часто требуемые действия стремятся реализовать в более коротких и быстрых командах. Перечень и свойства операций, выполняемых процессорными командами, тесно связаны со свойствами разных видов данных, которые обрабатываются на ЭВМ. Общего в разных системах команд достаточно много. Далее будем рассматривать главным образом это общее, часто упоминая, чем вызваны те или иные различия.
Для описания команд и их действия будем использовать мнемоники, принятые в языке Ассемблера. Язык Ассемблера специфичен для каждого типа процессора, так как включает в себя совокупность символических обозначений процессорных команд и способов адресации. Несмотря на специфичность, в языках Ассемблера для разных процессоров достаточно много общего, как в форме (в синтаксисе) так и в содержании отображаемых конструкциями языка понятий, поскольку и в различных процессорах также имеется много одинаковых, либо похожих свойств.
Примечание!
В некоторых учебных изданиях даже не делается различия между изучением процессора и изучением языка Ассемблера для него (наверное, с точки зрения программиста на Ассемблере это так и есть). Однако изучение программирования на языке ассемблера включает в себя три компоненты.Для облегчения понимания кратко опишем основные правила записи команд на Ассемблере (они справедливы для многих известных автору Ассемблеров).
1) Как правило, ассемблерная строка однозначно соответствует одной процессорной команде.
2) Команда языка Ассемблера имеет следующую структуру:
Меткаl: КОП Оп1,Оп2,… ;Комментарий
Вот пример команды на языке ассемблера
L1: mov r1, #12A9h ;Загрузка регистра константой
Пояснение: Данный оператор содержит команду пересылки, которая загружает константу 12A9h в регистр процессора r1. Константа задана программистом в виде шестнадцатиричного числа.
Оператор включает в свой состав следующие поля:
add sum,op1,op2
содержит указания на два операнда-приемника (слагаемые) — op1 и op2, а также указание на элемент данных (sum), куда команде следует поместить результат.
Количество операндов, которые программист может указать в команде, определено отдельно для каждой команды конкретного процессора его разработчиками. Для многих команд делают допустимым несколько форматов (см., например, команду целочисленного умножения imul для процессоров семейства х86).
В Ассемблерах процессоров фирмы Intel, по большей части, операнды-источники записываются левее операндов-приемников. В Ассемблерах других фирм это может быть наоборот. В качестве операнда можно использовать метку, в этом случае метка будет обозначать адрес, с которого располагается в памяти соответствующий операнд.
3) Хотя каждый процессор имеет свой Ассемблер (соответствующий его системе команд), многие мнемонические обозначения в разных Ассемблерах одинаковы для одинаковых операций. Этот факт сильно облегчает изучение следующего Ассемблера (и процессора), после того, как хотя бы один уже изучен.
4) При записи обозначений операндов используются условные обозначения выбранного программистом способа адресации. Обозначения различных способов адресации в разных ассемблерах также имеют много общего. Мы познакомимся с конкретными обозначениями при рассмотрении способов адресации.
Количество команд для разных типов ЭВМ колеблется от малых десятков до сотен. В таком множестве разобраться достаточно трудно, поэтому для рассмотрения разобьем все команды на группы (проклассифицируем). В разных книгах эта классификация тоже сделана по-разному. Выделяют от 3 до более 10 групп. (Наиболее обозримой для человека является классификация, содержащая на нижележащем уровне от 3 до 8 подклассов).
В машине со структурой фон Неймана команды расположены в ячейках памяти программ (в адресном пространстве команд) подряд. При рассмотрении принципа работы ЭВМ мы считали, что команды выбираются из памяти программ и выполняются подряд (имеет место свойство локальной сериальности). В процессорах имеются возможности нарушать естественный порядок следования команд при их выполнении. Благодаря этому, программы могут приобрести ряд полезных свойств. Рассмотрим ситуации, в которых желательно нарушение естественного порядка выполнения команд (см. таблицу ниже).
Адресуемая память (адресное пространство) представляет собой область из 1М байт. Физический адрес памяти имеет длину 20 бит (см. рисунок ниже). Для формирования физических адресов используется механизм сегментации памяти. Пространство памяти 1М доступно процессору через 4 "окна" (сегмента), каждый размером 64 Кбайт. Начальный адрес каждого сегмента содержится в одном из четырех сегментных регистров. Команды обращаются к байтам и словам в пределах сегментов, используя относительный (внутрисегментный) адрес.
Для того, чтобы не увеличивать чрезмерно длину команды, большая часть команд в системе команд х86 описывает не более двух операндов. Ниже представлены основные форматы команд (см. следующий рисунок).
Регистр хранит двоичное слово. Регистр — это линейка триггеров, которые имеют входы для изменения состояния, влияющее на выходы.
Регистры могут быть:
Кроме того, в процессоре могут быть "псевдо-регистры", хранящие константы: 0, 1, -1, и др. (м.б. такие, как , e,...).
Это просто группа параллельных проводов, связывающих между собой два адресата и позволяющих передать слово данных параллельным кодом.
Это логические элементы (коньюнкторы), разрешающие передачу данных (например, на вход триггера). Схема передачи слова данных от источника к приемнику изображена выше на рисунке. Она обеспечивает возможность управлять моментом передачи, подавая в нужный момент сигнал "строб". Слово данных от источника данных (им может быть другой регистр) подается на входы элементов "И". Выходы элементов "И" (вентилей) действуют на входы установки регистра-приемника. Для записи нового кода в регистр-приемник надо последовательно выполнить два действия:
Несколько вентильных линеек В1, В2,...могут быть объединены по выходам линейкой элементов "ИЛИ". Такая структура позволяет передавать слово данных на вход регистра-приемника от одного из нескольких источников при действии разных стробовых сигналов. Такую структуру принято называть мультиплексором (ниже на рисунке).
Тип микропрограммного автомата определяет название всего УУ. В микропрограммном автомате с жесткой логикой (см. рисунок ниже) выходные сигналы управления реализуются за счет однажды соединенных логических схем. Микропрограммный автомат с жесткой логикой. Код операций (КОП), хранящийся в регистре команды, используется для определения того, какие сигналы управления и в какой последовательности должны формироваться. При этом, желательно иметь в УУ отдельный логический сигнал для каждого кода операции (IK). Это может быть реализовано с помощью дешифратора.
Микропрограммный автомат с жесткой логикой
Сигналы управления, по которым выполняется микрооперация, должны вырабатываться в строго определенные моменты времени, поэтому все сигналы управления "привязаны" к импульсам синхронизации. Счетчик тактов сбрасывается (устанавливается в состояние Т1) по окончании цикла очередной команды. Цикл команды может потребовать разного количества тактов. На каждом такте вырабатывается своя микрокоманда, состоящая из нескольких сигналов управления. Дополнительным фактором, влияющим на выработку сигналов управления, являются флаги.
Отличительной особенностью микропрограммного автомата с программируемой логикой является наличие памяти микропрограмм. Каждой команде вычислительного устройства в этой памяти соответствует микропрограмма. Идею микропрограммирования сигналов управления предложил в 1951 г. Морис Уилкс (Кембриджский университет, Британия). ЭВМ стала иметь три уровня выполнения команд: между командами и сигналами управления появилась микропрограмма. Команда ЭВМ интерпретировалась в микропрограмму. Аппаратное обеспечение должно было выполнять только микропрограммы с ограниченным набором микрокоманд, отсюда существенно уменьшались аппаратные затраты. К 70-м годам идея о том, что написанная программа сначала должна интерпретироваться микропрограммами, а не выполняться непосредственно электроникой, стала преобладающей. Однако в современных процессорах, когда аппаратные затраты стали менее существенны, отказались от идеи микропрограммирования, так как она стала сдерживать рост производительности. Типичная схема микропрограммного автомата приведена на рисунке ниже.
Микропрограммный автомат с программируемой логикой
Запуск микропрограммы выполнения операции осуществляется путем передачи кода операции из регистра команды на вход преобразователя, в котором код операции (КОП) преобразуется в начальный адрес микропрограммы. Выбранная по этому адресу из памяти микропрограмм микрокоманда заносится в регистр. Микрокоманда содержит КОП и адресную часть. КОП поступает на дешифратор и формирует управляющие сигналы, адрес передается для формирования адреса следующей микрокоманды. Этот адрес может зависеть от флагов, КОП, внешних устройств.