Условные обозначения, используемые при описании системы команд.




В столбце “КОП”

 

/r - показывает, что Mod R/M байт содержит и регистровый операнд reg и операнд r/m.
/цифра - цифра (от 0 до 7 включительно) говорит о том, что Mod R/M байт команды использует только r/m (регистр или память) операнд. Поле reg содержит цифру, используемую для расширения кода операции.
cb, cw, cd, cp - однобайтная (cb), двухбайтная (cw), четырехбайтная (cd) или шестибайтная (cp) величина, следующая за кодом операции и определяющая значение смещения в кодовом сегменте или новое значение для регистра кодового сегмента.
ib, iw, id - однобайтный (ib), двухбайтный (iw) или четырехбайтный (id) непосредственный операнд, следующий за кодом операции, Mod R/M байтом или SIB байтом. Код операции определяет, является ли операнд знаковой величиной. В словах или двойных словах первым указывается младший байт.
+rb, +rw, rd - код регистра (от 0 до 7) прибавляемый к байту, приведенному слева от знака плюс, для образования однобайтного кода. В табл. П.3.1 приведены значения этих кодов

 

Таблица П3.1

rb rw rd
AL = 0 AX = 0 EAX = 0
CL = 1 CX = 1 ECX = 1
DL = 2 DX = 2 EDX = 2
BL = 3 BX = 3 EBX = 3
AH = 4 SP = 4 ESP = 4
CH = 5 BP = 5 EBP = 5
DH = 6 SI = 6 ESI = 6
BH = 7 DI = 7 EDI = 7

 

В столбце “Команда”

 

r8 - один из однобайтных регистров: AL, CL, DL, BL, AH, CH, DH или BH.
r16 - один из двухбайтных регистров: AX, CX, DX, BX, SP, BP, SI или DI.
r32 - один из четырехбайтных регистров: EAX, ECX, EDX, EBX, ESP, EBP, ESI или EDI.
r/m8 - однобайтный операнд, содержащийся в однобайтном регистре (AL, CL, DL, BL, AH, CH, DH, BH) или в байтовой запоминающей ячейке памяти.
r/m16 - операнд длиной в слово из двухбайтного регистра (AX, CX, DX, BX, SP, BP, SI, DI) или двух соседних байтовых запоминающих ячеек памяти. (Содержимое памяти берется по эффективному адресу младшего байта).
r/m32 - операнд длиной в два слова из четырехбайтовых регистров (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) или из четырех соседних ячеек памяти по адресу младшего байта.
sr - сегментный регистр.
SAL - знаковое расширение регистра.
m - 16 или 32 битный операнд в памяти.
m8 - байт памяти адресуемый DS:SI(ESI) или ES:DI(EDI) (используется только строковыми командами).
m16 - слово памяти адресуемое DS:SI(ESI) или ES:DI(EDI) (используется только строковыми командами).
m32 - двойное слово памяти адресуемое DS:SI(ESI) или ES:DI(EDI) (используется только строковыми командами).
m16:16, m16:32 - операнд в памяти, содержащий дальний указатель из двух чисел: селектора сегмента и смещения в сегменте.
moffs8, moffs16, moffs32 - простая переменная в памяти (смещение в памяти) типа BYTE, WORD или DWORD, используемая некоторыми вариантами команды MOV. Фактический адрес получается при помощи простого смещения относительно базы сегмента. Mod R/M байт в этой команде не используется. Число, указанное в moffs, определяет его размер, который устанавливается атрибутом размера адреса команды.
temp - регистр временного хранения данных, программно не доступный.
imm8 - непосредственное знаковое значение длиной в байт. В командах, где imm8 участвуют с операндом длиной в слово или двойное слово, непосредственное значение imm8 расширяется в сторону старших разрядов, повторением старшего (знакового) бита.
imm16 - непосредственное знаковое значение длиной в слово, применяемое для команд с атрибутом размера операнда, равного 16 бит.
imm32 - непосредственное знаковое значение длиной в двойное слово, применяемое для команд с атрибутом размера операнда, равного 32 битам.
simm8 - знаковое расширение байта до 16 или 32 битового операнда.
SAL (SAX) - знаковое расширение содержимого регистра AL (AX).
rel8 - относительный адрес в диапазоне от – 128 байт до + 127 байт от конца команды.
rel16 (rel32) - относительный адрес внутри того же кодового сегмента, в котором команда ассемблировалась. rel16 применима к командам с атрибутом 16 битного размера операнда; rel32 применима к команде с атрибутом 32 битного размера операнда.
m16&16, m16&32, m32&32 - операнд в памяти состоящий из пар элементов данных, размеры которых указаны слева и справа от знака амперсанда. Для команд с такими операндами разрешены все режимы адресации. (Например, в команде BOUND используются для хранения верхней и нижней границ индекса массива). m16&32 используются командами LIDT и LGDT для обеспечения загрузки значения поля предела (слово) и значения поля базы (двойное слово), а также соответствующих регистров таблицы дескрипторов прерываний и глобальной таблицы дескрипторов.
16 (32) - 16 или 32 битовый операнд. Размер операнда определяется битом D в дескрипторе кодового сегмента.
SP (ESP) - 16 или 32 разрядный адрес вершины стека. Размер адреса определяется битом В, в дескрипторе стекового сегмента.

 

В столбце “Действие команды”

[SI(ESI)], [DI(EDI)] - косвенная адресация через индексные регистры SI(ESI) и DI(EDI).
temp - регистр временного хранения данных, программно недоступный.
JCOND (Jump Condition) - команда, выполняющая передачу управления по адресу, определяемому операндом, только при выполнении условия COND. Условия переходов и их символьные представления приведены в таблице П.3.2. В данной таблице, термины “меньше” и “больше” относятся для сравнения знаковых целых чисел. Термины “выше” и “ниже”, используются при сравнении целых чисел без знака.
cond - шестнадцатеричный код условия COND.
mem N - адрес младшего байта адреса (CS:IP) в R-режиме или дескриптора прерывания в IDTR в P-режиме.
EA (Effective Address) - эффективный адрес.
MSW (Machine Status Word) - слово состояния машины (младшие два байта управляющего регистра CR0).
SMM (System Managеment Mode) - режим управления системой.
TR (Task Registers) - регистр задачи.

 

Таблица П3.2

Условия переходов в системе команд процессоров семейства iAPX86

 

Условия перехода Мнемо-код COND Переход, если: Условие Код COND
    По флагу C NC S NS E/Z NE/NZ O NO P/PE NP/PO есть перенос нет переноса отрицательный результат положительный результат операнды равны/нулевой результат операнды не равны/ненулевой результат есть переполнение нет переполнения четно нечетно CF = 1 CF = 0 SF = 1 SF = 0 ZF = 1 ZF = 0 OF = 1 OF = 0 PF = 1 PF = 0 A B
По признакам обработки чисел со знаками L/NGE NL/GE LE/NG NLE/G меньше/не больше и не равно не меньше/больше или равно меньше или равно/не больше   не меньше и не равно/больше SF ¹ OF SF = OF (ZF=1)Ú (SF¹OF) (ZF=0)& (SF=OF) C D   E   F
По признакам обработки чисел без знака. B/NAE NB/AE BE/NA NBE/A ниже/не выше и не равно не ниже/выше или равно ниже или равно/не выше не ниже и не равно/выше CF = 1 CF = 0 CFÚZF=1CFÚZF=0  

 

 

Таблица П.3.3

Установка флагов при выполнении команд арифметических,

логических и сдвиговых операций

Мнемокоды команд ФЛАГИ
OF CF AF SF ZF PF
ADD,ADC,XADD,SUB,SBB,CMP,CMPXCHG,NEG + + + + + +
INC, DEC + - + + + +
MUL, IMUL + + н н н н
DIV, IDIV н н н н н н
DAA, AAS н + + + + +
AAA, AAS н + + н н н
AAM,AAD н н н + + +
AND, OR, XOR,TEST     н + + +
SHL, SHR (на один разряд) + + н + + +
SHL,SHLD,SHR,SHRD (переменная разрядность) н + н + + +
SAR   + н + + +
ROL, ROR, RCL, RCR (на один разряд) + + - - - -
ROL, ROR, RCL, RCR (переменная разрядность) н + - - - -
+ установка флага по результату операции − сохранение ранее установленного флага н - неопределенное значение флага 0 - установка нулевого значения флага


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: