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

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

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

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

      1. And– логическое и

20 /r

AND r/m8, r8

r/m8:= r/m8 AND r8

21 /r

AND r/m16, r16

r/m16:= r/m16 AND r16

22 /r

AND r8, r/m8

r8:= r8 AND r/m8

23 /r

AND r16, r/m16

r16:= r16 AND r/m16

24 ib

AND AL, imm8

AL:= AL AND imm8

25 iw

AND AX, imm16

AX:= AX AND imm16

80 /4 ib

AND r/m8, imm8

r/m8:= r/m8 AND imm8

81 /4 iw

AND r/m16, imm16

r/m16:= r/m16 AND imm16

Описание.Выполняется операция “логическое И” между операндами инструкции, результат заносится на место первого операнда.

ФлажкиOFиCFочищаются.

Флажки SF,ZFиPFустанавливаются в соответствии с результатом.

Состояние флажка AFне определено.

      1. Call– вызов процедуры

9A cd

CALL ptr16:16

дальний переход к подпрограмме

E8 cw

CALL rel16

ближний переход к подпрограмме

FF /2

CALL r/m16

ближний косвенный переход к подпрограмме

FF /3

CALL m16:16

дальний косвенный переход к подпрограмме

Описание.Адрес команды, следующей за инструкциейCALL, сохраняется в стеке. После этого происходит переход на первую команду вызываемой процедуры, адрес которой задан операндом инструкцииCALL.

Команда CALLиспользуется для выполнения как ближних (внутрисегментных), так и дальних (межсегментных) переходов. При ближнем переходе в стеке сохраняется только смещение следующей инструкции (содержимое регистраIP), при дальнем переходе сохраняется полный адрес – сначала содержимое регистраCS, а затем регистраIP.

Ближние переходы осуществляются с применением относительной (с 16-разрядным отклонением) и косвенной адресации, дальние – с применением прямой и косвенной адресации.

Флажкине изменяются.

      1. Cbw– преобразование байта в слово

98

CBW

расширение знака AL на AH

Описание.Содержимое регистраAL, рассматриваемое как число со знаком, расширяется на регистрAH.

Если в ALсодержалось отрицательное число (т.е. если старший разряд регистраALравен 1), все разряды регистраAHустанавливаются в единицу. Если же вALсодержался нуль или положительное число (старший разряд регистраALравен 0), регистрAHобнуляется.

Флажкине изменяются.

      1. CLC – сброс флага переноса

F8

CLC

CF:= 0

Описание.ФлажокCFрегистраFLAGSобнуляется.

Флажкине изменяются, за исключением флажкаCF.

      1. CLD – сброс флага направления

FC

CLD

DF:= 0

Описание.ФлажокDFрегистраFLAGSобнуляется.

Когда флажок DFсброшен, строковые инструкции выполняются в направлении увеличения адресов памяти (производится автоинкремент регистровSIиDI).

Флажкине изменяются, за исключением флажкаDF.

      1. CLI – сброс флага разрешения прерывания

FA

CLI

IF:= 0

Описание.ФлажокIFрегистраFLAGSобнуляется.

Когда флажок IFсброшен, маскируемые внешние прерывания запрещаются.

Флажкине изменяются, за исключением флажкаIF.

      1. CMC – инверсия флага переноса

F5

CMC

CF:= NOT CF

Описание.ФлажокCFрегистраFLAGSменяет своё значение на противоположное.

Флажкине изменяются, за исключением флажкаCF.

      1. CMP– сравнение

38 /r

CMP r/m8, r8

сравнение r/m8 и r8

39 /r

CMP r/m16, r16

сравнение r/m16 и r16

3A /r

CMP r8, r/m8

сравнение r8 и r/m8

3B /r

CMP r16, r/m16

сравнение r16 и r/m8

3C ib

CMP AL, imm8

сравнение AL и imm8

3D iw

CMP AX, imm16

сравнение AX и imm16

80 /7 ib

CMP r/m8, imm8

сравнение r/m8 и imm8

81 /7 iw

CMP r/m16, imm16

сравнение r/m16 и imm16

83 /7 ib

CMP r/m16, imm8

сравнение r/m16 и imm8

Описание.Выполняется сравнение двух операндов.

Сравнение выполняется путём вычитания значения второго операнда из значения первого операнда. Результат вычитания теряется, однако на его основании устанавливаются те или иные флажки.

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

Флажкиустанавливаются или сбрасываются в соответствии с результатом операции вычитания.