Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3.8-3.13.doc
Скачиваний:
7
Добавлен:
16.09.2019
Размер:
95.23 Кб
Скачать

3.10Система команд процессора i32. Машинная команда. Байт способа адресации.

Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия. Каждая команда содержит элементы, определяющие:

  • код операции (КОП));

  • операнды;

Приведенный на рис. 1 формат машинной команды является самым общим. Максимальная длина машинной команды — 15 байт. Реальная команда может содержать гораздо меньшее количество полей, вплоть до одного — только КОП.

Рис. 1. Формат машинной команды

Опишем назначения полей машинной команды.

Префиксы. Необязательные элементы машинной команды, каждый из которых состоит из одного байта или может отсутствовать. Назначение префиксов — модифицировать операцию, выполняемую командой.

Код операции. Обязательный элемент, описывающий операцию, выполняемую командой. Многим командам соответствует несколько кодов операций, каждый из которых определяет нюансы выполнения операции.

Последующие поля машинной команды определяют местоположение операндов, участвующих в операции, и особенности их использования.

Байт режима адресации modr/m. Байт способа адресации, если он присутствует,  занимает  второй  байт машинного кода и состоит из следующих трех элементов:

1) mod - двухбитового кода, имеющего значения 11 для  ссылки  на      регистр и 00, 01 и 10 для ссылки на память;           2) reg - трехбитового указателя регистра;           3) r/m  -  трехбитового  указателя  регистра  или  памяти  (r  -      регистр, m - адрес памяти).

Биты MOD     Два  бита  mod  определяют  адресацию  регистра  или  памяти.

00   биты г/m дают абсолютный  адрес,  байт  смещения  (относительный адрес) отсутствует; 01   биты г/m дают  абсолютный  адрес  памяти  и  имеется  один  байт смещения; 10   биты г/m дают абсолютный адрес и имеется два байта смещения; 11   биты  г/m  определяют  регистр.  Бит  w  (в байте кода операции) определяет ссылку на восьми- или шестнадцатибитовый регистр.

Биты REG     Три бита  reg  (вместе  с  битом w) определяют конкретный восьми- или шестнадцатибитовый регистр.

Биты R/M     Три бита г/m  (регистр/память)  совместно  с  битами  mod  определяют способ адресации

Рассмотрим пример  сложения  содержимого  регистра  АХ  с  содержимым регистра BX:

ADD    BX,AX   00000011  11 011 000                                     dw mod reg r/m

3.11Разветвляющий вычислительный процесс.

Последовательно работает очень мало программ. Обычно в программе есть точки, в которых принимается решение о том, какая команда будет выполняться следующей. Это решение может быть безусловным и условным. Для перхода используют Метки - символическое имя определенной ячейки памяти, предназначенное для использования в командах передачи управления в качестве операнда. Транслятор ассемблера присваивает каждой метке три атрибута:

  • Имя сегмента кода, в котором эта метка описана

  • Смещение, то есть расстояние в байтах от начала этого сегмента

  • Тип метки (near. Переход на такую метку возможен только в пределах того сегмента кода, в котором она описана, far. Переход на метку возможен в результате межсегментной передачи управления)

Определить метку можно двумя способами: с помощью директивы LABEL, с помощью оператора ":" (двоеточие).

Команды условного перехода удобно применять для проверки различных условий, возникающих в ходе выполнения программы. Сравнение происходит с помощью команды cmp операнд_1, операнд_2

Команда

Состояние проверяемых флагов

Условие перехода

JA

CF = 0 и ZF = 0

если выше

JAE

CF = 0

если выше или равно

JB

CF = 1

если ниже

JBE

CF = 1 или ZF = 1

если ниже или равно

JC

CF = 1

если перенос

JE

ZF = 1

если равно

JZ

ZF = 1

если 0

JG

ZF = 0 и SF = OF

если больше

JGE

SF = OF

если больше или равно

JL

SF <> OF

если меньше

JLE

ZF=1 или SF <> OF

если меньше или равно

JNA

CF = 1 и ZF = 1

если не выше

JNAE

CF = 1

если не выше или равно

JNB

CF = 0

если не ниже

JNBE

CF=0 и ZF=0

если не ниже или равно

JNC

CF = 0

если нет переноса

JNE

ZF = 0

если не равно

JNG

ZF = 1 или SF <> OF

если не больше

JNGE

SF <> OF

если не больше или равно

JNL

SF = OF

если не меньше

JNLE

ZF=0 и SF=OF

если не меньше или равно

JNO

OF=0

если нет переполнения

JNP

PF = 0

если количество единичных битов результата нечетно (нечетный паритет)

JNS

SF = 0

если знак плюс (знаковый (старший) бит результата равен 0)

JNZ

ZF = 0

если нет нуля

JO

OF = 1

если переполнение

JP

PF = 1

если количество единичных битов результата четно (четный паритет)

JPE

PF = 1

то же, что и JP, то есть четный паритет

JPO

PF = 0

то же, что и JNP

JS

SF = 1

если знак минус (знаковый (старший) бит результата равен 1)

JZ

ZF = 1

если ноль

Логические условия "больше" и "меньше" относятся к сравнениям целочисленных значений со знаком, а "выше и "ниже" — к сравнениям целочисленных значений без знака.

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