Как использовать АЦП и установить флаг в сборке

Я понимаю, что делает АЦП, но я не уверен, как управлять флагом переноса. Если я использую обычный ADD и он переполняется, будет ли он автоматически устанавливать флаг переноса равным 1? И если я использую АЦП и CF равен 1, и он не переполняется, установит ли он значение CF равным 0? Благодарю.

2 ответа

Решение

Предполагается, что сборщик Intel x86: и ADD, и ADC установят флаг переноса при передаче или заимствовании старших битов, и он будет сброшен в противном случае.

Использование АЦП, когда CF равен 1 и переполнения нет, приведет к CF=0.

Подробнее см. Официальную ссылку на www.intel.com, стр. 498.

Описание Добавляет целевой операнд (первый операнд), исходный операнд (второй операнд) и флаг переноса (CF) и сохраняет результат в операнде назначения. Операндом-адресатом может быть регистр или ячейка памяти; исходный операнд может быть непосредственным, регистром или ячейкой памяти. (Однако два операнда памяти не могут использоваться в одной инструкции.) Состояние флага CF представляет перенос из предыдущего дополнения. Когда непосредственное значение используется в качестве операнда, оно расширяется до длины целевого формата операнда. [...]

Другие вопросы по тегам