Процессор Intel
8086. Учебный курс.
 |
Часть 2. Система команд микропроцессора. 2.1
Режимы адресации.
2.2 Форматы команд.
2.3 Команды микропроцессора. |
Режимы адресации.
Прямая адресация |
 |
16-битный эффективный адрес данного является
частью команды. |
Регистровая адресация |
 |
Данное содержится в определяемом командой
регистре. 16-битный операнд может находиться в
регистрах AX, BX, CX, DX, SI, DI, SP или BP, а 8-битный - в
регистрах AH, AL, BH, BL, CH, CL, DH, DL. |
Регистровая косвенная |
 |
Эффективный адрес данного находится в базовом
регистре BX или индексном регистре (SI или DI). |
Непосредственная |
 |
Данное является частью команды. |
Стековая адресация |
 |
Стековая адресация в i8086 применяется в
командах работы со стеком PUSH и POP. Для этих команд
адрес операнда находится в указателе стека SP и
автоматически уменьшается или увеличивается на
два при записи в стек или при чтении из стека.
Заполнение стека происходит в направлении
уменьшения адресов ячеек памяти. Стек может
обмениваться данными с регистрами общего
назначения и сегментными регистрами. |
|
 |
Команды обмена данными между стеком и памятью
содержат байт адресации, в котором 3-разрядное
поле reg совместно с полем COP идентифицирует
команду. |
Базовая адресация |
 |
При базовом способе адресации исполнительный
(эффективный) адрес ЕА получается путем сложения
содержимого одного из регистров (BX или BP) с 8-ми
или 16-ти разрядным смещением. Базовая адресация
обеспечивает возможность работы со структурами
данных, размещенными в памяти. |
Индексная адресация |
 |
Индексная адресация в микропроцессоре i8086
отличается от базовой только использованием для
получения исполнительного адреса содержимого
регистров SI или DI. Этот вид адресации удобен при
обработке массивов, когда смещение указывает
базовый адрес массива, а содержимое индексного
регистра соответствует индексу массива. |
Базово-индексная |
 |
Эффективный адрес равен сумме содержимого
базового (BX или BP) и индексного (SI или DI) регистров. |
Относительная |
 |
При относительной адресации исполнительный
адрес ЕА вычисляется как сумма текущего значения
содержимого счетчика команд и смещения в
команде. В i8086 в роли счетчика команд выступает
указатель команд IP, а 8- или 16-разрядное смещение
представляет собой числа со знаком в диапазоне
от -128 до +127 или от -32768 до +32767 соответственно.
Относительная адресация используется в i8086
только в командах переходов, обращения к
подпрограммам и управления циклами.
Для вычисления исполнительного адреса команды
берется значение содержимого указателя команд,
равное адресу первого байта следующей команды. |
Форматы команд.
Система команд i8086 включает 133 базовые команды и
позволяет обрабатывать 8- и 16-разрядные данные.
Команды могут быть безоперандными, а также
содержать один или два операнда. Длина команд
может составлять от 1 до 6 байт. Код операции
находится в первом байте команды, а остальные
байты содержат информацию об адресах операндов.
Чтобы различать операции над байтами или
словами, в первом байте команды используется
специальный разряд W. При W=1 операции выполняются
с 16-разрядными данными. В микропроцессоре
используются почти все известные способы
адресации, что связано с наличием большого
набора регистров. При выполнении команд по
умолчанию возможны дополнительные варианты
адресации, которые задаются с помощью
специального однобайтового префикса замены
сегмента, записываемого перед командой. Он
информирует микропроцессор об использовании для
адресации операнда сегментного регистра,
отличающегося от регистра, выбираемого по
умолчанию. Сегментные регистры ES, CS, SS, DS в
2-разрядном поле reg задаются кодами 00, 01, 10, 11
соответственно.
биты: |
7 |
6 |
5 |
4-3 |
2 |
1 |
0 |
содержимое: |
0 |
0 |
1 |
reg |
1 |
1 |
0 |
Вид адресации в команде чаще всего
задается байтом, следующим за кодом операции.
Байт адресации может определять один или два
операнда, его структура представлена ниже. Он
содержит поле режима (mod), поле регистра (reg) и поле
регистр-память (r/m). Для вычисления
исполнительного адреса (ЕА) применяется поле mod
или r/m, а также байты смещения (DISP), расположенные
в команде непосредственно за байтом адресации.
биты: |
7-6 |
5-3 |
2-0 |
содержимое: |
mod |
reg |
r/m |
При прямой адресации исполнительный
адрес находится непосредственно в поле смещения
кода команды. В командах безусловных переходов и
обращения к подпрограммам прямой адрес
формируется из 16-разрядного адреса сегмента (SEG) и
16-разрядного смещения (DISP) (см. ниже). В процессе
выполнения команды смещение передается в
указатель команд IP, а базовый адрес сегмента - в
регистр CS:
биты: |
7-0 |
7-0 |
7-0 |
7-0 |
7-0 |
содержимое: |
cop |
displ |
disph |
segl |
segh |
|
EA |
IP |
CS |
В командах обработки данных прямой
адрес представляется смещением, следующим за
байтом адресации, в формате, изображенном ниже.
Разряд d в поле кода операции cop задает
направление передачи данных, определяемых полем
reg в байте адресации. При d=1 передача операнда
производится в регистр задаваемый полем reg в
соответствии с кодировкой.
биты: |
7-2 |
1 |
0 |
7 |
6 |
5-3 |
2 |
1 |
0 |
7-0 |
7-0 |
содержимое: |
cop |
d |
w |
0 |
0 |
reg |
0 |
0 |
1 |
displ |
disph |
|
EA |
Прямая адресация используется и в
командах передачи данных между аккумулятором и
памятью:
биты: |
7-1 |
0 |
7-0 |
7-0 |
содержимое: |
cop |
w |
addrl |
addrh |
|
EA |
В командах с регистровой адресацией
операнд находится в одном из регистров общего
назначения. Эти команды наиболее компактны и
быстро выполнимы т.к. для адресации регистров
необходимы 2-3 разряда кода команды, а выполнение
этих команд полностью осуществляется внутри
микропроцессора. Регистровая адресация может
задаваться в байте кода операции:
биты: |
7-3 |
2-0 |
содержимое: |
cop |
reg |
или с помощью байта адресации:
биты: |
7-2 |
1 |
0 |
7-0 |
содержимое: |
cop |
d |
w |
mod reg r/m |
В командах с двумя операндами при mod=1
используются два регистра, и второй регистр
указывается кодом в поле r/m:
биты: |
7-2 |
1 |
0 |
7 |
6 |
5-0 |
содержимое: |
cop |
d |
w |
1 |
1 |
reg r/m |
Непосредственная адресация позволяет
задавать постоянные данные в виде составных
частей команды и используется в большинстве
команд с двумя операндами. Непосредственный
операнд data занимает один или два байта в конце
кода команды причем младший байт всегда
предшествует старшему. Однобайтовый
непосредственный операнд записывается в
дополнительном коде и может представлять
константы в диапазоне от -128 до +127. Закрашенные
участки при изображении байтов указывают на
возможность отсутствия их в формате команды, при
выполнении определенных условий. Например,
16-разрядный непосредственный операнд
используется только при w=1.
биты: |
7-1 |
0 |
7-0 |
7-0 |
7-0 |
7-0 |
7-0 |
содержимое: |
cop |
w |
mod 000 r/m |
displ |
disph |
data |
data |
биты: |
7-4 |
3 |
2-0 |
7-0 |
7-0 |
содержимое: |
cop |
w |
reg |
data |
data |
Представленные два формата команд
применяются в командах передачи данных и
позволяют загрузить непосредственный операнд по
адресу памяти, вычисленному с помощью байта
адресации, или в некоторый регистр, определяемый
полем reg.
Ниже изображен формат арифметических команд,
позволяющих использовать непосредственный
операнд длиной в слово при sw=01, или, при s=1,
непосредственный операнд в диапазоне от -128 до +127,
записываемый в дополнительном коде. В этом
формате 3-разрядный код ссс в поле reg служит для
идентификации разновидности арифметической
операции.
биты: |
7-2 |
1 |
0 |
7-0 |
7-0 |
7-0 |
7-0 |
7-0 |
содержимое: |
cop |
s |
w |
mod ccc r/m |
displ |
disph |
data |
data |
Формат, представленный ниже,
используется в командах арифметических и
логических операций, содержащих второй операнд в
аккумуляторе AX:
биты: |
7-1 |
0 |
7-0 |
7-0 |
содержимое: |
cop |
w |
data |
data |
Непосредственный операнд,
представляющий константу, добавляемую к
содержимому указателя стека SP, может
использоваться в команде возврата из
подпрограммы, формат которой представлен ниже:
биты: |
7-0 |
7-0 |
7-0 |
содержимое: |
cop |
datal |
datah |
В командах с регистровой косвенной
адресацией 16-разрядный исполнительный адрес EA
находится в одном из регистров reg, задаваемых
полем r/m байта адресации (см. ниже). В этом способе
адресации может использоваться только один из
регистров - BX, SI или DI.
биты: |
7-2 |
1 |
0 |
7 |
6 |
5-0 |
содержимое: |
cop |
d |
w |
0 |
0 |
reg r/m |
|
r/m = BX/SI/DI |
Команды микропроцессора.
Команды передачи данных.
Мнемоника КОП |
Описание команды |
Байт КОП |
Байт адресации |
Длина команды
(байт) |
MOV |
Передача операнда из памяти /
операнда регистра в регистр или из регистра в
память / операнд регистра. |
100010dw |
mod reg r/m |
2-4 |
Передача непосредственного
операнда в память / операнд регистра. |
1100011w |
mod 000 r/m |
3-6 |
Передача непосредственного
операнда в регистр. |
1011w reg |
нет |
2-3 |
Передача операнда из памяти в
аккумулятор. |
1010000w |
нет |
3 |
Передача операнда из
аккумулятора в память. |
1010001w |
нет |
3 |
Передача операнда из памяти /
регистра в сегментный регистр. |
10001110 |
mod 0 reg r/m |
2-4 |
Передача операнда из
сегментного регистра в память / регистр. |
10001100 |
mod 0 reg r/m |
2-4 |
XCHG |
Обмен операндом из памяти /
регистра с операндом из регистра. |
1000011w |
mod reg r/m |
2-4 |
Обмен операндом из регистра с
операндом из аккумулятора. |
10010reg |
нет |
1 |
PUSH |
Передача операнда из памяти /
операнда регистра по адресу в указателе стека SP. |
11111111 |
mod 110 r/m |
2-4 |
Передача операнда из регистра
по адресу в указателе стека SP. |
01010reg |
нет |
1 |
Передача операнда из
сегментного регистра по адресу в указателе стека
SP. |
000reg110 |
нет |
1 |
POP |
Передача операнда из адреса в
указателе стека SP в память / регистр. |
10001111 |
mod 000 r/m |
2-4 |
Передача операнда из адреса в
указателе стека SP в регистр. |
01011reg |
нет |
1 |
Передача операнда из адреса в
указателе стека SP в сегментный регистр. |
000reg11 |
нет |
1 |
PUSHF |
Передача содержимого
регистра флагов по адресу в указателе стека SP. |
10011100 |
нет |
1 |
POPF |
Передача содержимого из
адреса в указателе стека SP в регистр флагов. |
10011101 |
нет |
1 |
LEA |
Загрузка исполнительного
адреса памяти в регистр общего назначения. |
10001101 |
mod reg r/m |
3-4 |
LDS |
Загрузка из памяти
относительного адреса (смещения) и адреса
сегмента в один из регистров общего назначения и
сегментный регистр DS. |
11000101 |
mod reg r/m |
3-4 |
LES |
Загрузка из памяти
относительного адреса (смещения) и адреса
сегмента в один из регистров общего назначения и
сегментный регистр ES. |
11000100 |
mod reg r/m |
3-4 |
LAHF |
Передача младшего байта
регистра флагов в регистр AH. |
10011111 |
нет |
1 |
SAHF |
Передача содержимого
регистра AH на место младшего байта регистра
флагов. |
10011110 |
нет |
1 |
XLAT |
Передача байта в регистр AL из
256-байтовой таблицы кодов. |
11010111 |
нет |
1 |
IN |
Передача байта / слова из
фиксированного порта ввода в аккумулятор AL/AX. |
1110010w |
нет |
2 |
Передача байта / слова из
переменного порта ввода в аккумулятор AL/AX. |
1110110w |
нет |
1 |
Арифметические команды.
Мнемоника КОП |
Описание команды |
Байт КОП |
Байт адресации |
Длина команды
(байт) |
Флаги |
ADD |
Сложение операнда из памяти /
регистра с операндом из регистра. |
000000dw |
mod reg r/m |
2-4 |
AF; CF; OF; PF; SF; ZF |
Сложение непосредственного
операнда с операндом из памяти / регистра. |
100000sw |
mod 000 r/m |
3-6 |
Сложение непосредственного
операнда с операндом в аккумуляторе. |
0000010w |
нет |
2-3 |
ADC |
Сложение операнда из памяти /
регистра с операндом из регистра (с учетом
переноса). |
0001010w |
mod reg r/m |
2-4 |
AF; CF; OF; PF; SF; ZF |
Сложение непосредственного
операнда с операндом из памяти / регистра (с
учетом переноса). |
100000sw |
mod 010 r/m |
3-6 |
Сложение непосредственного
операнда с операндом в аккумуляторе (с учетом
переноса). |
0001010w |
нет |
2-3 |
INC |
Увеличение на единицу
содержимого памяти / регистра. |
1111111w |
mod 000 r/m |
2-4 |
AF; OF; PF; ZF; SF |
Увеличение на единицу
содержимого регистра. |
01000reg |
нет |
1 |
AAA |
Коррекция содержимого
аккумулятора AL при сложении двоично - десятичных
кодов в неупакованном формате. |
00110111 |
нет |
1 |
AF; CF |
DAA |
Тоже, но в упакованном
формате. |
00100111 |
нет |
1 |
AF; CF; PF; SF; ZF |
SUB |
Вычисление разности между
операндом из памяти / регистра и операндом из
регистра. |
001010dw |
mod reg r/m |
2-4 |
AF; CF; PF; SF; ZF; OF |
Вычитание непосредственного
операнда из операнда в памяти / регистре. |
100000sw |
mod 101 r/m |
3-6 |
Вычитание непосредственного
операнда из операнда в аккумуляторе. |
0010110w |
нет |
2-3 |
SBB |
Вычисление разности между
операндом из памяти / регистра и операндом из
регистра (с заемом). |
000110dw |
mod reg r/m |
2-4 |
AF; CF; PF; SF; ZF; OF |
Вычитание непосредственного
операнда из операнда в памяти / регистре (с
заемом). |
100000sw |
mod 011 r/m |
3-6 |
Вычитание непосредственного
операнда из операнда в аккумуляторе (с заемом). |
0001110w |
нет |
2-3 |
DEC |
Вычитание единицы из операнда
в памяти / регистре. |
1111111w |
mod 001 r/m |
2-4 |
AF; CF; PF; SF; OF |
Вычитание единицы из операнда
в регистре. |
01001reg |
нет |
1 |
NEG |
Вычитание исходного операнда
из нуля (изменение знака). |
1111011w |
mod 011 r/m |
2-4 |
AF; CF; PF; SF; ZF; OF |
CMP |
Сравнение операнда из памяти /
регистра с операндом из регистра. |
001110dw |
mod 011 r/m |
2-4 |
AF; CF; PF; SF; ZF; OF |
Сравнение непосредственного
операнда с операндом в памяти / регистре. |
100000sw |
mod reg r/m |
3-6 |
Сравнение непосредственного
операнда с операндом в аккумуляторе. |
0011110w |
нет |
2-3 |
AAS |
Коррекция содержимого
аккумулятора AL при вычитании двоично -
десятичных кодов в неупакованном формате. |
00111111 |
нет |
1 |
AF; CF |
DAS |
Тоже, но в упакованном
формате. |
00101111 |
нет |
1 |
AF; CF; SF; PF; ZF |
MUL |
Умножение без учета знака
операнда в аккумуляторе на операнд из памяти /
регистра. |
1111011w |
mod 100 r/m |
2-4 |
CF; OF |
IMUL |
Умножение со знаком операнда
из памяти / регистра. |
1111011w |
mod 101 r/m |
2-4 |
CF; OF |
DIV |
Деление без учета знака
операнда длиной в одно / два слова на операнд из
памяти / регистра. |
1111011w |
mod 110 r/m |
2-4 |
CF; OF |
IDIV |
Деление со знаком операнда
длиной в одно / два слова на операнд из памяти /
регистра. |
1111011w |
mod 111 r/m |
2-4 |
CF; OF |
AAM |
Коррекция содержимого
аккумулятора AX при умножении двоично -
десятичных кодов в неупакованном формате. |
11010100 |
00001010 |
2 |
PF; SF; ZF |
AAD |
Коррекция содержимого
аккумулятора AL при делении двоично - десятичных
кодов в неупакованном формате. |
11010101 |
00001010 |
2 |
PF; SF; ZF |
Логические команды.
Логические команды можно разбить на две
большие группы: команды, реализующие поразрядные
логические операции, и команды сдвигов
содержимого регистров и ячеек памяти.
Мнемоника КОП |
Описание команды |
Байт КОП |
Байт адресации |
Длина команды
(байт) |
NOT |
Инвертирование разрядов
операнда в памяти / регистре. |
1111011w |
mod 010 r/m |
2-4 |
SHL / SAL |
Логический (арифметический)
сдвиг влево операнда из памяти / регистра на
число разрядов, определяемое константой сдвига. |
110100vw |
mod 100 r/m |
2-4 |
SHR |
Логический сдвиг вправо
операнда из памяти / регистра на число разрядов,
определяемое константой сдвига. |
110100vw |
mod 101 r/m |
2-4 |
SAR |
Арифметический сдвиг вправо
операнда из памяти / регистра на число разрядов,
определяемое константой сдвига. |
110100vw |
mod 111 r/m |
2-4 |
ROL |
Циклический сдвиг влево
операнда из памяти / регистра на число разрядов,
определяемое константой сдвига. |
110100vw |
mod 000 r/m |
2-4 |
ROR |
Циклический сдвиг вправо
операнда из памяти / регистра на число разрядов,
определяемое константой сдвига. |
110100vw |
mod 001 r/m |
2-4 |
RCL |
Циклический сдвиг влево, с
использованием CF, операнда из памяти / регистра
на число разрядов, определяемое константой
сдвига. |
110100vw |
mod 010 r/m |
2-4 |
RCR |
Циклический сдвиг вправо, с
использованием CF, операнда из памяти / регистра
на число разрядов, определяемое константой
сдвига. |
110100vw |
mod 011 r/m |
2-4 |
AND |
Логическое умножение
операнда из памяти / регистра и операнда из
регистра. |
001000dw |
mod reg r/m |
2-4 |
Логическое умножение
непосредственного операнда и операнда из памяти
/ регистра. |
1000000w |
mod 100 r/m |
3-6 |
Логическое умножение
непосредственного операнда и операнда в
аккумуляторе. |
0010010w |
нет |
2-3 |
TEST |
Установка флагового регистра
в соответствии с результатом логического
умножения операнда из памяти / регистра и
операнда из регистра. |
1000010w |
mod reg r/m |
2-4 |
Установка флагового регистра
в соответствии с результатом логического
умножения непосредственного операнда и операнда
из памяти / регистра. |
1111011w |
mod 000 r/m |
3-6 |
Установка флагового регистра
в соответствии с результатом логического
умножения непосредственного операнда и операнда
в аккумуляторе. |
1010100w |
нет |
2-3 |
OR |
Логическое сложение операнда
из памяти / регистра и операнда из регистра. |
000010dw |
mod reg r/m |
2-4 |
Логическое сложение
непосредственного операнда и операнда из памяти
/ регистра. |
1000000w |
mod 001 r/m |
3-6 |
Логическое сложение
непосредственного операнда и операнда в
аккумуляторе. |
0000110w |
нет |
2-3 |
XOR |
Операция "исключающее
ИЛИ" над операндами из памяти / регистра и из
регистра. |
001100dw |
mod reg r/m |
2-4 |
Операция "исключающее
ИЛИ" над непосредственным операндом и
операндом из памяти / регистра. |
1000000w |
mod 110 r/m |
3-6 |
Операция "исключающее
ИЛИ" над непосредственным операндом и
операндом в аккумуляторе. |
0011010w |
нет |
2-3 |
Команды передачи управления.
Команды передачи управления можно разделить на
две группы. Первая группа команд включает
условные и безусловные переходы, команды
обращения к подпрограммам и возврата из них, а
также команды управления циклами. Выполнение
этих команд приводит к изменению содержимого
указателя команд IP и регистра CS. Команды
безусловных переходов и обращений к
подпрограммам обеспечивают как
внутрисегментные, так и межсегментные переходы с
прямой и косвенной адресацией. Команды
управления циклами обеспечивают переход только
в области текущего сегмента с коротким
смещением.
Мнемоника КОП |
Описание команды |
Байт КОП |
Байт адресации |
Длина команды
(байт) |
JMP |
Безусловный внутрисегментный
переход с прямой адресацией. |
11101001 |
Нет |
3 |
Безусловный короткий
внутрисегментный переход с прямой адресацией. |
11101011 |
Нет |
2 |
Безусловный внутрисегментный
переход с косвенной адресацией. |
11111111 |
mod 100 r/m |
2-4 |
Безусловный межсегментный
переход с прямой адресацией. |
11101010 |
Нет |
5 |
Безусловный межсегментный
переход с косвенной адресацией. |
11111111 |
mod 101 r/m |
2-4 |
CALL |
Внутрисегментный вызов
подпрограммы с прямой адресацией. |
11101000 |
Нет |
3 |
Внутрисегментный вызов
подпрограммы с косвенной адресацией. |
11111111 |
mod 010 r/m |
2-4 |
Межсегментный вызов
подпрограммы с прямой адресацией. |
10011010 |
Нет |
5 |
Межсегментный вызов
подпрограммы с косвенной адресацией. |
11111111 |
mod 011 r/m |
4 |
RET |
Внутрисегментный возврат из
подпрограммы. |
11000011 |
Нет |
1 |
Внутрисегментный возврат из
подпрограммы с увеличением содержимого
указателя стека SP. |
11000010 |
Нет |
3 |
Межсегментный возврат из
подпрограммы. |
11001011 |
Нет |
1 |
Межсегментный возврат из
подпрограммы с увеличением содержимого
указателя стека SP. |
11001010 |
Нет |
3 |
LOOP |
Передача управления, если
содержимое регистра CX не равно нулю. |
11100010 |
Нет |
2 |
LOOPE \
LOOPZ |
Передача управления, если
содержимое регистра CX не равно нулю и флаг ZF
установлен в 1. |
11100001 |
Нет |
2 |
LOOPNE \
LOOPNZ |
Передача управления, если
содержимое регистра CX не равно нулю и флаг ZF
установлен в 0. |
11100000 |
Нет |
2 |
JCXZ |
Передача управления, если
содержимое регистра CX равно нулю. |
11100011 |
Нет |
2 |
Команды условных переходов обеспечивают
только внутрисегментные переходы.
Мнемоника КОП |
Описание команды |
Байт КОП |
JE / JZ |
Передача управления по
равенству / нулю. |
01110100 |
JNE / JNZ |
Передача управления, если не
равно / не нуль. |
01110101 |
JL / JNGE |
Передача управления, если
меньше / не больше и не равно. |
01111100 |
JLE / JNG |
Передача управления, если
меньше или равно / не больше. |
01111110 |
JB / JNAE |
Передача управления, если
меньше / не больше и не равно. |
01110010 |
JBE / JNA |
Передача управления, если
меньше или равно / не больше. |
01110110 |
JP / JPE |
Передача управления при
четности. |
01111010 |
JNP / JPO |
Передача управления при
нечетности. |
01111011 |
JO |
Передача управления при
переполнении. |
01110000 |
JNO |
Передача управления при
отсутствии переполнения. |
01110001 |
JS |
Передача управления по
отрицательному результату. |
01111000 |
JNS |
Передача управления по
положительному результату. |
01111001 |
JG / JNLE |
Передача управления, если
больше / не меньше и не равно. |
01111111 |
JGE / JNL |
Передача управления, если
больше или равно / не меньше. |
01111101 |
JA / JNBE |
Передача управления, если
больше / не меньше и не равно. |
01110111 |
JAE / JNB |
Передача управления, если
больше или равно / не меньше. |
01110011 |
Команды управления процессором.
Команды управления процессором, за исключением
ESC являются однобайтовыми и могут быть разделены
на две группы: команды, изменяющие содержимое
регистра флагов, и команды, предназначенные для
работы с внешними устройствами и не
воздействующие на флаги.
Мнемоника КОП |
Описание команды |
Байт КОП |
CLC |
Сброс признака переноса. |
11111000 |
CMC |
Инвертирование признака
переноса. |
11110101 |
STC |
Установка признака переноса. |
11111001 |
CDL |
Сброс признака направления. |
11111100 |
STD |
Установка признака
направления. |
11111101 |
CLI |
Сброс признака разрешения
прерывания. |
11111010 |
HLT |
Останов. |
11110100 |
WAIT |
Перевод процессора в
состояние ожидания. |
10011011 |
ESC |
Выдача кода операции или
операнда для внешнего процесса. |
11011x |
LOCK |
Однобайтный префикс
блокировки шины. |
11110000 |
Команды обработки строк.
Все команды обработки строк символов имеют
длину один байт и бит 0 показывает операцию с
байтом (бит 0=0) или словом (бит 0=1).
Мнемоника КОП |
Описание команды |
Байт КОП |
REP |
Циклическое повторение
команды обработки строки, пока CX=0. |
1111001z |
MOVSB / MOVSW |
Передача элемента строки -
байта / слова. |
1010010w |
CMPSB / CMPSW |
Сравнение элементов строк -
байтов / слов. |
1010011w |
SCASB / SCASW |
Сканирование строк символов -
байтов / слов. |
1010111w |
LODSB / LODSW |
Загрузка элементов строк
символов - байтов / слов в регистр AL / AX. |
1010110w |
STOSB / STOSW |
Запись байтов / слов из
регистра AL / AX в строку символов. |
1010101w |
|