Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
арх_лекция_05.doc
Скачиваний:
4
Добавлен:
17.04.2019
Размер:
175.62 Кб
Скачать

Основные группы команд процессора

По своим функциям все команды процессора 8086 делятся на шесть категорий. Эти шесть групп имеют следующий вид:

• Команды передачи данных

• Арифметические команды

• Логические команды

• Команды управления потоком

• Команды управления процессором

• Команды для работы со строками

Команды передачи данных

Команды передачи данных процессора 8086 представлены в табл. 1. Эта группа делится на четыре части: об­щие, ввода-вывода, адресные и флагов. Операнды справа от каждого символического имени команды определяют необходимые ей элементы данных. Для большей части команд определены операнды назначения и источника. Дру­гие команды требуют один операнд или не требуют их вообще.

Рассмотрим первую из команд передачи данных — mov. Вероятно, mov чаще других команд встречается в про­граммах на языке ассемблера. Из табл. 1 видно, что для mov необходимы два операнда: операнд-источник и операнд-назначение. Отметим, что источник записывается после назначения, при предположении, что mov работает следующим образом:

mov назначение <-- источник

Таблица 1. Команды передачи данных

Мнемокод / Операнды

Описание

Основные команды

mov назначение, источник

pop назначение

push источник

xchg назначение, источник xlat/xiatb таблица

Переслать (скопировать) байт или слово

Извлечение слова из стека

Занесение слова в стек

Перестановка байтов и слов

Перекодировка таблицы

Команды ввода-вывода

in сумматор, порт

out порт, сумматор

Ввод (выборка) байта или слова из порта

Вывод (размещение) байта или слова в порт

Адресные команды

lds назначение, источник

lea назначение, источник

les назначение, источник

Загрузка регистра сегмента данных (используется ds) Загрузка эффективного адреса

Загрузка регистра дополнительного сегмента (используется es)

Команды флагов

lahf

popf

pushf

sahf

Загрузка флагов в регистр АН

Извлечение регистра флагов из стека

Занесение регистра флагов в стек

Установка флагов из регистра АН

Данные из источника передаются в направлении стрелки, справа налево. Будьте внимательны, чтобы не пере­путать местами операнды, что является типичной и опасной ошибкой. Следующая команда в языке ассемблера пересылает значение регистра Ьх в регистр ах:

mov ах, bх ; ах <-- Ьх

Если значение ах равно 0000, а bх — 0123h, то после выполнения этой команды значение ах станет равным 0123h. Величина bх при этом не изменится.

Арифметические команды

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

Существует два способа увеличения вычислительных возможностей языка ассемблера. Во-первых, вы можете приобрести (или написать) необходимые вам пакеты подпрограмм, которые реализуют функции высокого уровня. Другое решение связано с покупкой для вашего персонального компьютера математического сопроцессора, хотя это и требует определенных затрат для процессоров 80286 и 80386, которым необходимы соответствующие 80287 и 80387 математические сопроцессоры. Процессор 80486 содержит в себе встроенный 80387 сопроцессор. Третий, и возможно лучший способ, состоит в использовании для вычисления выражений с плавающей запятой языков вы­сокого уровня типа Turbo Pascal или Turbo С. Эти языки автоматически определяют наличие математического со­процессора и могут переключаться на программный эмулятор для систем, в которых он отсутствует.

Таблица 2. Арифметические команды

Мнемокод / Операнды

Описание

Команды сложения

ааа

adc назначение, источник

add назначение, источник

daa

inc назначение

Коррекция ASCII-формата для сложения

Сложение с переносом

Сложение байт или слов

Десятичная коррекция для сложения

Инкремент

Команды вычитания

aas

cmp назначение, источник

das

dec назначение

neg назначение

sbb назначение, источник

sub назначение, источник

Коррекция ASCII-формата для вычитания

Сравнение

Десятичная коррекция для вычитания

Декремент

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

Вычитание с заемом

Вычитание

Команды умножения

aam

imul источник

mul источник

Коррекция ASCII-формата для умножения

Умножение величин со знаком

Беззнаковое умножение

Команды деления

aad

cbw

cwd

div источник

idiv источник.

Коррекция ASCII-формата для деления

Преобразование байта в слово

Преобразование слова в двойное слово

Беззнаковое деление

Деление величин со знаком