Перейти к содержанию

Флаги и условия

Регистр флагов (FL)

Регистр FL (адрес 17h) содержит 8 бит состояния:

Бит ID Имя Описание
0 00h C Перенос (Carry)
1 01h B Заимствование (Borrow)
2 02h S Знак (Sign)
3 03h O Переполнение (Overflow)
4 04h Z Ноль (Zero)
5 05h G Больше (Greater)
6 06h E Равно (Equal)
7 07h L Меньше (Less)

Условия переходов

Инструкции JMP, JMA (формат J0) и JMPR (формат J1) используют поле <COND>:

ID Код Логика Имя Описание
00h UNC ALW 1 Unconditional Безусловный переход
01h CF C_OUT Carry flag Переход по переносу
02h BF B_OUT Borrow flag Переход по заимствованию
03h SF SIGN Sign flag Переход по знаку
04h OF OVERFL Overflow flag Переход по переполнению
05h ZF =0 Equals zero Переход если ноль
06h NZ !=0 Not equals zero Переход если не ноль
07h GR > Greater than Переход если больше
08h GE > || = Greater or equals Переход если больше или равно
09h LS < Less than Переход если меньше
0Ah LE < || = Less or equals Переход если меньше или равно
0Bh EQ = Equals Переход если равно
0Ch NE != Not equals Переход если не равно

Маска флагов (FlMask)

В таблице инструкций используется 8-символьная маска. Порядок символов в ней - от старшего бита к младшему:

Позиция Флаг
0 L
1 E
2 G
3 Z
4 O
5 S
6 B
7 C
  • - - флаг не изменяется.
  • Буква - флаг изменяется.

Примеры:

  • ---ZOS-C - изменяются флаги C, S, O, Z.
  • ---ZOSB- - изменяются B, S, O, Z.
  • LEGZOSB- - изменяются все флаги, кроме C.
  • -------- - флаги не изменяются.

Сравнение с микрокодом

В MICROCODE_PLA та же маска задана в шестнадцатеричном виде. Например, для ADD:

ADD      - 03h 00h - 07h 1Dh 04h

Здесь FM = 1Dh = 0001 1101b. Если сопоставить биты в порядке L E G Z O S B C, получим:

L E G Z O S B C
0 0 0 1 1 1 0 1