Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_lek_OAiP_Meleshko.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
377.68 Кб
Скачать

Указатель на память

Указатели на память бывают двух типов:

ближний тип – 32-разрядный логический адрес, представляющий собой относительное смещение в байтах от начала сегмента;

дальний тип – 48-разрядный логический адрес, состоящий из двух частей: 16-разрядной сегментной части и 32-разрядного смещения.

Цепочки

Цепочка – это некоторый непрерывный набор байтов, слов или двойных слов максимальной длиной до 4 Гбайт.

Вещественые числа

Вещественные числа обрабатываются сопроцессором. Данные этого типа описываются тремя форматами: коротким, длинным, расширенным. Все они имеют для хранения ячейки разной длины.

Внутреннее представление вещественных чисел достаточно сложное:

S

Характеристика

Нормализованная мантисса

Где бит S –знак числа.

Характеристика=Смещение + Порядок

Смещение – число, равное половине максимально возможного, которое может поместиться в поле Характеристика.

Двоично-десятичные числа (bcd)

Неупакованный двоично-десятичный тип – байтовое представление десятичной цифры от 0 до 9. Неупакованные десятичные числа хранятся как байтовые значения без знака по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом.

Упакованный двоично-десятичный тип – это упакованное представление десятичных цифр от 0 до 9 в одном байте. Каждая цифра хранится в своем полубайте. Цифра в старшем полубайте является старшей.

Формат команд

Машинная команда представляет собой закодированное по определенным правилам указание процессору на выполнение некоторой операции. Правила кодирования команд называются форматом команд.

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]