Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPS.doc
Скачиваний:
27
Добавлен:
17.04.2019
Размер:
1.08 Mб
Скачать

3.8.2 Команды преобразование данных

Приведем следующие основные команды преобразования данных:

1. Арифметическое сложение без учета переноса -

ADD r1, r2/m ; r1+r2 r1 или r1 + m r1

ADD r/m, data ; r + data r или m + datam,

где r1, r2 - любые два регистра, mячейка памяти с прямой или косвенной адресацией, data - константа форматом в один или два байта;

2. Арифметическое сложение с учетом переноса CF-

ADС r1, r2/m ; r1+r2 +CF r1 или r1 + m +CF r1

ADС r/m, data ; r+data +CF r или m +data+CF m

3. Вычитание без учета заема CF -

SUB r1, r2/m ; r2 – r1 r1 или r2 – m r1

SUB r/m, data ; data - r r или data - m m;

4. Вычитание c учетом заема CF -

SBB r1, r2/m ; r2r1 -CF r1 или r2m - CF r1

SBB r/m, data ; data - r-CF r или data - m-CF m;

5. Инкремент–декремент -

INC r/m , DEC r/m

6. Умножение - MUL – без учета знака, IMUL – с учетом знака -

MUL r8 ; 8-разрядное умножение - AL * r8AX,

MUL r16 ; 16-разрядное умножение - AX * r16 DX, AX

7. Деление - DIV – без учета знака, IDIV – с учетом знака

DIV r8 ; 8-разрядное деление - AX / r8AL, в AH –остаток,

DIV r16 ;16-разрядное деление-(DX,AX)/r16AX,в DX –остаток;

При делении на 0 выполняется аппаратное прерывание и выдается сигнал об ошибке.

8. Команды сравнения – выполняется сравнение операндов, указанных в команде, в виде вычитания, но результат не записывается, а изменяются все признаки (ZF, CF, SF, PF, OF) -

CMP r1, r2/m

CMP r1/m, r2

CMP AL(AX), data8(16);

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

AND r1, r2/m ; r1r2/mr1

AND AL(AX), data8(16 ) ; Al(AX)data8(16)AL(AX)

OR r1, r2/m ; r1r2/mr1

OR AL(AX), data8(16 ) ; Al(AX)data8(16)AL(AX)

XOR r1, r2/m ; r1r2/mr1

XOR AL(AX), data8(16 ) ; Al(AX)data8(16)AL(AX);

10. Команды сдвигов –

SHL r/m, SHR r/m ; логические сдвиги влево-вправо,

SAL r/m, SAR r/m ; арифметические сдвиги влево-вправо, когда сохраняется знак числа, то есть старший разряд,

ROL r/m, ROR r/m ; циклические сдвиги влево-вправо

RСL r/m, RСR r/m ; циклические сдвиги влево-вправо через признак CF.

3.8.3 Команды передачи управления

К командам передачи управления относятся следующие группы команд: - безусловный переход;

  • условный переход;

  • вызов подпрограммы;

  • программное прерывание;

  • циклы.

1. Безусловные переходы -

JMP <метка> ; переход в произвольную точку

JMP SHORT <метка> ; короткий переход в пределах 127 адресов

JMP [r16/m] ; переход по косвенному адресу в пределах текущего сегмента,

JMP FAR <метка> ; длинный переход в другой сегмент

JMP WORD PTR [r+disp] ; переход косвенному адресу в другой сегмент, когда по адресу, указанному в квадратных скобках определяется исполнительный адрес EA в текущем сегменте. Из памяти извлекаются 4 байта, из которых байты ЕА+2 и ЕА+3 загружаются в сегментный регистр, а байты ЕА и ЕА+1 в регистр адреса IP.

2. Условные переходы – передача управления в зависимости от результата предыдущей операции. Все команды условных переходов имеют одинаковый 2-х байтный формат, в котором во 2-м байте указывается смещение с учетом знака. То есть условные переходы выполняются в пределах текущей страницы на  127 адресов.

Мнемокоды условных переходов строятся по шаблону – J***<метка>, где (*) – обозначение условий для выполнения перехода по метке. Используются следующие признаки:

Z (zero) - нулевой результат; C (carry) – перенос; P (parity) – четность;

S (sign) – знак результата; N (not) – отрицание; E (equal) – равенство;

G (greater) – больше; L (less) – меньше; A (above)– над; B (below)– под.

JE/JZ <метка>; переход, если равно или по нулю,

JNE/JNZ <метка>; переход, если не равно или не по нулю,

JB/JNAE <метка>; переход, если меньше или не больше и не равно,

JA/JNBE <метка>; переход, если больше или не меньше и не равно,

JL/JNGE <метка>; переход, если меньше или не больше и не равно,

JG/JNLE <метка>; переход, если больше или не меньше и не равно.

3. Вызов подпрограммы – CALL. Позволяет вызывать подпрограмму как в текущем сегменте, так и в другом сегменте. Формат команд тот же, что и для безусловного перехода кроме короткого перехода.

При выполнении команды CALL в стеке запоминается адрес следующей команды – как содержимое регистра IP, так и содержимое сегментного регистра CS.

4. Возврат по адресу в стекеRET. Используется также 4 формата.

5. Команды организации циклов – LOOP. По умолчанию используется регистр CX в качестве счетчика шагов.

LOOP <метка> ; выполняется переход по метке, пока CX 0,

LOOPZ <метка> ; цикл, пока Z=1 (условие нуля) и CX0,

LOOPNE <метка> ; цикл, пока не равно и CX0, то есть проверяется два условия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]