![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Машинная команда представляет собой закодированное по определенным правилам указание процессору на выполнение некоторой операции. Правила кодирования команд называются форматом команд.
0, 1, 2, 3 или 4 байта | 1, 2 или 3 байта | 0 или 1 байта | 0 или 1 байт | 0, 1, 2 или 4 байта | 0, 1, 2 или 4 байт |
Префиксы | Код операции | Байт mod r/m | Байт sib | Смещение в команде | Непосредственный операнд |
Рисунок 9. Общий формат машинной команды
Назначения полей машинной команды:
· Префиксы – необязательные однобайтные элементы машинной команды. Назначение префиксов — изменить действия, выполняемые командой. Машинная команда может иметь до четырех префиксов одновременно.
· Код операции – обязательный элемент, описывающий операцию, выполняемую командой. Многим командам соответствует несколько кодов операций, каждый из которых определяет нюансы выполнения операции. Поле кода операции не имеет однозначной структуры. В зависимости от конкретных команд, оно может иметь в своем составе от одного до трех элементов. Один из этих трех элементов является непосредственно кодом операции или ее частью, остальные уточняют детали операции.
· Байт режима адресации mod r/m, иногда называемый постбайтом, несет информацию об операндах и режиме адресации. Операнды могут находиться в памяти, а также в одном или двух регистрах. Если операнд находится в памяти, то байт mod r/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса. Байт mod r/m состоит из трех полей:
- mod (два бита) определяет способ адресации и количество байтов, занимаемых в команде адресом операнда (поле смещения в команде).
- reg (3 бита) определяет либо регистр, находящийся в команде на месте второго операнда, либо возможное расширение кода операции (давая в совокупности размер поля КОП в 11 битов).
- г/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда, либо базовые и индексные регистры, применяемые для вычисления эффективного адреса (совместно с полем смещения в команде).
· Байт масштаба, индекса и базы (Scale-Index-Base – sib) используется для расширения возможностей адресации операндов. Байт sib состоит из трех полей:
- поле масштаба ss. В этом поле размещается масштабный множитель для индексного компонента index, занимающего следующие три бита байта sib. В поле ss может содержаться одно из следующих значений: 1, 2, 4, 8. При вычислении эффективного адреса на это значение будет умножаться содержимое индексного регистра.
- поле index используется для хранения номера индексного регистра, который применяется для вычисления эффективного адреса операнда;
- поле base используется для хранения номера базового регистра, который также применяется для вычисления эффективного адреса операнда. В качестве базового и индексного регистров могут использоваться практически все регистры общего назначения.
· Поле смещения в команде – это 8-, 16- или 32-разрядное целое число со знаком, представляющее собой полностью или частично значение эффективного адреса операнда.
· Поле непосредственного операнда – необязательное поле, представляющее собой 8-, 16- или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта mod r/m.
Дата публикования: 2014-12-08; Прочитано: 661 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!