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

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

В табл. 2. представлено пять команд сложения. Две из них, add и adc, суммируют два байта или слова. Inc (инкремент) — команда быстрого добавления 1 к регистру или значению в памяти. (Другие две команды, ааа и daa, выполняют коррекцию значений, представленных в двоично-десятичном формате, с которым мы познакомимся позже.) Для сложения 8-битового значения в ah с 8-битовым значение в bh вы можете записать:

add ah, bh ; ah<-ah+bh

Так же как и для команды mov, для add требуются операнд-источник и операнд-назначение. Команда суммиру­ет два значения и записывает результат в заданное место, заменяя первоначальное значение. В этом примере ре­зультат записывается в ah. Команда adc работает аналогично, но добавляет к результату флаг переноса cf:

adc ah, bh ; ah <-+ah+bh+cf

Умножение и деление знаковых значений

Команды знакового умножения (imul) и деления (idiv) работают аналогично и используют те же регистры, что и mill и div. (Буква i в символическом имени используется для целых чисел, показывая, что допускаются как поло­жительные, так и отрицательные значения.) Единственное отличие состоит в допустимых диапазонах значений:

• Знаковый байт изменяется от-128 до+127

• Знаковое слово изменяется от -32768 до 32767

• Помните, что отрицательный результат представляется в двоичном дополнительном коде.

Таблица 3. Логические команды 8086

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

Описание

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

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

not назначение

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

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

хоr назначение, источник

Логическое И

Логическое НЕ (отрицание)

Логическое ИЛИ

Проверка бита

Логическое исключающее ИЛИ

Команды сдвига

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

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

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

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

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

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

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

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

Циклический сдвиг влево через перенос Циклический сдвиг вправо через перенос Циклический сдвиг влево

Циклический сдвиг вправо

Арифметический сдвиг вправо

Арифметический сдвиг влево

Сдвиг влево

Сдвиг вправо

Таблица 4. Команды управления потоком 8086

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

Описание

Команды безусловного перехода

call адрес

jmp адрес

ret значение

retn значение

retf значение

Вызов процедуры

Безусловный переход

Возврат из процедуры

Возврат из близлежащей процедуры

Возврат из дальней процедуры

Команды условного перехода

ja/jnbe короткий адрес

jae/jnb короткий адрес

jb/jnae короткий адрес

jbe/jna короткий адрес

Переход, если выше/не ниже или равно Переход, если выше или равно/не ниже Переход, если ниже/не выше или равно Переход, если ниже или равно/не выше

jc короткий адрес

Переход, если был перенос

je/jz короткий адрес

Переход, если равно/нуль

jg/jnle короткий адрес

Переход, если больше/ не меньше или равно

jge/jnl короткий адрес

Переход, если больше или равно/не меньше

jl/jnge короткий адрес

Переход, если меньше/не больше или равно

jle/jng короткий адрес

Переход, если меньше или равно/не больше

jnc короткий адрес

Переход, если нет переноса

jne/jnz короткий адрес

Переход, если не равно/не нуль

jno короткий адрес

Переход, если нет переполнения

jnp/jpo короткий адрес

Переход, если нет паритета/паритет нечетный

Jns короткий адрес

Переход, если нет знака

jo короткий адрес

Переход по переполнению

jp/jpe короткий адрес

Переход, если есть паритет или паритет четный

js короткий адрес

Переход, если есть знак

Команды цикла

jcxz короткий адрес

Переход, если сх равно нулю

loop короткий адрес

Цикл пока сх <> 0

loope/loopz короткий адрес

Цикл, если равно или нуль

loopne/loopnz короткий адрес

Цикл, если не равно/не нуль

Команды прерывания

int тип прерывания

Прерывание/вызов прерывания

into

Прерывание по переполнению

iret

Возврат из обработки прерывания

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