0Pricing
Assembly Language & x86 Low-Level Systems Programming · Урок

Регистр FLAGS и биты состояния

Изучите регистр EFLAGS/RFLAGS: узнайте, как инструкции арифметики и сравнения устанавливают флаги состояния, такие как ZF, CF, SF и OF, определяющие каждое условное решение.

«Регистр FLAGS и биты состояния» — бесплатный урок Assembly Language & x86 Low-Level Systems Programming на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Assembly Language & x86 Low-Level Systems Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Assembly Language & x86 Low-Level Systems Programming содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

What is the FLAGS Register?

The FLAGS register (EFLAGS in 32-bit, RFLAGS in 64-bit) is a special register where individual bits record the result of the most recent operation.

Why Flags Matter

The CPU has no boolean type. Instead, instructions set flag bits, and conditional jumps read them. Flags are the glue between arithmetic and control flow.

The Zero Flag (ZF)

ZF is set to 1 when the result of an operation is zero. It is the basis of equality tests.

cmp eax, ebx   ; sets ZF if eax == ebx

The Carry Flag (CF)

CF is set when an unsigned operation overflows out of the most significant bit, e.g. an addition that exceeds the register width.

add al, 1      ; CF set if al was 0xFF

The Sign Flag (SF)

SF copies the most significant bit of the result, indicating a negative value in signed interpretation.

The Overflow Flag (OF)

OF is set when a signed operation produces a result too large or small for the destination, i.e. signed overflow.

How CMP Works

CMP a, b performs a - b but discards the result, keeping only the flags. This lets you test relationships without changing operands.

cmp eax, 10

TEST for Bit Checks

TEST a, b computes a bitwise AND, discards the result, and sets flags, commonly used to check if a value is zero or test specific bits.

test eax, eax  ; ZF set if eax == 0

Flags Drive Conditional Jumps

Conditional jumps read flags:

  • JE/JZ: jump if ZF=1
  • JNE/JNZ: jump if ZF=0
  • JC: jump if CF=1
  • JG: signed greater (uses ZF, SF, OF)

Signed vs Unsigned Conditions

Signed comparisons use SF and OF; unsigned comparisons use CF. Choosing the wrong jump (JA vs JG) is a classic bug.

Directly Affecting Flags

Some instructions set or clear flags explicitly, like STC (set carry) and CLC (clear carry), useful before multi-precision arithmetic.

clc            ; clear carry before add chain

Quick Check

Test your understanding of CPU flags.

Recap

You learned the FLAGS register:

  • ZF zero, CF unsigned overflow, SF sign, OF signed overflow
  • CMP and TEST set flags without storing results
  • Conditional jumps branch on flag state
  • Match signed/unsigned jumps to the comparison

Часто задаваемые вопросы

Урок «Регистр FLAGS и биты состояния» бесплатный?

Да — полный текст урока «Регистр FLAGS и биты состояния» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Assembly Language & x86 Low-Level Systems Programming, подпишись на CoddyKit PRO. Курс Assembly Language & x86 Low-Level Systems Programming содержит 4 уроков всего.

Чему я научусь в уроке «Регистр FLAGS и биты состояния»?

Изучите регистр EFLAGS/RFLAGS: узнайте, как инструкции арифметики и сравнения устанавливают флаги состояния, такие как ZF, CF, SF и OF, определяющие каждое условное решение. Ты практикуешь Assembly Language & x86 Low-Level Systems Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Assembly Language & x86 Low-Level Systems Programming?

Предыдущий опыт не требуется. Assembly Language & x86 Low-Level Systems Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Регистр FLAGS и биты состояния»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Assembly Language & x86 Low-Level Systems Programming?

Да. Каждый урок Assembly Language & x86 Low-Level Systems Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Регистры x86 без тайн
  2. Режимы адресации памяти
  3. Представление и типы данных
  4. Регистр FLAGS и биты состояния
← Назад к Assembly Language & x86 Low-Level Systems Programming