Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Система команд и режимы адресации МП





Программная модель МП, дополненная реализованным АП памяти и конкретной конфигурацией портов ввода-вывода показывает, чем может располагать программист для разработки прикладной программы. Как можно распоряжаться этими ресурсами определяют система команд и режимы адресации МП.

Команда - это упорядоченная совокупность битов, представляющая код (наименование) задаваемой операции, и адреса операндов, участвующих в операции. Команда говорит МП что надо делать, а операнды - над чем. Длина команды в битах, число и расположение полей (групп битов) для кодирования элементов команды (операции, адресов и признаков) определяется форматом команды. Количество адресов в команде определяет ее адресность. Соответственно команды бывают нульадресные (безадресные), одно-, двух- и т.д. адресные. Имеются команды типа регистр - регистр, регистр - память, память - регистр, но нет память - память (кроме команды пересылки). В общем виде формат двухадресной (максимально) команды для I8086 имеет вид:

где первый байт содержит код операции COP, поле направления d (из регистра или в регистр), тип разрядности w (=1 команда оперирует словом, =1 - байтом). Второй (или постбайт) задает способ адресации, т. е. определяет участвующие в операции регистры или регистр и ячейку памяти. Состоит из трех полей md - режим, r/m - определяет первый операнд. Далее идут байты смещения disp L (H) и данных data L (H) [33]

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

Способ определения операнда называется режимом адресации. Эффективный адрес операнда может вычисляться как комбинация трех компонент: базы, индекса и смещения в команде. База - это содержимое одного из РОН, обычно BP или BX. База считается начальной точкой, а другие элементы прибавляются к ней для получения эффективного адреса. Индекс -это содержимое одного из регистров SI или DI. Смещение задается непосредственно в команде.

В соответствии с этим различают следующие режимы:

Непосредственный. Данное длиной 8 или 16 бит является частью команды. Например SUB AL,30h;Вычесть из содержимого регистра AL число 48.

Прямой. 16-битный эффективный адрес операнда является частью команды. Например ADD TEMP, BL;Прибавить содержимое BL к переменной TEMP (содержимому ячейки памяти с именем TEMP).

Регистровый. Данное содержится в заданном командой регистре МП. Например MOV AX, SI;Передать содержимое ячейки SI в AX.

Косвенный регистровый. Эффективный адрес операнда находится в одном из индексных или базовых регистров. Например MOV DI, [DI];Переслать в DI содержимое ячейки памяти, адресуемой DI. JMP AX; Перейти по адресу, заданному в регистре AX.

Базовый. Эффективный адрес операнда является суммой смещения и содержимого регистра BP или BX. Например MOV AX, [BP+10];Переслать в AX шестое слово массива, адресуемого BP. При использовании BX происходит обращение к операнду в текущем сегменте данных, а при использовании BP - в текущем сегменте стека. Основное применение связано с доступом к элементам структур данных, когда смещение (номер элемента) известно заранее, а базовый (начальный) адрес структуры должен вычисляться при выполнении программы.

Индексный. Эффективный адрес операнда вычисляется как сумма смещения, указанного в команде и содержимого индексного регистра SI или DI. Обычно используется для обращения к элементам одномерных массивов. Смещение задает начальный адрес, а значение в индексном регистре определяет нужный элемент. Например ADD CX, ROW[DI];Прибавить к CX элемент массива.

Базовый индексный. Эффективный адрес операнда равен сумме содержимого базового регистра, индексного регистра и смещения, указанного в команде. Например SUB [BX]GAMMA[DI], 1000;Используется при обращении к элементам матриц.

Относительный. Эффективный адрес вычисляется как сумма смещения в команде и текущего содержимого IP. Применяется только в командах перехода, вызовов подпрограмм и управления циклами.

Еще есть стековый режим адресации и адресация цепочек.

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

Date: 2015-09-02; view: 424; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию