Типы операнда команды можно определить по коду, содержащему два символа: Zz. Первый символ (большая буква) указывает метод адресации, второй символ (меленькая буква) указывает тип операнда.
А.2 Кодирование метода адресации:
A Прямая адресация: команда не имеет байта modR/M; адрес операнда содержится непосредственно в команде; регистр базы, регистр индекса, коэффициент масштабирования не используется; например, дальний JMP (EA).
C Поле reg байта modR/M указывает управляющий регистр; например, MOV (0F20,0F22).
D Поле reg байта modR/M указывает регистр отладки; например, MOV (0F21,0F23).
E За кодом операции следует байт modR/M, описывающий операнд. Операндом может быть регистр общего назначения или адрес памяти. Если это адрес памяти, он вычисляется исходя из сегментного регистра и следующих величин: регистр базы, индексный регистр, коэффициент масштабирования, смещение.
F Регистр флагов.
G Поле reg байта modR/M указывает регистр общего назначения; например, ADD (00).
I Непосредственные данные (константа). Значение операнда кодируется последовательностью байтов непосредственно в команде.
J Команда содержит относительное смещение, прибавляемое к регистру счетчика команд (EIP); например, короткий JMP, LOOP.
M Байт modR/M может ссылаться только на память; например, BOUND, LES, LDS, LSS, LFS, LGS.
O Команда не содержит байта modR/M; относительный адрес операнда кодируется как слово или двойное слово (в зависимости от атрибута размера адреса) непосредственно в команде. Регистр базы, регистр индекса, коэффициент масштабирования не используется; например, MOV (A0-A3).
R Поле mod байта modR/M может указывать только на регистр общего назначения; например, MOV (0F20,0F26).
S Поле reg байта modR/M указывает сегментный регистр; например, MOV (8C,8E).
T Поле reg байта modR/M указывает регистр; например, MOV (0F24, 0F26).
X Адресация памяти при помощи пары регистров DS:SI; например, MOVS, COMPS, OUTS, LOADS, SCAS.
Y Адресация памяти при помощи пары регистров DS:DI; например, MOVS, COMPS, INS, STOS.