
- •Структура машинной команды
- •Способы задания операндов команды
- •Прямая адресация
- •Косвенная базовая (регистровая) адресация
- •Косвенная базовая (регистровая) адресация со смещением
- •Косвенная индексная адресация со смещением
- •Косвенная базовая индексная адресация
- •Косвенная базовая индексная адресация со смещением
- •Прямой доступ к памяти (Direct Memory Access – dma)
- •Логические принципы организации ввода-вывода
- •Структура системы ввода-вывода
Хранение информации
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами. В широком смысле понятие "файловая система" включает: - совокупность всех файлов на диске, - наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске, - комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами. Имена файлов Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. До недавнего времени эти границы были весьма узкими. Так в популярной файловой системе FAT длина имен ограничивается известной схемой 8.3 (8 символов - собственно имя, 3 символа - расширение имени), а в ОС UNIX System V имя не может содержать более 14 символов. Однако пользователю гораздо удобнее работать с длинными именами, поскольку они позволяют дать файлу действительно мнемоническое название, по которому даже через достаточно большой промежуток времени можно будет вспомнить, что содержит этот файл. Поэтому современные файловые системы, как правило, поддерживают длинные символьные имена файлов. Например, Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа. При переходе к длинным именам возникает проблема совместимости с ранее созданными приложениями, использующими короткие имена. Чтобы приложения могли обращаться к файлам в соответствии с принятыми ранее соглашениями, файловая система должна уметь предоставлять эквивалентные короткие имена (псевдонимы) файлам, имеющим длинные имена. Таким образом, одной из важных задач становится проблема генерации соответствующих коротких имен. Длинные имена поддерживаются не только новыми файловыми системами, но и новыми версиями хорошо известных файловых систем. Например, в ОС Windows 95 используется файловая система VFAT, представляющая собой существенно измененный вариант FAT. Среди многих других усовершенствований одним из главных достоинств VFAT является поддержка длинных имен. Кроме проблемы генерации эквивалентных коротких имен, при реализации нового варианта FAT важной задачей была задача хранения длинных имен при условии, что принципиально метод хранения и структура данных на диске не должны были измениться. Обычно разные файлы могут иметь одинаковые символьные имена. В этом случае файл однозначно идентифицируется так называемым составным именем, представляющем собой последовательность символьных имен каталогов. В некоторых системах одному и тому же файлу не может быть дано несколько разных имен, а в других такое ограничение отсутствует. В последнем случае операционная система присваивает файлу дополнительно уникальное имя, так, чтобы можно было установить взаимно-однозначное соответствие между файлом и его уникальным именем. Уникальное имя представляет собой числовой идентификатор и используется программами операционной системы. Примером такого уникального имени файла является номер индексного дескриптора в системе UNIX. Типы файлов Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги. Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы. Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные. Каталог - это, с одной стороны, группа файлов, объединенных пользователем исходя из некоторых соображений (например, файлы, содержащие программы игр, или файлы, составляющие один программный пакет), а с другой стороны - это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их характеристиками (атрибутами). В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например: - информация о разрешенном доступе, - пароль для доступа к файлу, - владелец файла, - создатель файла, - признак "только для чтения", - признак "скрытый файл", -признак "системный файл", - признак "архивный файл", - признак "двоичный/символьный", - признак "временный" (удалить после завершения процесса), - признак блокировки, - длина записи, - указатель на ключевое поле в записи, - длина ключа, - времена создания, последнего доступа и последнего изменения, -текущий размер файла, - максимальный размер файла. Каталоги могут непосредственно содержать значения характеристик файлов, как это сделано в файловой системе MS-DOS, или ссылаться на таблицы, содержащие эти характеристики, как это реализовано в ОС UNIX. Каталоги могут образовывать иерархическую структуру за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня. Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога.
Физическая и логическая структура дисков.
Форматирование дисков.
Для того чтобы на диске можно было хранить информацию, диск должен быть отформатирован, то есть должна быть создана физическая и логическая структура диска.
Формирование физической структуры диска состоит в создании на диске концентрических дорожек, которые, в свою очередь, делятся на секторы. Для этого в процессе форматирования магнитная головка дисковода расставляет в определенных местах диска метки дорожек и секторов.
Форматирование выполняется служебными программами. Форматирование диска чем-то похоже на разлиновывание тетради.
Логическая структура гибких дисков.
Логическая структура магнитного диска представляет собой совокупность секторов (емкостью 512 байтов), каждый из которых имеет свой порядковый номер (например, 100). Сектора нумеруются в линейной последовательности от первого сектора нулевой дорожки до последнего сектора последней дорожки.
У гибкого диска две стороны, на которых создается по 80 дорожек. На каждой дорожке по 18 секторов. Общая емкость гибкого диска составляет 2 * 80 * 18 * 512 = 1474560 байт ≈ 1.44 Мбайт.
Самая первая дорожка магнитного диска (нулевая) считается служебной – там хранится служебная информация. Например, на этой дорожке хранится так называемая таблица размещения файлов.
На гибком диске минимальным адресуемым элементом является сектор.
При записи файла на диск будет занято всегда целое количество секторов, соответственно минимальный размер файла — это размер одного сектора, а максимальный соответствует общему количеству секторов на диске.
Файл записывается в произвольные свободные сектора, которые могут находиться на различных дорожках. Например, Файл1 объемом 2 Кбайта может занимать сектора 34, 35 и 47, 48, а Файл2 объемом 1 Кбайт — сектора 36 и 49.
№ дорожки |
№ сектора |
|||||||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
1 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
2 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
|
…… |
|||||||||||||||||
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2280 |
Для того чтобы можно было найти файл по его имени, на диске имеется каталог, представляющий собой базу данных. Запись о файле содержит имя файла, адрес первого сектора, с которого начинается файл, объем файла, а также дату и время его создания.
Полная информация о секторах, которые занимают файлы, содержится в таблице размещения файлов (FAT — File Allocation Table). Количество ячеек FAT соответствует количеству секторов на диске, а значениями ячеек являются цепочки размещения файлов, то есть последовательности адресов секторов, в которых хранятся файлы.
Цепочка размещения для файла Файл1 выглядит следующим образом: в начальном 34-м секторе хранится адрес 35, в 35-м секторе хранится адрес 47, в 47-м — 48, в 48-м — знак конца файла (К).
Для размещения каталога — базы данных и таблицы FAT на гибком диске отводятся секторы со 2 по 33. Первый сектор отводится для размещения загрузочной записи операционной системы. Сами файлы могут быть записаны, начиная с 34 сектора.
Виды форматирования.
Существуют два различных вида форматирования дисков: полное и быстрое форматирование. Полное форматирование включает в себя как физическое форматирование (проверку качества магнитного покрытия дискеты и ее разметку на дорожки и секторы), так и логическое форматирование (создание каталога и таблицы размещения файлов). После полного форматирования вся хранившаяся на диске информация будет уничтожена.
Быстрое форматирование производит лишь очистку корневого каталога и таблицы размещения файлов. Информация, то есть сами файлы, сохраняется и в принципе возможно восстановление файловой системы.
Логическая структура жестких дисков.
Логическая структура жестких дисков несколько отличается от логической структуры гибких дисков. Минимальным адресуемым элементом жесткого диска является кластер, который может включать в себя несколько секторов. Размер кластера зависит от типа используемой таблицы FAT и от емкости жесткого диска.
На жестком диске минимальным адресуемым элементом является кластер, который содержит несколько секторов.
Таблица FAT16 может адресовать 216 = 65 536 кластеров. Для дисков большой емкости размер кластера оказывается слишком большим, так как информационная емкость жестких дисков может достигать сотен Гбайт.
Например, для диска объемом 40 Гбайт размер кластера будет равен:
40 Гбайт/65536 = 655 360 байт = 640 Кбайт.
Файлу всегда выделяется целое число кластеров. Например, текстовый файл, содержащий слово «информатика», составляет всего 11 байтов, но на диске этот файл будет занимать целиком кластер, то есть 640 Кбайт дискового пространства для диска емкостью 150 Гбайт. При размещении на жестком диске большого количества небольших по размеру файлов они будут занимать кластеры лишь частично, что приведет к большим потерям свободного дискового пространства.
Эта проблема частично решается с помощью использования таблицы FAT32, в которой объем кластера принят равным 8 секторам или 4 килобайтам для диска любого объема.
В целях более надежного сохранения информации о размещении файлов на диске хранятся две идентичные копии таблицы FAT.
В последнее время в основном на компьютерах с ОС Windows используется файловая система NTFS. Файловая система NTFS – улучшенная файловая, обеспечивающая уровень быстродействия и безопасности, а также дополнительные возможности, недоступные ни в одной версии файловой системы FAT. Например, для обеспечения целостности данных тома в файловой системе NTFS используются стандартные технологии записи и восстановления транзакций. В случае сбоя компьютера целостность файловой системы восстанавливается с помощью файла журнала NTFS и данных о контрольных точках. В операционных системах Windows 2000 и Windows XP файловая система NTFS также обеспечивает такие дополнительные возможности, как разрешения для файлов и папок, шифрование, дисковые квоты и сжатие.
Дефрагментация дисков.
Замедление скорости обмена данными может происходить в результате фрагментации файлов. Фрагментация файлов (фрагменты файлов хранятся в различных, удаленных друг от друга кластерах) возрастает с течением времени, в процессе удаления одних файлов и записи других.
Так как на диске могут храниться сотни и тысячи файлов в сотнях тысяч кластеров, то фрагментированность файлов будет существенно замедлять доступ к ним (магнитным головкам придется постоянно перемещаться с дорожки на дорожку) и в конечном итоге приводить к преждевременному износу жесткого диска. Рекомендуется периодически проводить дефрагментацию диска, в процессе которой файлы записываются в кластеры, последовательно идущие друг за другом.
1. Для запуска программы Дефрагментация диска, необходимо из Главного меню ввести команду [Стандартные→Служебные→Дефрагментация диска].
2. Диалоговая панель Выбор диска позволяет выбрать диск, нуждающийся в процедуре дефрагментации. После нажатия кнопки ОК появится панель Дефрагментация диска.
Физические и логические диски.
При использовании файловых систем FAT размер кластера зависит от объема диска. Получается чем больше жесткий диск, тем больше места на нем пропадает в пустую из-за не совершенной системы адресации файлов.
Для борьбы с нерациональными потерями или, просто, для удобства, часто жесткий диск разбивают на несколько разделов. Для этого есть специальные программы. Каждый такой раздел можно рассматривать как отдельный логический жесткий диск.
Обычный жесткий диск – это устройство физическое. Его можно установить или удалить. Логический жесткий диск нельзя потрогать руками – физически он не существует. Это просто один из разделов жесткого диска. Работая с компьютером, мы не замечаем разницу между физическими и логическими дисками.
Каждый логический диск имеет свою собственную таблицу размещения файлов, поэтому на нем действует своя система адресации. В итоге потери из-за размеров кластеров становятся меньше.
Удобно использовать логические диски и для того чтобы разделить систему и пользовательские данные. Например, в одном разделе диска устанавливаем ОС Windows, а в другом храним свои данные. В этом случае переустановка или восстановление (например, из образа раздела) ОС в случае каких-либо сбоев не затронет пользовательские данные.
Каждый диск присутствующий в компьютере, имеет уникальное имя. Неважно, что это за диск: физический, логический или еще какой. Имя диска состоит из одной буквы английского алфавита и двоеточия, например А: или С:.
Когда на компьютере устанавливается новый диск, он получает букв, следующую за последней использованной буквой.
Буквой А: общепринято обозначать дисковод для гибких дисков.
Буквой С: обозначается первый жесткий диск. Следующий диск получает букву D:, потом F: и так далее.
Права доступа к файлу Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции: - создание файла, - уничтожение файла, - открытие файла, - закрытие файла, - чтение файла, - запись в файл, - дополнение файла, - поиск в файле, - получение атрибутов файла, - установление новых значений атрибутов, - переименование, - выполнение файла, - чтение каталога, и другие операции с файлами и каталогами. В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции. В некоторых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа. Например, в системе UNIX все пользователи подразделяются на три категории: владельца файла, членов его группы и всех остальных. Различают два основных подхода к определению прав доступа: избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции; мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен. Отображаемые в память файлы
По сравнению с доступом к памяти, традиционный доступ к файлам выглядит запутанным и неудобным. По этой причине некоторые ОС, начиная с MULTICS, обеспечивают отображение файлов в адресное пространство выполняемого процесса. Это выражается в появлении двух новых системных вызовов: MAP (отобразить) и UNMAP (отменить отображение). Первый вызов передает операционной системе в качестве параметров имя файла и виртуальный адрес, и операционная система отображает указанный файл в виртуальное адресное пространство по указанному адресу. Предположим, например, что файл f имеет длину 64 К и отображается на область виртуального адресного пространства с начальным адресом 512 К. После этого любая машинная команда, которая читает содержимое байта по адресу 512 К, получает 0-ой байт этого файла и т.д. Очевидно, что запись по адресу 512 К + 1100 изменяет 1100 байт файла. При завершении процесса на диске остается модифицированная версия файла, как если бы он был изменен комбинацией вызовов SEEK и WRITE. В действительности при отображении файла внутренние системные таблицы изменяются так, чтобы данный файл служил хранилищем страниц виртуальной памяти на диске. Таким образом, чтение по адресу 512 К вызывает страничный отказ, в результате чего страница 0 переносится в физическую память. Аналогично, запись по адресу 512 К + 1100 вызывает страничный отказ, в результате которого страница, содержащая этот адрес, перемещается в память, после чего осуществляется запись в память по требуемому адресу. Если эта страница вытесняется из памяти алгоритмом замены страниц, то она записывается обратно в файл в соответствующее его место. При завершении процесса все отображенные и модифицированные страницы переписываются из памяти в файл. Отображение файлов лучше всего работает в системе, которая поддерживает сегментацию. В такой системе каждый файл может быть отображен в свой собственный сегмент, так что k-ый байт в файле является k-ым байтом сегмента. На рисунке 2.38,а изображен процесс, который имеет два сегмента-кода и данных. Предположим, что этот процесс копирует файлы. Для этого он сначала отображает файл-источник, например, abc. Затем он создает пустой сегмент и отображает на него файл назначения, например, файл ddd. С этого момента процесс может копировать сегмент-источник в сегмент-приемник с помощью обычного программного цикла, использующего команды пересылки в памяти типа mov. Никакие вызовы READ или WRITE не нужны. После выполнения копирования процесс может выполнить вызов UNMAP для удаления файла из адресного пространства, а затем завершиться. Выходной файл ddd будет существовать на диске, как если бы он был создан обычным способом. Хотя отображение файлов исключает потребность в выполнении ввода-вывода и тем самым облегчает программирование, этот способ порождает и некоторые новые проблемы. Во-первых, для системы сложно узнать точную длину выходного файла, в данном примере ddd. Проще указать наибольший номер записанной страницы, но нет способа узнать, сколько байт в этой странице было записано. Предположим, что программа использует только страницу номер 0, и после выполнения все байты все еще установлены в значение 0 (их начальное значение). Быть может, файл состоит из 10 нулей. А может быть, он состоит из 100 нулей. Как это определить? Операционная система не может это сообщить. Все, что она может сделать, так это создать файл, длина которого равна размеру страницы. Вторая проблема проявляется (потенциально), если один процесс отображает файл, а другой процесс открывает его для обычного файлового доступа. Если первый процесс изменяет страницу, то это изменение не будет отражено в файле на диске до тех пор, пока страница не будет вытеснена на диск. Поддержание согласованности данных файла для этих двух процессов требует от системы больших забот.
Третья проблема состоит в том, что файл может быть больше, чем сегмент, и даже больше, чем все виртуальное адресное пространство. Единственный способ ее решения состоит в реализации вызова MAP таким образом, чтобы он мог отображать не весь файл, а его часть. Хотя такая работа, очевидно, менее удобна, чем отображение целого файла.
Принципы
работы компьютера
В основу архитектуры современных персональных компьютеров положен магистрально-модульный принцип. Модульный принцип позволяет потребителю самому комплектовать нужную ему конфигурацию компьютера и производить при необходимости ее модернизацию. Модульная организация компьютера опирается на магистральный (шинный) принцип обмена информацией между устройствами.
Магистраль включает в себя три многоразрядные: -шины: шину данных, -шину адреса -и шину управления.
Шины представляют собой многопроводные линии. Шина данных. По этой шине данные передаются между различными устройствами. Например, считанные из оперативной памяти данные могут быть переданы процессору для обработки, а затем полученные данные могут быть отправлены обратно в оперативную память для хранения. Таким образом, данные по шине данных могут передаваться от устройства к устройству в любом направлении. Разрядность шины данных определяется разрядностью процессора, т.е. количеством двоичных разрядов, которые процессор обрабатывает за один такт. Разрядность процессоров постоянно увеличивалась по мере развития компьютерной техники.
Шина
адреса.
Выбор устройства или ячейки памяти,
куда пересылаются или откуда считываются
данные по шине данных, производит
процессор. Каждое устройство или ячейка
оперативной памяти имеет свой адрес.
Адрес передается по адресной шине,
причем сигналы по ней передаются в одном
направлении от процессора к оперативной
памяти и устройствам (однонаправленная
шина).
Разрядность шины адреса
определяет адресное пространство
процессора, т.е. количество ячеек
оперативной памяти, которые могут иметь
уникальные адреса. Количество адресуемых
ячеек памяти можно рассчитать по формуле:
N =2I , где I — разрядность шины адреса.
Разрядность шины адреса постоянно увеличивалась и в современных персональных компьютерах составляет 32 бит. Таким образом, максимально возможное количество адресуемых ячеек памяти равно:
N == 232 = 4 294 967 296.
Шина управления. По шине управления передаются сигналы, определяющие характер обмена информацией по магистрали. Сигналы управления определяют какую операцию считывание или запись информации из памяти нужно производить, синхронизируют обмен информацией между устройствами и т.д.
В основу построения подавляющего большинства компьютеров положены следующие общие принципы, сформулированные в 1945 г. американским ученым Джоном фон Нейманом.
1)Принцип программного управления. Программа состоит из набора команд, выполняющихся процессором автоматически в определенной последовательности. Выборка программы из памяти осуществляется с помощью счетчика команд. Этот регистр процессора последовательно увеличивает хранимый в нем адрес очередной команды на длину команды. А так как команды программы расположены в памяти друг за другом, то тем самым организуется выборка цепочки команд из последовательно расположенных ячеек памяти. Если же нужно после выполнения команды перейти не к следующей, а к какой-то другой, используются команды условного или безусловного перехода, которые заносят в счетчик команд номер ячейки памяти, содержащей следующую команду. Выборка команд из памяти прекращается после достижения и выполнения команды «стоп». Таким образом, процессор исполняет программу автоматически, без вмешательства человека.
2)Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти, поэтому компьютер не различает, что хранится в данной ячейке памяти — число, текст или команда. Над командами можно выполнять такие же действия, как и над данными. Это открывает целый ряд возможностей. Например, программа в процессе своего выполнения также может подвергаться переработке, что позволяет задавать в самой программе правила получения некоторых ее частей (так в программе организуется выполнение циклов и подпрограмм). Более того, команды одной программы могут быть получены как результаты исполнения другой программы. На этом принципе основаны методы трансляции — перевода текста программы с языка программирования высокого уровня на язык конкретной машины.
3)Принцип адресности. Структурно основная память состоит из перенумерованных ячеек. Процессору в произвольный момент времени доступна любая ячейка. Отсюда следует возможность давать имена областям памяти так, чтобы к запомненным в них значениям можно было впоследствии обращаться или менять их в процессе выполнения программ с использованием присвоенных имен. Компьютеры, построенные на перечисленных принципах, относятся к типу фон-неймановских. Но существуют компьютеры, принципиально отличающиеся от фон-неймановских. Для них, например, может не выполняться принцип программного управления, т. е. они могут работать без счетчика команд, указывающего текущую выполняемую команду программы. Для обращения к какой-либо переменной, хранящейся в памяти, этим компьютерам необязательно давать ей имя. Такие компьютеры называются не фон-неймановскими. Все компоненты компьютера делятся на внутренние и внешние. Внутренние компоненты обычно находятся внутри системного блока (хотя для многих из них существуют и внешние модели). Зато внешние или, как их еще называют, периферийные устройства всегда располагаются вне системного блока.
Архитектура компьютеров, с которыми мы будем работать, называется открытой, а сами такие устройства - компьютерами с открытой архитектурой. Дело в том, что внутренние компоненты такого компьютера можно заменять, например, чтобы повысить производительность системы.
Замена отдельных устройств в составе компьютера называется модернизацией или апгрейдом (от англ. upgrade).
Компьютеры с открытой архитектурой впервые начала производить фирма IBM (произносится "ай-би-эм") в 80х годах прошлого века. Поэтому долгое время их называли еще IBM-совместимыми компьютерами. Внешние компоненты компьютера, в свою очередь делятся на устройства ввода информации и устройства вывода. Устройства ввода служат для занесения информации в компьютер. Устройства вывода выдают визуальную или звуковую информацию для пользователя.
Компоненты компьютера соединяются между собой при помощи электрических проводов. Иногда эти провода широкие и плоские (тогда они называются шлейфами) - такие тянутся, например, от материнской платы к дисководу или винчестеру, иногда тоненькие, как для наушников, или толстые, жесткие - такие подводят питание к системному блоку или монитору, соединяют между собой отдельные устройства. Беспроводные устройства (обычно клавиатуры и мыши) обмениваются данными с компьютером при помощи инфракрасного порта или BlueTooth.
Внутренние компоненты компьютера Процессор - основное устройство в составе компьютера, в нем происходит вся обработка информации (за исключением некоторых видов графики и звука). Кулер - устройство охлаждения процессора и других компонентов. Оперативная память (RAM) - устройство кратковременного хранения информации, с которой работает процессор. Винчестер (жесткий диск, hard disk, HDD) - основное устройство длительного хранения информации, единственное, совмещающее в себе дисковод и сам диск. Лазерный дисковод (CD-ROM, CD-RW, DVD-ROM, DVD-RW) - устройство чтения, а часто и записи на лазерные диски. Флоппи-дисковод служит для чтения и записи дискет. Материнская плата - к ней подключаются и через нее взаимодействуют остальные компоненты компьютера.
Разъемы крепления внутренних плат называются слотами, отдельные слоты предназначены для плат оперативной памяти. Разъемы крепления внешних компонентов называют портами (например, сейчас многие устройства подключаются через USB-порт). Блок питания подводит электропитание к каждому компоненту компьютера. Видеокарта (видеоплата) - отвечает за вывод изображения на экран монитора. Звуковая карта (плата) - отвечает за вывод звука. Сетевая карта (плата) отвечает за связь компьютера с другими компьютерами локальной сети. Модем - связывает компьютер с сетью удаленного доступа по телефонной линии.
Системная, или материнская, плата персонального компьютера (System board или Mother board) является основой системного блока, определяющей архитек¬туру и производительность компьютера. На ней устанавливаются следующие обязательные компоненты: • Процессор(ы) и сопроцессор. • Память: постоянная (ROM или Flash BIOS), оперативная (DRAM), кэш (SRAM). • Обязательные системные средства ввода/вывода. • Интерфейсные схемы и разъемы шин расширения. • Кварцевый генератор синхронизации со схемой формирования сброса системы по сигналу PowerGood от блока питания или кнопки RESET. • Дополнительные стабилизаторы напряжения питания для низковольтных процессоров VRM (Voltage Regulation Module). Кроме этих сугубо обязательных средств, на большинстве системных плат устанавливают и контроллеры интерфейсов для подключения гибких и жестких дисков (IDE, SCSI), графический адаптер, аудиоканал, а также адаптеры СОМ-и LPT-портов, «мыши» и другие. Контроллеры, требующие интенсивного обме¬на данными (IDE, SCSI, графический адаптер), используют преимущества локального подключения к шине процессора. Цель размещения других конт¬роллеров на системной плате — сокращение общего числа плат компьютера. Состав процессора может существенно меняться в зависимости от конструктивных особенностей, своего назначения и производителя. Тем не менее, существуют элементы процессора, которые присутствуют в подавляющем большинстве современных универсальных процессоров. Рассмотрим некоторые из них.
Транзистор (англ.: transistor) – один из базовых элементов процессора. Большинство современных процессоров созданы на основе транзисторов и транзисторной логики. Современный процессор включает в себя несколько десятков или сотен миллионов транзисторов. Регистры процессора (processor register) – малоразмерная, но очень быстрая память процессора. Используется процессором для хранения обрабатываемых данных (операнда, результатов вычислений и пр.). Выделяются сегментные регистры и регистры данных.
Одним из ключевых компонентов процессора является Арифметическо-логическое устройство (АЛУ), которое выполняет основные математические операции (сложение, вычитание, побитовые операции и прочие). Математический сопроцессор (МСП) – один из основных компонентов центрального процессора, который обеспечивает ускорение выполнения математических операций с плавающей запятой. Системной шиной (СШ) обозначают линии передачи данных между процессором и различными компонентами компьютера и периферийными устройствами. Выделяется шина адреса (англ.: address bus) и шина данных (англ.: data bus). Одной из ключевых характеристик шины является её разрядность. Кэш-память (англ.: CPU cache) размещается во многих современных процессорах. Кэш-память предназначена для сокращения времени работы с оперативной памятью компьютера, за счёт частичного копирования информации. Генератор тактовых частот (также синтезатор частот, тактовый генератор, сленг. "клокер" - от англ. "clocker", clock generator, clock synthesizer) — устройство, формирующее основные тактовые частоты, используемые на материнской плате и в процессоре. Источником опорной частоты для него служит, как правило, кварцевый резонатор ("кварц") на частоту 14,318 МГц. Тактовая частота задает ритм жизни компьютера. Чем выше тактовая частота, тем меньше длительность выполнения одной операции и тем выше производительность компьютера. Другой характеристикой процессора, влияющей на его производительность , является разрядность. В общем случае производительность процессора тем выше, чем больше его разрядность. В настоящее время используются 18,16-, 32- и 64-разрядные процессоры, причем практически все современные программы рассчитаны на 32- и 64-разрядные процессоры. Производительность процессора является интегральной характеристикой , которая зависит от частоты процессора, его разрядности, а так же особенностей архитектуры (наличие кэш-памяти и др.). Производительность процессора нельзя вычислить, она определяется в процессе тестирования, т.е. определения скорости выполнения процессором определенных операций в какой-либо программной среде. Теперь познакомимся еще с одним принципом архитектуры ЭВМ, предложенным фон Нейманом. Он называется принципом хранимой программы. Наряду с данными в оперативную память компьютера помещается программа управления его работой. Компьютер является исполнителем программ и, следовательно, обладает своей системой команд (СКИ). Команды управления работой компьютера принято называть машинными командами. Машинная команда должна содержать в себе следующую информацию: -какую операцию выполнить; -где находятся операнды; -куда поместить результат операции; -какую команду выполнять следующей. Компьютеры разных типов имеют разную структуру команд. Всякая машинная команда состоит из кода операции и адресной части. В «УК Нейман» машинные команды имеют трехадресную структуру (формат). Это значит, что ячейка, в кото-рой хранится команда, делится на четыре части (по одному байту на каждую часть). Будем их обозначать следующим образом: КОП — код операции, А1 — адрес первого операнда, А2 — адрес второго операнда, A3 — адрес результата. Операндами называют данные, над которыми производится операция. В арифметических операциях это слагаемые, сомножители, уменьшаемое и вычитаемое, делимое и делитель. Совокупность правил записи программ управления компьютером с использованием машинных команд называется машинным языком (или языком машинных команд). Для арифметических операций А1 и А2 — адреса операндов, A3 — адрес результата. Исходные данные вводятся в память по команде ввода, результаты выводятся по команде вывода. Система команд процессора В общем случае система команд процессора включает в себя следующие четыре основные группы команд: -команды пересылки данных; -арифметические команды; -логические команды; -команды переходов. Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника (Source) в приемник (Destination). Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется. Арифметические команды выполняют операции сложения, вычитания, умножения, деления, увеличения на единицу (инкрементирования), уменьшения на единицу (декрементирования) и т.д. Этим командам требуется один или два входных операнда. Формируют команды один выходной операнд. Логические команды производят над операндами логические операции, например, логическое И, логическое ИЛИ, исключающее ИЛИ, очистку, инверсию, разнообразные сдвиги (вправо, влево, арифметический сдвиг, циклический сдвиг). Этим командам, как и арифметическим, требуется один или два входных операнда, и формируют они один выходной операнд. Наконец, команды переходов предназначены для изменения обычного порядка последовательного выполнения команд. С их помощью организуются переходы на подпрограммы и возвраты из них, всевозможные циклы, ветвления программ, пропуски фрагментов программ и т.д. Команды переходов всегда меняют содержимое счетчика команд. Переходы могут быть условными и безусловными. Именно эти команды позволяют строить сложные алгоритмы обработки информации. В соответствии с результатом каждой выполненной команды устанавливаются или очищаются биты регистра состояния процессора (PSW). Но надо помнить, что не все команды изменяют все имеющиеся в PSW флаги. Это определяется особенностями каждого конкретного процессора. У разных процессоров системы команд существенно различаются, но в основе своей они очень похожи. Количество команд у процессоров также различно. Например, у упоминавшегося уже процессора МС68000 всего 61 команда, а у процессора 8086 — 133 команды. У современных мощных процессоров количество команд достигает нескольких сотен. В то же время существуют процессоры с сокращенным набором команд (так называемые RISC-процессоры), в которых за счет максимального сокращения количества команд достигается увеличение эффективности и скорости их выполнения. Типы процессоров: CISC-процессоры Complex Instruction Set Computing — вычисления со сложным набором команд. Процессорная архитектура, основанная на усложнённом наборе команд. Типичными представителями CISC является семейство микропроцессоров Intel x86 (хотя уже много лет эти процессоры являются CISC только по внешней системе команд). RISC-процессоры Reduced Instruction Set Computing (technology) — вычисления с сокращённым набором команд. Архитектура процессоров, построенная на основе сокращённого набора команд. Характеризуется наличием команд фиксированной длины, большого количества регистров, операций типа регистр-регистр, а также отсутствием косвенной адресации. Концепция RISC разработана Джоном Коком (John Cocke) из IBM Research, название придумано Дэвидом Паттерсоном (David Patterson). Самая распространённая реализация этой архитектуры представлена процессорами серии PowerPC, включая G3, G4 и G5. Довольно известная реализация данной архитектуры — процессоры серий MIPS и Alpha. MISC-процессоры Minimum Instruction Set Computing — вычисления с минимальным набором команд. Дальнейшее развитие идей команды Чака Мура, который полагает, что принцип простоты, изначальный для RISC процессоров, слишком быстро отошёл на задний план. В пылу борьбы за максимальное быстродействие, RISC догнал и перегнал многие CISC процессоры по сложности. Архитектура MISC строится на стековой вычислительной модели с ограниченным числом команд (примерно 20–30 команд). Многоядерные процессоры Содержат несколько процессорных ядер в одном корпусе (на одном или нескольких кристаллах). Процессоры, предназначенные для работы одной копии операционной системы на нескольких ядрах, представляют собой высокоинтегрированную реализацию системы «Мультипроцессор». На данный момент массово доступны процессоры с двумя ядрами, в частности Intel Core 2 Duo на ядре Conroe и Athlon64X2 на базе микроархитектуры K8. Говорят, что любая система обратно совместима, если она может обрабатывать что-либо, что было создано раньше, чем она была разработана. Совместимость снизу вверх - это способность взаимодействовать с будущими версиями. Стоит обратить внимание на то, что эти характеристики не являются взаимоисключающими - что-либо может быть и обратно совместимо, и совместимо снизу вверх.
Прямой доступ у оперативной памяти Прямой доступ к памяти (Direct Memory Access - DMA) используется для выполнения операций передачи данных непосредственно между оперативной памятью и устройствами ввода/вывода. Обычно это такие устройства, как НГМД, НМД, кассетные накопители на магнитной ленте КНМЛ (стримеры). При использовании DMA процессор не участвует в операциях ввода/вывода, контроллер прямого доступа сам формирует все сигналы, необходимые для обмена данными с устройством. Скорость такого непосредственного обмена значительно выше, чем при традиционном вводе/выводе с использованием центрального процессора и команд INP, OUT.
Периферийные устройства
Основное назначение ПУ - обеспечить поступление в ПК из окружающей среды программ и данных для обработки, а также выдачу результатов работы ПК в виде, пригодном для восприятия человека или для передачи на другую ЭВМ, или в иной, необходимой форме. ПУ в немалой степени определяют возможности применения ПК. Периферийные устройства можно разделить на несколько групп по функциональному назначению: 1. Устройства ввода-вывода – предназначены для ввода информации в ПК, вывода в необходимом для оператора формате или обмена информацией с другими ПК. К такому типу ПУ можно отнести внешние накопители (ленточные, магнитооптические), модемы. 2. Устройства вывода – предназначены для вывода информации в необходимом для оператора формате. К этому типу периферийных устройств относятся: принтер, монитор (дисплей), аудиосистема. 3. Устройства ввода – Устройствами ввода являются устройства, посредством которых можно ввести информацию в компьютер. Главное их предназначение - реализовывать воздействие на машину. К такому виду периферийных устройств относятся: клавиатура (входит в базовую конфигурацию ПК), сканер, графический планшет и т.д. 4. Дополнительные ПУ – такие как манипулятор «мышь», который лишь обеспечивает удобное управление графическим интерфейсом операционных систем ПК и не несет ярковыраженных функций ввода либо вывода информации; WEB-камеры, способствующие передаче видео и аудио информации в сети Internet, либо между другими ПК. Последние, правда, можно отнести и к устройствам ввода, благодаря возможности сохранения фото, видео и аудио информации на магнитных или магнитооптических носителях. Каждые из перечисленных групп устройств выполняют определенные функции ограниченные их возможностями и назначением. Параллельные и последовательные порты Как только информация закодирована в виде двоичных импульсов, она может быть введена в компьютер через так называемые порты либо в последовательном, либо в параллельном режиме. Иначе говоря, порты бывают последовательными или параллельными в зависимости от способа передачи битов. При последовательном способе ввода биты, составляющие машинное слово (будем считать словом 8 бит, или 1 байт), поступают по очереди по одному и тому же каналу. Пройдя через порт, биты выстраиваются в шеренги, образуя единицы информации той длины, которая соответствует слову данного компьютера. Дальше отдельные биты, составляющие слово, движутся параллельно друг другу как единое целое. В параллельный порт биты поступают уже в виде шеренги, причем каждый бит идет по своему каналу. Такая передача данных намного быстрее последовательной, но имеет и серьезные недостатки. При расстояниях свыше 30 м синхронизировать параллельные сигналы трудно, да и стоимость параллельных кабелей довольно высока. Поэтому в случаях, когда сигналы проходят большие расстояния - например, тысячи километров по телефонным линиям связи, - разработчики компьютеров предпочитают более медленный последовательный способ передачи данных. Система прерываний. Прерывание - приостановление работы одной программы и передача управления другой при возникновении некоторого независящего от них события. При этом сохраняется возможность возврата управления прерванной программе, без потери ею работоспосодности. Адреса подпрограмм обслуживания прерываний находятся в специальной таблице и называются векторами прерывания. В реальном режиме таблица вектров распологается в начале физической памяти; вектор имеет длину четыре байта и храниться в форме CS:IP. В защищенном режиме таблица векторов может быть расположена в любом месте и содержит более сложные дескрипторы (в режиме V86 имеется подобие таблицы реального режима). Работа с системой прерываний может рассматриваться с двух точек зрения: -Работа с векторами прерываний; - Работа с микросхемами контроллеров прерываний (современные рашины могут не иметь отдельной микросхемы контроллера прерываний, но их регистры сохранены в адресном пространстве).
Устройство и принципы действия мыши и клавиатуры.
Клавиатура – клавишное устройство управления персональным компьютером. Служит для ввода алфавитно-цифровых (знаковых) данных, а также команд управления. Клавиатура относится к стандартным средствам персонального компьютера. Ее основные функции не нуждаются в поддержке специальными системными программами (драйверами). Необходимое программное обеспечение для начала работы с компьютером уже имеется в микросхеме ПЗУ в составе базовой системы ввода-вывода (BIOS), и потому компьютер реагирует на нажатия клавиш сразу после включения. Стандартная клавиатура имеет более 100 клавиш, функционально распределенных по нескольким группам: 1)Группа алфавитно-цифровых клавши предназначена для ввода знаковой информации и команд, набираемых по буквам. Каждая клавиша может работать в нескольких режимах (регистрах) и, соответственно, может использоваться для ввода нескольких символов. Переключение между нижним регистром (для ввода строчных символов) и верхним регистром (для ввода прописных символов) выполняют удержанием клавиши SHIFT (нефиксированное переключение). 2) Группа функциональных клавиш включает двенадцать клавиш (от F1 до F12), размещенных в верхней части клавиатуры. Функции, закрепленные за данными клавишами, зависят от свойств конкретной работающей в данный момент программы, а в некоторых случаях и от свойств операционной системы. 3) Служебные клавиши располагаются рядом с клавишами алфавитно-цифровой группы. В связи с тем, что ими приходится пользоваться особенно часто, они имеют увеличенный размер. К ним относятся рассмотренные выше клавиши SHIFT и ENTER, регистровые клавиши ALT и CTRL (их используют в комбинации с другими клавишами для формирования команд), клавиша TAB (для ввода позиций табуляции при наборе текста), клавиша ESC (от английского слова Escape) для отказа от исполнения последней введенной команды и клавиша BACKSPACE для удаления только что введенных знаков (она находится над клавишей ENTER и часто маркируется стрелкой, направленной влево). Служебные клавиши PRINT SCREEN, SCROLL LOCK и PAUSE/BREAK размещаются справа от группы функциональных клавиш и выполняют специфические функции, зависящие от действующей операционной системы. Мышь – устройство управления манипуляторного типа. Перемещение мыши по плоской поверхности синхронизировано с перемещением графического объекта (указателя мыши) на экране монитора. В отличие от рассмотренной ранее клавиатуры, мышь не является стандартным органом управления, и персональный компьютер не имеет для нее выделенного порта. Для мыши нет и постоянного выделенного прерывания, а базовые средства ввода и вывода (BIOS) компьютера, размещенные в постоянном запоминающем устройстве (ПЗУ), не содержат программных средств для обработки прерываний мыши. В связи с этим в первый момент после включения компьютера мышь не работает. Она нуждается в поддержке специальной системной программы – драйвера мыши. Стандартная мышь имеет только две кнопки, хотя существуют нестандартные мыши с тремя кнопками или с двумя кнопками и одним вращающимся регулятором. В последнее время все большее распространение получают мыши с колесиком прокрутки, расположенным между двумя кнопками и позволяющим выполнять прокрутку в любых приложениях Windows.
Оперативная память Оперативная память — это рабочая область для процессора компьютера. В ней во время работы хранятся программы и данные. Оперативная память часто рассматривается как временное хранилище, потому что данные и программы в ней сохраняются только при включенном компьютере или до нажатия кнопки сброса (reset). Перед выключением или нажатием кнопки сброса все данные, подвергнутые изменениям во время работы, необходимо сохранить на запоминающем устройстве, которое может хранить информацию постоянно (обычно это жесткий диск). При новом включении питания сохраненная информация вновь может быть загружена в память. Устройства оперативной памяти иногда называют запоминающими устройствами с произвольным доступом. Это означает, что обращение к данным, хранящимся в оперативной памяти, не зависит от порядка их расположения в ней. Термин оперативная память часто обозначает не только микросхемы, которые составляют устройства памяти в системе, но включает и такие понятия, как логическое отображение и размещение. Логическое отображение — это способ представления адресов памяти на фактически установленных микросхемах. Размещение — это расположение информации (данных и команд) определенного типа по конкретным адресам памяти системы. Файлы компьютерной программы при ее запуске загружаются в оперативную память, в которой хранятся во время работы с указанной программой. Процессор выполняет программно-реализованные команды, содержащиеся в памяти, и сохраняет их результаты. Оперативная память хранит коды нажатых клавиш при работе с текстовым редактором, а также величины математических операций. При выполнении команды Сохранить (Save) содержимое оперативной памяти сохраняется в виде файла на жестком диске. Физически оперативная память в системе представляет собой набор микросхем или модулей, содержащих микросхемы, которые обычно подключаются к системной плате. Эти микросхемы или модули могут иметь различные характеристики и, чтобы функционировать правильно, должны быть совместимы с системой, в которую устанавливаются.
Постоянное запоминающее устройство. К постоянной памяти относят постоянное запоминающее устройство, ПЗУ (в англоязычной литературе - Read Only Memory, ROM, что дословно переводится как "память только для чтения"), перепрограммируемое ПЗУ, ППЗУ (в англоязычной литературе – Programmable Read Only Memory, PROM), и флэш-память (flash memory). Название ПЗУ говорит само за себя. Информация в ПЗУ записывается на заводе-изготовителе микросхем памяти, и в дальнейшем изменить ее значение нельзя. В ПЗУ хранится критически важная для компьютера информация, которая не зависит от выбора операционной системы. Программируемое ПЗУ отличается от обычного тем, что информация на этой микросхеме может стираться специальными методами (например, лучами ультрафиолета), после чего пользователь может повторно записать на нее информацию. Эту информацию будет невозможно удалить до следующей операции стирания информации. Системная плата компьютера содержит микросхему CMOS-памяти. Чтобы содержимое CMOS-памяти не пропадало при выключении компьютера из сети питания, она питается от маленькой батарейки. CMOS-память компьютеров IBM PC/AT на базе процессоров 80286 хранит сведения о конфигурации компьютера, например, тип подключенного винчестера и дисководов для флоппи-дисков, объем оперативной памяти, текущую дату и время. Некоторые компьютеры IBM PC/AT имеют расширенную CMOS-память. В ней дополнительно может задаваться возможность переноса части функций BIOS в оперативную память (так называемый режим теневой памяти) и некоторые другие параметры. Некоторые компьютеры хранят в CMOS-памяти пароль, запрашиваемый сразу при включении питания. Задав пароль, вы можете ограничить доступ к компьютеру. В современных компьютерах процесс начальной загрузки начинается с выполнения процессором команд, расположенных в постоянной памяти (например на IBM PC — команд BIOS), начиная с предопределённого адреса (процессор делает это после перезагрузки без какой бы то ни было помощи). Данное программное обеспечение может обнаруживать устройства, подходящие для загрузки, и загружать со специального раздела выбранного устройства
Структура машинной команды
Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия. Каждая команда содержит элементы, определяющие:
что делать? (ответ на этот вопрос дает элемент команды, называемый кодом операции (КОП));
объекты, над которыми нужно что-то делать (эти элементы называются операндами);
как делать? (эти элементы называются типами операндов — обычно задаются неявно).
Приведенный на рис. 1 формат машинной команды является самым общим. Максимальная длина машинной команды — 15 байт. Реальная команда может содержать гораздо меньшее количество полей, вплоть до одного — только КОП.
Рис. 1. Формат машинной команды
Опишем назначения полей машинной команды.
Префиксы. Необязательные элементы машинной команды, каждый из которых состоит из одного байта или может отсутствовать. В памяти префиксы предшествуют команде. Назначение префиксов — модифицировать операцию, выполняемую командой. Прикладная программа может использовать следующие типы префиксов:
Префикс замены сегмента. В явной форме указывает, какой сегментный регистр используется в данной команде для адресации стека или данных. Префикс отменяет выбор сегментного регистра по умолчанию. Префиксы замены сегмента имеют следующие значения:
2eh — замена сегмента cs;
36h — замена сегмента ss;
3eh — замена сегмента ds;
26h — замена сегмента es;
64h — замена сегмента fs;
65h — замена сегмента gs.
Префикс разрядности адреса уточняет разрядность адреса (32 или 16-разрядный).
Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Этот адрес может иметь разрядность 16 или 32 бит. Если разрядность адреса для данной команды 16 бит, это означает, что команда содержит 16-разрядное смещение (см. рис. 1), оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента. В контексте рис. 2 это смещение называется эффективный адрес. Если разрядность адреса 32 бит, это означает, что команда содержит 32-разрядное смещение (см. рис. 1 ), оно соответствует 32-разрядному смещению адресного операнда относительно начала сегмента и по его значению формируется 32-битное смещение в сегменте. С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение разрядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс.
Рис. 2. Механизм формирования физического адреса в реальном режиме
Префикс разрядности операнда аналогичен префиксу разрядности адреса, но указывает на разрядность операндов (32 или 16-разрядные), с которыми работает команда. В соответствии с какими правилами устанавливаются значения атрибутов разрядности адреса и операндов по умолчанию?
В реальном режиме и режиме виртуального i8086 значения этих атрибутов — 16 бит. В защищенном режиме значения атрибутов зависят от состояния бита D в дескрипторах исполняемых сегментов (см. урок 16). Если D = 0, то значения атрибутов, действующие по умолчанию, равны 16 бит; если D = 1, то 32 бит. Значения префиксов разрядности операнда 66h и разрядности адреса 67h. Вы можете с помощью префикса разрядности адреса в реальном режиме использовать 32-разрядную адресацию, но при этом необходимо помнить об ограниченности размера сегмента величиной 64 Кбайт. Аналогично префиксу разрядности адреса вы можете использовать префикс разрядности операнда в реальном режиме для работы с 32-разрядными операндами (к примеру, в арифметических командах).
Префикс повторения используется с цепочечными командами (командами обработки строк). Этот префикс “зацикливает” команду для обработки всех элементов цепочки. Система команд поддерживает два типа префиксов:
безусловные (rep — 0f3h), заставляющие повторяться цепочечную команду некоторое количество раз;
условные (repe/repz — 0f3h, repne/repnz — 0f2h), которые при зацикливании проверяют некоторые флаги, и в результате проверки возможен досрочный выход из цикла.
Код операции. Обязательный элемент, описывающий операцию, выполняемую командой. Многим командам соответствует несколько кодов операций, каждый из которых определяет нюансы выполнения операции.
Последующие поля машинной команды определяют местоположение операндов, участвующих в операции, и особенности их использования. Рассмотрение этих полей связано со способами задания операндов в машинной команде и потому будет выполнено позже.
Байт режима адресации modr/m. Значения этого байта определяет используемую форму адреса операндов. Операнды могут находиться в памяти в одном или двух регистрах. Если операнд находится в памяти, то байт modr/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса (см. рис. 2). В защищенном режиме для определения местоположения операнда в памяти может дополнительно использоваться байт sib (Scale-Index-Base — масштаб-индекс-база). Байт modr/m состоит из трех полей (см. рис. 1):
поле mod определяет количество байт, занимаемых в команде адресом операнда (см. рис. 1, поле смещение в команде).
Поле mod используется совместно с полем r/m, которое указывает способ модификации адреса операнда смещение в команде. К примеру, если mod = 00, это означает, что поле смещение в команде отсутствует, и адрес операнда определяется содержимым базового и (или) индексного регистра. Какие именно регистры будут использоваться для вычисления эффективного адреса, определяется значением этого байта. Если mod = 01, это означает, что поле смещение в команде присутствует, занимает один байт и модифицируется содержимым базового и (или) индексного регистра. Если mod = 10, это означает, что поле смещение в команде присутствует, занимает два или четыре байта (в зависимости от действующего по умолчанию или определяемого префиксом размера адреса) и модифицируется содержимым базового и (или) индексного регистра. Если mod = 11, это означает, что операндов в памяти нет: они находятся в регистрах. Это же значение байта mod используется в случае, когда в команде применяется непосредственный операнд;
поле reg/коп определяет либо регистр, находящийся в команде на месте первого операнда, либо возможное расширение кода операции;
поле r/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod = 11), либо используемые для вычисления эффективного адреса (совместно с полем смещение в команде) базовые и индексные регистры.
Байт масштаб-индекс-база (байт sib) используется для расширения возможностей адресации операндов.
На наличие байта sib в машинной команде указывает сочетание одного из значений 01 или 10 поля mod и значения поля r/m= 100. Байт sib состоит из трех полей:
поля масштаба ss. В этом поле размещается масштабный множитель для индексного компонента index, занимающего следующие три бита байта sib.
В поле ss может содержаться одно из следующих значений: 1, 2, 4, 8. При вычислении эффективного адреса на это значение будет умножаться содержимое индексного регистра. Более подробно с практической точки зрения эта расширенная возможность индексации рассматривается на уроке 12 при обсуждении вопросов работы с массивами;
поля index — используется для хранения номера индексного регистра, который применяется для вычисления эффективного адреса операнда;
поля base — используется для хранения номера базового регистра, который также применяется для вычисления эффективного адреса операнда. Напомню, что в качестве базового и индексного регистров могут использоваться практически все регистры общего назначения.
Поле смещения в команде. 8, 16 или 32-разрядное целое число со знаком, представляющее собой, полностью или частично (с учетом вышеприведенных рассуждений), значение эффективного адреса операнда.
Поле непосредственного операнда. Необязательное поле, представляющее собой 8, 16 или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта modr/m.