Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать
      1. Aam– коррекция умножения двоично-десятичных распакованных чисел

D4 0A

AAM

десятичная коррекция умножения AX

Описание.Эта инструкция обеспечивает коррекцию результата умножения двух распакованных двоично-десятичных одноразрядных чисел командойMUL.

Коррекция заключается в том, что в регистр AHзаносится целая часть от деления содержимого регистраALна 10, а в регистрAL– остаток от этого деления.

ФлажкиSF,ZFиPFустанавливаются по обычным правилам.

Значение флажков OF,AFиCFне определено.

Замечания по программированию

Инструкция AAMможет использоваться для преобразования двоичного числа без знака в двухразрядное десятичное.

      1. Aas– коррекция вычитания двоично-десятичных распакованных чисел

3F

AAS

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

Описание.Эта команда обеспечивает коррекцию результата вычитания двоично-десятичных распакованных одноразрядных чисел.

Если установлен флажок AFили содержимое младшего полубайта регистраALпревышает значение 9, из этого значения вычитается 6, содержимое регистраAHуменьшается на единицу и устанавливаются флажкиAFиCF; в противном случае флажкиAFиCFсбрасываются. В любом случае старший полубайт регистраALобнуляется.

ФлажкиAFиCFустанавливаются, как описано выше.

Значение флажков OF,SF,ZFиPFне определено.

      1. Add– двоичное сложение без переноса

00 /r

ADD r/m8, r8

r/m8:= r/m8 + r8

01 /r

ADD r/m16, r16

r/m16:= r/m16 + r16

02 /r

ADD r8, r/m8

r8:= r8 + r/m8

03 /r

ADD r16, r/m16

r16:= r16 + r/m16

04 ib

ADD AL, imm8

AL:= AL + imm8

05 iw

ADD AX, imm16

AX:= AX + imm16

80 /0 ib

ADD r/m8, imm8

r/m8:= r/m8 + imm8

81 /0 iw

ADD r/m16, imm16

r/m16:= r/m16 + imm16

83 /0 ib

ADD r/m16, imm8

r/m16:= r/m16 + imm8

Описание.Эта инструкция обеспечивает сложение двух 8- или 16-разрядных двоичных чисел. Результат помещается на место первого операнда.

При сложении 16-разрядного первого операнда с 8-разрядным вторым (код операции 83) перед выполнением сложения производится расширение знака второго операнда.

ФлажкиOF,SF,ZF,AF,CFиPFустанавливаются по обычным правилам. ФлажокCFсвидетельствует о наличии переноса из старшего разряда результата.

Замечания по программированию

Совместно с командами десятичной коррекции сложения AAAиDAAинструкцияADDобеспечивает сложение двоично-десятичных распакованных и упакованных чисел.

Если необходимо складывать числа с разрядностью, превышающей 16, младшие 16 бит складываются инструкцией ADD, а все последующие – инструкциейADC.

      1. Adc– двоичное сложение с переносом

10 /r

ADC r/m8, r8

r/m8:= r/m8 + r8 + CF

11 /r

ADC r/m16, r16

r/m16:= r/m16 + r16 + CF

12 /r

ADC r8, r/m8

r8:= r8 + r/m8 + CF

13 /r

ADC r16, r/m16

r16:= r16 + r/m16 + CF

14 ib

ADC AL, imm8

AL:= AL + imm8 + CF

15 iw

ADC AX, imm16

AX:= AX + imm16 + CF

80 /2 ib

ADC r/m8, imm8

r/m8:= r/m8 + imm8 + CF

81 /2 iw

ADC r/m16, imm16

r/m16:= r/m16 + imm16 + CF

83 /2 ib

ADC r/m16, imm8

r/m16:= r/m16 + imm8 + CF

Описание.Эта инструкция обеспечивает сложение двух 8- или 16-разрядных двоичных чисел с учётом значения входного переноса, определяемого флажкомCF.

При сложении 16-разрядного первого операнда с 8-разрядным вторым (код операции 83) перед выполнением сложения производится расширение знака второго операнда.

ФлажкиOF,SF,ZF,AF,CFиPFустанавливаются по обычным правилам. ФлажокCFсвидетельствует о наличии переноса из старшего разряда результата.