Флаг переноса CF
используется, когда ЦП работает с целым числом без знака числами (в 8-битных регистрах они могут иметь значение от 00h до FFh).
Когда выполняется сложение и результат превышает максимальное значение FFh, CF
сигнализирует, что это произошло, и это число 1 должно быть добавлено в регистр с более высоким порядком (ah
).
Когда выполняется вычитание и результат ниже минимального значения 00h, CF
сигнализирует, что это произошло, и что число 1 должно быть заимствовано (вычтено) из ah
.
В вашем пример кода результат вычитания 1h из 0h в al
ниже допустимого минимального значения, поэтому установлен CF. вы смотрите на эти числа как целые числа со знаком , их допустимый диапазон составляет от -128 до +127 (от 80h до 7F), а переполнение или недостаточное заполнение сигнализируется другим флагом of
. В вашем коде результат (рассматриваемый как число со знаком) равен -1 (FFh), и это находится в допустимом диапазоне (без переполнения), поэтому вы должны увидеть в эмуляторе, что of=0
.