logo
КС-ZAO / Лекции ЦЭВМруский вариант11

Расширенные версии инструкций процессора 8086

В наборе инструкций процессора 80186 имеются следующие расширенные версии инструкций процессора 8086:

IMUL ROL SAR

PUSH ROR SHL

RCL SAL SHR

RCR

Занесение в стек промежуточных значений

В то время как процессор 8086 может заносить в стек только регистровые операнды или операнды в памяти, процессор 80186 может заносить в него также и промежуточные значения: push 19

Сдвиги и циклические сдвиги c непосредственными значениями

В то время как процессор 8086 может может только выполнять сдвиг или циклический сдвиг на 1 бит или на число битов, заданное в CL, процессор 80186 может выполнять сдвиг или циклический сдвиг на значение-константу:

ror ax,3

shl dl,7

Умножение на непосредственное значение

Процессор 8086 может умножать только 8- или 16-разрядный регистр или операнд в памяти на AL или AX, размещая результат в AX или DX:AX. В процессоре 80186 предусмотрены две новые формы умножения, которые используются, когда 16-разрядное умножение будет размещаться в 16 битах.

Одна из новых форм умножения перемножает 16-разрядный регистр и 16-разрядное непосредственное значение, а результат сохраняет обратно в 16-разрядном регистре. Например, следующая инструкция умножает DX на 4, а произведение записывает в DX:

imul dx,4

Первый операнд, который может представлять собой любой 16-разрядный регистр общего назначения, является одновременно источником для одного из сомножителей и приемником для произведения. Второй операнд, который должен представлять собой непосредственное 16-битовое значение, - это другой сомножитель.

Еще одна новая форма умножения перемножает 16-разрядный регистр или операнд в памяти на 16-битовое непосредственное значение, и сохраняет результат в заданном 16-битовом регистре. Например, следующая инструкция умножает DX на 600h и помещает произведение в CX:

imul cx,dx,600h

Аналогично, следующая инструкция умножает 16-разрядное значение в [BX+SI+1] на 3 и помещает произведение в AX.

imul ax,[bx+si+1],3

В данной форме инструкции IMUL первый операнд представляет собой приемник. Этот операнд может быть любым 16-разрядным общим регистром. Второй операнд, который может задаваться любым 16-разрядным общим регистром или ячейкой памяти, является источником одного из сомножителей. Третий операнд, который должен задаваться 16-битовым непосредственным значением, - это другой сомножитель.

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