В кодах некоторых команд мы будем встречать специальные биты и группы бит, которые обозначим w, s, d, reg, sreg и cond:
w = 0, если команда работает с байтами;
w = 1, если команда работает со словами или двойными словами;
s = 0, если непосредственный операнд указан полностью;
s = 1, если непосредственный операнд — младший байт большего операнда и должен рассматриваться как число со знаком;
d = 0, если код источника находится в поле R/O, а приемника — в R/M;
d = 1, если код источника находится в поле R/M, а приемника — в R/O.
Запись 10dw будет означать, что код команды — 000100dw.
Поле reg определяет используемый регистр и имеет длину 3 бита:
000 — AL/AX/EAX/ST(0)/MM0
001 — CL/CX/ECX/ST(1)/MM1
010 — DL/DX/EDX/ST(2)/MM2
011 — BL/BX/EBX/ST(3)/MM3
100 — AH/SP/ESP/ST(4)/MM4
101 — CH/BP/EBP/ST(5)/MM5
110 — DH/SI/ESI/ST(6)/MM6
111 — BH/DI/EDI/ST(7)/MM7
Запись C8r будет означать 11001reg.
Поле sreg определяет используемый сегментный регистр:
000 — ES
001 — CS
010 — SS
011 — DS
100 — FS
110 — GS
Поле cond определяет условие для команд Jcc, CMOVcc, SETcc, FCMOVcc.
Его значения для разных команд:
0000 — О
0001 — NO
0010 — C/B/NAE
0011 — NC/NB/AE
0100 — E/Z
0101 — NE/NZ
0110 — BE/NA
0111 — NBE/A
1000 — S
1001 — NS
1010 — Р/РЕ
1011 — NP/PO
1100 — L/NGE
1101 — NL/GE
1110 — LE/NG
1111 — LNE/G
Запись типа 4сс будет означать 0100cond.