Информатика и информационные технологии
Шрифт:
Если коротко, то язык ассемблера – это символическое представление машинного языка. Все процессы в машине на самом низком, аппаратном уровне приводятся в действие только командами (инструкциями) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. Это касается и внешнего вида программ, написанных на ассемблере, и идей, отражением которых этот язык является.
По-настоящему решить проблемы, связанные с аппаратурой (или, даже более того, зависящие от аппаратуры, как, к примеру, повышение быстродействия
Программист или любой другой пользователь могут использовать любые высокоуровневые средства вплоть до программ построения виртуальных миров и, возможно, даже не подозревать, что на самом деле компьютер выполняет не команды языка, на котором написана его программа, а их трансформированное представление в форме скучной и унылой последовательности команд совсем другого языка – машинного. А теперь представим, что у такого пользователя возникла нестандартная проблема. К примеру, его программа должна работать с некоторым необычным устройством или выполнять другие действия, требующие знания принципов работы аппаратуры компьютера. Каким бы хорошим ни был язык, на котором программист написал свою программу, без знания ассемблера ему не обойтись. И не случайно практически все компиляторы языков высокого уровня содержат средства связи своих модулей с модулями на ассемблере либо поддерживают выход на ассемблерный уровень программирования.
Компьютер составлен из нескольких физических устройств, каждое из которых подключено к одному блоку, называемому системным
38. Программная модель микропроцессора
На современном компьютерном рынке наблюдается большое разнообразие различных типов компьютеров. Поэтому возможно предположить возникновение у потребителя вопроса – как оценить возможности конкретного типа (или модели) компьютера и его отличительные особенности от компьютеров других типов (моделей).
Рассмотрения для этого одной лишь только структурной схемы компьютера недостаточно, так как она принципиально мало чем различается у разных машин: у всех компьютеров есть оперативная память, процессор, внешние устройства.
Различными являются способы, средства и используемые ресурсы, с помощью которых компьютер функционирует как единый механизм.
Чтобы собрать воедино все понятия, характеризующие компьютер с точки зрения его функциональных программно-управляемых свойств, существует специальный термин – архитектура ЭВМ.
Впервые понятие архитектура ЭВМ стало упоминаться с появлением машин 3-го поколения для их сравнительной оценки.
К изучению языка Ассемблера любого компьютера имеет смысл приступать только после выяснения того, какая часть компьютера оставлена видимой и доступной для программирования на этом языке. Это так называемая программная модель компьютера, частью которой является программная модель микропроцессора, которая содержит 32 регистра в той или иной мере доступных для использования программистом.
Данные регистры можно разделить на две большие группы:
1) 16 пользовательских регистров;
2) 16 системных регистров.
В
Помимо перечисленных выше регистров, фирмы-разработчики процессоров внедряют в программную модель дополнительные регистры, предназначенные для оптимизации определенных классов вычислений. Так, в семействе процессоров Pentium Pro (MMX) корпорации Intel было внедрено MMX расширение от Intel. Оно включает в себя 8 (MM0-MM7) 64-битных регистров и позволяет производить целочисленные операции над парами нескольких новых типов данных:
1) восемь упакованных байт;
2) четыре упакованных слова;
3) два двойных слова;
4) учетверенное слово;
Другими словами, одной инструкцией MMX расширения программист может, например, сложить между собой два двойных слова. Физически никаких новых регистров добавлено не было. MM0-MM7 это мантиссы (младшие 64 бита) стека 80 битных FPU (floating point unit – сопроцессор) регистров.
Кроме того, на данный момент существуют следующие расширения программной модели – 3DNOW! от AMD; SSE, SSE2, SSE3, SSE4. Последние 4 расширения поддерживаются как процессорами фирмы AMD, так и процессорами корпорации Intel.
39. Пользовательские регистры
Как следует из названия, пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся:
1) восемь 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения (РОН)):
– eax/ax/ah/al;
– ebx/bx/bh/bl;
– edx/dx/dh/dl;
– ecx/cx/ch/cl;
– ebp/bp;
– esi/si;
– edi/di;
– esp/sp.
2) шесть регистров сегментов:
– cs;
– ds;
– ss;
– es;
– fs;
– gs;
3) регистры состояния и управления:
– регистр флагов eflags/flags;
– регистр указателя команды eip/ip.
На следующем рисунке показаны основные регистры микропроцессора:
Регистры общего назначения
40. Регистры общего назначения
Все регистры этой группы позволяют обращаться к своим «младшим» частям. Использовать для самостоятельной адресации можно только младшие 16– и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты недоступны.
Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:
1) eax/ax/ah/al (Accumulator register) – аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;