Описание процессора i8086 для программиста

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


2F

DAS

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

Описание.

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

Если при выполнении предшествовавшей операции вычитания в младшем полубайте регистра AL получено значение, превышающее 9, или произошёл заём в 3-ий разряд (был установлен флажок AF), то значение младшего полубайта регистра AL уменьшается на 6, флажок AF остаётся равным 1, а флажок CF устанавливается, если при вычитании 6 возник заём в 3-ий разряд (если заёма не было, значение флажка CF не изменяется, т.е. остаётся таким же, каким оно было до выполнения инструкции DAA). Если же содержимое младшего полубайта регистра AL не превышает 9, а флажок AF сброшен, никаких действий с младшим полубайтом не выполняется.

Затем проверяется содержимое старшего полубайта регистра AL. Если его значение больше 9 либо если установлен флажок CF (независимо от того, был ли он установлен при выполнении команды сложения или при уменьшении младшего полубайта на 6 в процессе выполнения инструкции DAS), то это значение уменьшается на 6 и устанавливается флажок CF. Если же значение старшего полубайта не превышает 9, а флажок CF сброшен, никаких действий со старшим полубайтом не выполняется.

Флажки AF и CF устанавливаются в соответствии с результатом операции (см. выше).

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

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



Содержание раздела