Какие ценности флаг переноса может держать, и как проверить его статус в x86 собрание?

1. What values can the carry flag hold? Is it just 0x00 and 0x01 (boolean) or is it 16 (or 32/64) bits like the rest of the CPU registers?
2. How do I check its status? Do I just use it like a normal CPU register like `cmp cf, 0x00` then `jg` ?
3. I am writing a mini-OS. Is it good practice to use it for my own purposes, or should it be reserved for exclusive write-permissions for the CPU, and all I do is read from it?

Это - флаг, это может только сохраняться или ложный (технически 1 или 0, но  *эффективно*  значения истинности как показано).

С точки зрения использования его, нет, вы не сравниваете его с чем-то и затем используете  `jg` . Это - в  *то же самое*  уровень абстракции как другие флаги, таким образом, можно просто использовать:

```
jc somewhere         ; jump if carry flag is set
jnc somewhere_else   ; jump if carry flag is not set

```

Это собирается автоматически определенными инструкциями так, например, добавить, что две ценности и обнаружить несут, можно использовать что-то как:

```
add ax,bx
jc  too_big

```

И, в то время как это главным образом установлено теми инструкциями, можно также сделать это вручную с  `stc`  (набор),  `clc`  (ясный) и  `cmc`  (дополнение). Например, часто полезно очистить его заранее, если вы входите в петлю, где стоимость продвинута к следующему повторению.



Это - флаг, это может только сохраняться или ложный (технически 1 или 0, но  *эффективно*  значения истинности как показано).

С точки зрения использования его, нет, вы не сравниваете его с чем-то и затем используете  `jg` . Это - в  *то же самое*  уровень абстракции как другие флаги, таким образом, можно просто использовать:

```
jc somewhere         ; jump if carry flag is set
jnc somewhere_else   ; jump if carry flag is not set

```

Это собирается автоматически определенными инструкциями так, например, добавить, что две ценности и обнаружить несут, можно использовать что-то как:

```
add ax,bx
jc  too_big

```

И, в то время как это главным образом установлено теми инструкциями, можно также сделать это вручную с  `stc`  (набор),  `clc`  (ясный) и  `cmc`  (дополнение). Например, часто полезно очистить его заранее, если вы входите в петлю, где стоимость продвинута к следующему повторению.



была эта небольшая книга, которая однажды шла с турбо ассемблером borland, который перечислил все x86 инструкции, вместе с их количеством циклов CPU и флагов, затронутых для каждой модели процессора индивидуально..., я предлагаю, чтобы вы пошли, находят одну из тех книг и читают его...
2: нет, вы не можете использовать cmp и т.д. непосредственно в РЕГИСТРЕ флагов, поскольку это не память, но регистр в CPU, можно, однако, использовать несколько обозначенных результатов или переместить все это сначала на стек и затем в поршень или наоборот с инструкциями ниже

CLC (ясный (0) несут бит),
STC (флаг переноса набора к 1)
JC (ветвятся, если несут набор),
JNC (ветвятся, если несут не набор),
PUSHF (суют флаги на стек),
POPF (перемещают последний вход в стек в регистр флагов),

если я вспоминаю правильно... там, вероятно, еще некоторые способы сделать вещи.



была эта небольшая книга, которая однажды шла с турбо ассемблером borland, который перечислил все x86 инструкции, вместе с их количеством циклов CPU и флагов, затронутых для каждой модели процессора индивидуально..., я предлагаю, чтобы вы пошли, находят одну из тех книг и читают его...
2: нет, вы не можете использовать cmp и т.д. непосредственно в РЕГИСТРЕ флагов, поскольку это не память, но регистр в CPU, можно, однако, использовать несколько обозначенных результатов или переместить все это сначала на стек и затем в поршень или наоборот с инструкциями ниже

CLC (ясный (0) несут бит),
STC (флаг переноса набора к 1)
JC (ветвятся, если несут набор),
JNC (ветвятся, если несут не набор),
PUSHF (суют флаги на стек),
POPF (перемещают последний вход в стек в регистр флагов),

если я вспоминаю правильно... там, вероятно, еще некоторые способы сделать вещи.