Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции препода / Лекции для 3 курса.doc
Скачиваний:
82
Добавлен:
30.04.2013
Размер:
1.51 Mб
Скачать

Глава 3 базовая система команд процессора 80286

Если в гл. 2 мы рассматривали операнды команд, то теперь коснемся операций, которые выполняются над операндами. Описание команд дается неформально, а более строгое описание можно найти в литературе.

Система команд подразделяется на базовые и усовершенствованные команды, которые связаны с мультипрограммированием, управлением памятью и защитой; их нет в предыдущих процессорах семейства 86. Все базовые команды процессора 80286 имеются также в процессоре 80186, а большинство их - и в микропроцессоре 8086 (отсутствующие в нем команды будут отмечаться при описании). Усовершенствованные команды рассматриваются в гл. 5.

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

Напомним, что процессор 80286 имеет два режима работы: реальный и виртуальный. В реальном режиме усовершенствованные возможности запрещены, а в виртуальном режиме - разрешены. В этой главе предполагается, что процессор 80286 работает в реальном режиме.

Когда допустимым операндом команды указывается регистр, им может быть любой РОН, указательный или индексный регистр, но не может быть сегментный регистр или IP. Специально оговаривается, когда в команде допустим как операнд сегментный регистр. Регистр IP никогда нельзя указывать как операнд.

3.1. Нотация языка ассемблера

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

Как обычно, оператор состоит из полей метки, команды, операнда и комментария (из них обязательным является только поле команды). Поле операнда может содержать источник и приемник, причем приемник указывается первым. Например, команда

передает в регистр ВХ (приемник) содержимое регистра СХ (источник).

В командах ASM286 допустимы операнды трех типов: регистр, непо­средственный операнд и память. Например, команда

осуществляет инкремент регистра DX. Непосредственный операнд - это значение, содержащееся в самой команде; например, команда

прибавляет значение 35 (непосредственный операнд) к содержимому регистра СХ (регистровый операнд) и помещает результат в СХ.

Процессор 80286 имеет два режима адресации операндов в памяти: прямой и косвенный. В прямой адресации памяти адрес операнда содер­жится в команде. При косвенной адресации памяти адрес приемника образуется суммированием двух или нескольких элементов: содержимого базового регистра (ВХ или ВР), содержимого индексного регистра (SI или DI) и значения, находящегося в команде. Вот несколько примеров адреса­ции памяти в ASM286:

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

Отличительная особенность языков ассемблера для процессоров семейства 86 заключается в том, что они являютсятипизированными. Другими словами, с каждым операндом ассоциируется тип (байт, слово и др.), который используется Ассемблером для определения кода операции генерируемой команды. В нетипизированном языке код операции пол­ностью определяется мнемоникой команды, например

В типизированном языке переменная LOC должна быть определена как байт или слово (оператором, который распределяет память для пере­менной LOC), и команда

осуществляет инкремент байта или слова в зависимости от типа перемен­ной LOC. Аналогично и каждый регистр имеет тип (например, регистр ВХ -слово, регистр CL - байт), поэтому в ассемблере ASM286 команды инкре­мента байта или слова в регистре имеют вид:

Соседние файлы в папке Лекции препода