Прапор переносу
У комп'ютерних процесорах, прапор переносу (біт переносу у регістрі стану процесора), який зазвичай позначається як CF (англ. Carry flag) — спеціальний прапор, який вказує на випадок арифметичного перенесення або запозичення під час зсуву старшого біта арифметико-логічним пристроєм (АЛП). Це дозволяє виконувати дії з довшими числами, ніж ті, що використовуються в АЛП.
Прапор переносу встановлюється в «1» у двох випадках:
- коли виконується перенесення одиниці до знакового розряду (7, 15, 31-го) і перенесення за межі розрядної сітки (з 7, 15, 31-го розряду до 8, 16, 32-го, які не існують за даної розрядності)
- коли виконується ЛИШЕ перенесення одиниці за межі розрядної сітки
Використання
Застосовується для виконання операцій над числами більшої розрядності.
Приклад використання для 8-бітової архітектури
- (прапор не встановлений)
- (прапор встановлений)
Таким чином, під час операції арифметичного додавання прапор можна розглядати як дев'ятий біт результату.
У процесорах Intel 8086 прапор «CF» також використовується для відображення операції порівняння та індикації результату множення (спільно з прапором переповнення «OF»).
Приклад для 16-бітової архітектури
Зазвичай під час виконання арифметичних операцій на зразок додавання або віднімання процесор Intel 8088 може працювати з не більш ніж 16-бітовими числами. Проте в деяких випадках доводиться маніпулювати з числами які перевищують 216. Наприклад, для додавання двох 32-бітових чисел програмі доведеться додати спочатку молодші частини чисел, а потім — старші. Розглянемо додавання 32-бітових чисел 22224444H і 3333EEEEH:
друге додавання перше додавання --------------------------------------- 2222 4444 3333 EEEE 1 (перенос від першого) ---- ---- 5556 13332 --------------------------------------- 32-бітове додавання з перенесенням
Перше 16-бітове додавання 4444H і EEEEH дає результат 13332H. Оскільки результат має довжину 17 біт, він не поміститься в 16-бітовий регістр. Прапор перенесення регістра станів отримає цей додатковий біт арифметичної інформації. Під час другого 16-бітового додавання додаються не тільки числа 2222H і 3333H, але й значення прапора переносу. Існує дві форми команди додавання: команда ADD додає два 16-бітових числа, даючи 17-бітовий результат, а команда додавання з перенесенням ADC додає два 16-бітових числа і значення прапора переносу, даючи також 17-бітовий результат.
Команди керування прапором переносу CF
- CLC скидає прапор CF
- STC встановлює прапор CF в одиницю
- CMC інвертує значення прапора CF
Ці команди не мають операндів і результатом є тільки зміна значення відповідного прапора.
Література
- Л. Скэнлон. Флаги // Персональные ЭВМ IBM PC и XT: Программирование на языке ассемблера = IBM PC & XT Assembly Language: A guide for Programmers. Enchanced and Enlarged / пер. с англ. И. В. Емелин. — 2-е изд., стереотипное. — М. : Радио и связь, 1991. — С. 24—26. — 50 000 екз. — ISBN 5-256-00956-7.
- П. Абель. Язык Ассемблера для IBM PC и программирования = IBM PC Assembler Language and programming / пер. с англ. Ю. В. Сальникова. — М. : Высшая школа, 1992. — С. 24—26.