Система команд мікропроцесора і8086
Система команд мікропроцесора і8086 (табл. 1) містить 91 мнемокод. Усі команди МП поділяють на п'ять груп:
• команди передавання інформації (команди пересилання, роботи зі стеком, введення-виведення);
• команди оброблення інформації (арифметичні, логічні, команди зсуву);
• рядкові команди;
• команди передавання керування, включаючи команди переривань;
• команди керування станом МП.
У таблиці 1 використано такі позначення:
src — операнд-джерело;
dest — операнд-призначення;
rеg — 8-/16-розрядний РЗП;
rеg8 — 8-розрядний РЗП;
reg16— 16-розрядний РЗП;
sr — сегментний регістр;
тет — 8-/16-розрядна комірка пам'яті;
тет8 — 8-розрядна комірка пам'яті;
тет16 — 16-розрядна комірка пам'яті;
r/m — 8-/1б-розрядний регістр або комірка пам'яті;
r/т/і — 8-/16-розрядний регістр, комірка пам'яті або безпосередній операнд;
immed — безпосередній операнд;
disp — 8-/1б-розрядне зміщення під час задання адреси;
disp8 — 8-розрядне зміщення;
displ6 — 16-розрядне зміщення;
target — мітка, до якої здійснюється перехід;
seg target — перша логічна адреса (сегментний адрес) мітки target;
offset target — друга логічна адреса (зміщення у сегменті) мітки target;
А — акумулятор AL або АХ;
m[disp] — комірка пам'яті з ефективною адресою ЕА = disp.
Значення кількості тактів ЕА, необхідне для обчислення ефективної адреси, залежить від способу адресації операнда.
Таблиця 1 - Система команд мікропроцесора i8086
Мнемо код команди |
Опис команди |
Алгоритм команди |
Кількість байт |
Кількість тактів |
|
|||||
КОМАНДИ ПЕРЕДАВАННЯ ІНФОРМАЦІЇ Команди пересилання |
|
|||||||||
MOV dest, src |
Пересилання даних з регістра, комірки пам'яті або безпосереднього операнда у регістр або пам'ять |
reg¬- reg sr¬ reg reg¬ sr mem¬ reg reg¬ mem mem¬ sr sr¬ mem a¬ mem mem ¬a mem8¬ immed mem16¬ immed reg8¬ immed reg16¬ immed |
2 2 2 2-4*' 2-4*' 2-4*' 2-4*' 3 3 3-5*2 4-6*3 2 3 |
2 2 2 9 + ЕА 8 + ЕА 9 + ЕА 8 + ЕА 11 11 10 + ЕА 10 + ЕА 4 4 |
|
|||||
XCHG r/m, reg |
Обмін даними між регістрами або регістром і пам'яттю |
reg¨ reg mem¨ reg A¨ reg |
2 2-4*1 1 |
4 17 + ЕА 3 |
|
|||||
XL AT |
Перекодування вмісту AL у значення байта пам'яті з адресою ES: [BX + (AL)] |
AL¬ES: [BX + (AL)] |
1 |
11 |
|
|||||
LEA reg16, mem |
Завантаження ефективної адреси комірки пам'яті тет у регістр |
reg¬ ЕА |
2-4'1 |
2+ ЕА |
|
|||||
LDS reg16, mem |
Завантаження у регістр reg16 слова із комірки пам'яті за адресою [тет], у DS - наступного слова з комірки за адресою [тет + 2] |
reg¬ [mem] DS¬ [тет+2] |
2-4'1 |
16+ ЕА |
|
|||||
LES reg16, mem |
Завантаження у регістр reg16 слова із комірки пам'яті за адресою [тет], в ES - наступного слова з комірки за адресою [тет + 2] |
reg¬ [mem] ES¬ [тет + 2] |
2-4-1 |
16 + ЕА |
|
|||||
LAHF |
Завантаження молодшого байта регістра прапорців FL вАН |
AH¬-FL |
1 |
4 |
|
|||||
SAHF |
Збереження АН у молодшому байті регістра прапорців FL |
FL¬AH |
1 |
4 |
|
|||||
Команди роботи зі стеком |
|
|||||||||
PUSH r/m/sr
|
Пересилання слова з регістра або з пам'яті у стек
|
SP¬SP - 2 [SS.SP]¬ r/m |
2-4*' |
11/(16 + ЕА) |
|
|||||
SP¬-SP - 2 [SS:SP]¬sr |
1 |
10 |
|
|||||||
PUSHF |
Пересилання у стек вмісту регістра прапорців |
SP¬SP – 2 [SS:SP]¬ F |
1 |
10 |
|
|||||
POP r/m/sr
|
Пересилання слова даних зі стеку в регістр або пам'ять
|
r/m¬ [SS:SP] SP¬-SP + 2 |
2-4*' |
8/(16 +ЕА) |
|
|||||
sr¬[SS.SP] SP¬ SP+2 |
1 |
8 |
|
|||||||
POPE |
Пересилання даних зі стеку в регістр прапорців |
F¬ [SS:SP] SP¬-SP + 2 |
1 |
8 |
|
|||||
Команди введення-виведення
|
|
|||||||||
IN AL, P8 IN AL, DX |
Введення в акумулятор AL байта з 8-розрядного порту з адресою Р8 або з адресою, що зберігається в DX |
AL¬ Порт (Р8) AL¬ Порт (DX) |
2 1 |
10 8 |
|
|||||
IN AX, P8 IN AX, DX |
Введення в акумулятор АХ слова із 16-розрядного порту з адресою Р8 або з адресою, що зберігається в DX |
АХ¬ Порт (Р8) АХ¬Порт (DX) |
2 1 |
10 8 |
|
|||||
OUT P8, AL OUT DX, AL |
Виведення байта з акумулятора AL у 8-розрядний порт з адресою Р8 або з адресою, що зберігається в DX |
Порт (P8)¬-AL Порт (DX)¬ AL |
2 1 |
10 8 |
|
|||||
OUT P8, AX OUT DX, AX |
Виведення слова з акумулятора АХ у 16-розрядний порт з адресою Р8 або з адресою, що зберігається в DX |
Порт (Р8)¬-АХ Порт (DX) і-АХ |
2 1 |
10 8 |
|
|||||
КОМАНДИ ОБРОБ ЛЕННЯ ІНФОРМА ЦІЇ Арифметичні команди |
|
|||||||||
ADD r/m, r/mJi |
Додавання двох операндів |
r/reg¬ r/reg + reg reg¬ reg + r/m reg8¬ reg8 + immed reg16¬reg16+immed mem8¬-mem8+ +immed mem 16 ¬ mem 16 + + immed AL¬ AL + immed AX¬AX + immed |
2 2-4*1 2-4*1 3
4
3-5*2 2 3 |
3 16 + ЕА 9 + ЕА 4
4
17 + ЕА 4 4 |
|
|||||
ADC r/m, r/m/i |
Додавання двох операндів і прапорця перенесення CF від попередньої операції. Прапорець перенесення додається до молодшого біта результату - |
reg¬ reg + reg + CF mem¬mem+reg+CF reg¬ reg +mem +CF reg8¬reg8+immed+ +CF Reg16¬-reg16 + +immed + CF mem8¬ mem8 + + immed + CF тет¬mem16 + + imm + CF AL¬-AL +immed +CF AX¬AX +immed + CF |
2 2-4*1 2-4*1
3
4
3-5*2
4-6*3 2 3 |
3 16 + ЕА 9 + ЕА
4
4
17 + ЕА
17 + ЕА 4 4 |
|
|||||
INC r/m |
Інкремент (додавання з одиницею). Команда не діє на прапорець CF |
reg8¬reg8 + 1 reg16¬ reg16 + 1 mem¬ mem+1 |
2 1 2-4*1 |
3 2 15 + EL |
|
|||||
AAA |
Корекція після додавання розпакованих двійково-десяткових чисел |
1 |
4 |
|
||||||
DAA |
Корекція після додавання упакованих двійково-десяткових чисел |
1 |
4 |
|
||||||
SUB r/m, r/m/i |
Віднімання двох операндів |
reg¬ reg - reg mem¬ mem - reg reg <— reg - mem reg8¬ reg - immed reg 16¬reg1 - immed mem8¬ mem - immed mem16 ¬-mem1 - immed AL¬A - immed AX¬ A - immed |
2 2-4*1 2-4*1 3 4 3-5*2 4-6*3 2 3 |
3 16 + ЕА 9 + ЕА 4 4 17 + ЕА 17 + ЕА 4 4 |
|
|||||
SBB r/m, r/m/i |
Віднімання байта та прапорця позики CF від попередньої операції. Прапорець позики віднімається від молодшого біта результату |
reg¬ reg - reg - CF mem¬ mem -- reg - CF reg¬reg - mem - CF reg8¬- reg8 - immed – CF reg16¬reg16-immed-CF mem8¬mem8-imme -CF mem16¬тет16-immed--CF AL¬-AL - immed - CF АХ¬АХ immed - CF |
2 2-4*1 2-4*1
3 4 3-5*
4-6*3 2 3 |
3 16 + ЕА 9 + ЕА
4 4 17 + ЕА
17 + ЕА 4 4 |
|
|||||
DEC г/т |
Декремент (віднімання одиниці). Команда не діє на прапорець СЕ |
reg8¬- reg8 - 1 reg16¬reg16 - 1 mem¬ mem - 1 |
2 1 2-4*' |
3 2 15 + ЕА |
||||||
NEC г/т |
Зміна знака операнда |
reg¬ reg mem¬ mem |
3 2-4*1 |
3 16 +ЕА |
||||||
CMP r/m, r/m/i |
Порівняння двох операндів встановлення вмісту регістра прапорів F за результатом віднімання (без збереження результату віднімання) |
FÜreg - reg FÜ mem - reg FÜ reg - mem FÜ reg8 - immed FÜreg16 - immed FÜ mem8 - immed FÜmem16 - imm FÜAL- immed FÜAX - immed |
2 2-4*1 2-4*1 3 4 3-5*2 4-6*3 2 3 |
3 9 + ЕА 9 + ЕА 4 4 1 + ЕА 1 + ЕА 4 4 |
||||||
AAS |
Корекція після віднімання розпакованих двійково-десяткових чисел |
1 |
4 |
|||||||
DAS |
Корекція після віднімання упакованих двійково-десяткових чисел |
1 |
4 |
|||||||
MUL r/m
|
Множення AL (АХ) на беззнакове значення г/т |
AX¬ (DX,AX)¬ AX ¬ (DX,AX)¬ |
2
2 2-
4*1 |
70-77
118-133 76-83 +ЕА 124- -139+ЕА |
||||||
IMUL r/m |
Множення AL (АХ) на знакове значення г/т |
AX¬ (DX,AX)¬ AX ¬ (DX,AX)¬ |
2
2 2-4*1 2-4*1 |
80- 98
28 - 154 96-104+ЕА 34-160+ЕА |
||||||
АAM |
Корекція після множення розпакованих двійково-десяткових чисел |
2 |
83 |
|||||||
Мнемокод команди |
Опис команди |
Алгоритм команди |
Кількість байт |
Кількість тактів |
DIV r/т |
Ділення акумулятора на беззнакове число (ділення на нуль зумовлює переривання INTO) |
®AL (остача АН) ®AX (остача DX) ®AL (остача АН) ®АХ (остача DX) |
2
2
2-4*1
2-4*1 |
80 -90
144 - 162
86-96 +ЕА
150-168+ ЕА |
IDIV r/т |
Ділення акумулятора на ціле число (8- або 16-розрядне). Ділення на нуль зумовлює переривання INT 0 |
®AL (остача АН) ® АХ (остача DX) АХ:тет8® AL (остача АН) DX,AX:mem16® АХ (остача DX) |
2
2
2-4*1
2-4*1
|
101-112
165-184
144-168+ЕА
166-190+ЕА |
AAD |
Корекція перед діленням розпакованих двійково-десяткових чисел |
2 |
60 |
|
CBW |
Перетворення байта AL на слово АХ (повторення вмісту знакового розряду (AL7) регістра AL в усіх розрядах регістра АН) |
АН¬ (AL7) |
1 |
2 |
CWD |
Перетворення слова АХ на подвійне слово DX, АХ (повторення вмісту знакового розряду (АХІ5) регістра АХ в усіх розрядах регістра DX) |
DX¬(АХ15) |
1 |
5 |
Логічні команди |
||||
NOT r/m |
Інверсія (всіх бітів операнда)інверсія |
reg¬ mem¬ |
2 2-4*1 |
3 16 + ЕА |
AND r/m, г/т/і |
Логічне І двох опе-рандів |
reg¬ reg л reg mem¬ mem ۸ reg reg¬ reg ۸ mem reg8¬ reg8 ۸ immed reg 16 ¬reg 16 ۸mmed mem16¬mem8۸mmed mem16¬mem16 ۸ immed |
2 2-4*1 2-4*1 3 4 3-5*2 4-6*3 |
3 16 + EA 9 + EA 4 4 17 + EA 17 EA |
Мнемокод команди |
Опис команди |
Алгоритм команди |
Кількість байт |
Кіль- кість тактів |
|
|
AL¬ AL ۸ immed |
2 |
4 |
|
|
АХ <— АХ л immed |
3 |
4 |
OR r/m, |
ЛОГІЧНЕ АБО двох |
reg¬- reg v reg |
2 |
3 |
г/т/і |
опсрандів |
mem¬ mem v reg |
2-4*1 |
16 + EA |
|
|
reg <— reg v mem |
2-4*1 |
9 + EA |
. |
|
reg8¬ reg8 v immec |
3 |
4 |
|
|
reg16¬-reg16 v immed |
4 |
4 |
|
|
mem8¬ mem8 v immed mem16¬mem16 v immed |
3-5*2 4-6*3 |
17 +EA |
|
|
AL¬-ALv immed |
2 |
17 +EA 4 |
|
|
AX¬ AX v immed |
3 |
4 |
XOR г/т, |
ВИКЛЮЧАЛЬНЕ |
reg ¬ reg Å reg |
2 |
3 |
г/т/і |
АБО двох операндів |
mem¬ mem Å reg |
2-4*1 |
16 + EA |
|
|
reg¬ reg Å mem |
2-4*1 |
9 +EA |
|
|
reg8¬ reg8 Å immed |
3 |
4 |
|
|
reg16¬ reg16 Å immed |
4 |
4 |
|
|
mem8¬- mem8 Å immed |
3-5*2 |
17 + EA |
|
|
mem16¬ mem16 Å immed |
4-6'3 |
17 + EA |
|
|
AL¬ AL Å immed |
2 |
4 |
|
|
AX¬-AX Å immed |
3 |
4 |
TEST r/m, |
Перевірка (логічне І |
F Ü reg ۸ reg |
2 |
3 |
r/т/і |
без запису результату |
FÜ mem ۸ reg |
2-4*1 |
9 + EA |
|
і встановлення пра- |
FÜ reg ۸тeт |
2-4*1 |
9 + EA |
|
порців відповідно до |
FÜ rep8 ۸ immed |
3 |
4 |
|
результату) |
FÜ reg16 ۸ immed |
4 |
4 |
|
|
FÜ mem8 ۸ immed |
3-5*2 |
10 + EA |
|
|
FÜ mem |
4-6*3 |
10 + EA |
|
|
FÜ AL ۸ immed |
2 |
4 |
|
|
F Ü AХ ۸ immed |
3 |
4 |
Команди зсуву Циклічний зсув ліворуч-праворуч через біт CF |
||||
RCL/RCR r,1
|
на одну позицію |
2 2-4*1 |
2 15+ EA |
|
RCL/RCR m,1 |
на СL позицій ліворуч |
2 2-4*1 |
8+4СL 20+ EA+4СL |
|
RCL/RCR m, CL |
праворуч |
|
|
Циклічний зсув ліворуч праворуч: |
|
|
|
ROL/ROR |
На одну позицію |
2 |
2 |
|
r,1 |
|
2-4*1 |
15+ EA |
|
ROL/ROR |
на СL позицій SAL/SAR |
|
|
|
m,1 |
ліворуч |
2-4*1 |
20+EA+4СL |
|
ROL/ROR |
праворуч |
|
|
|
m,СL |
|
|
||
|
Зсув арифметичний ліворуч-праворуч: на одну позицію |
|
||
SAL/SAR r, 1 SAL/SARm,1 SAL/SAR r, CL SAL/SAR m, CL
|
на одну позицію
на СL позицій 0 ліворуч праворуч Під час зсуву праворуч значення 6iтa у старшому розряді залишається незмінним |
2 2-4*1 2
2-4*1
|
2 15+ EA 8+4СL
20+ EA+ 4СL
|
|
|
Зсув логічний праворуч4:
|
|
|
|
SHR r, 1
|
на одну позицію
|
2 |
2 |
|
SHR m, 1 |
|
2-4*1 |
15+EA |
|
SHR r. CL |
на СL позицій |
2 |
8+4СL |
|
SHR m, CL |
0® |
2-4*1 |
20+EA+4СL |
|
Рядкові команди |
||||
REP |
Префікс повторення рядкових операцій триває доти, поки СХ≠ 0 (СХ декрементується після виконання кожної рядкової операції)
|
1 |
|
|
REPE (REPZ) |
Префікс умовного повторення - повторення за ZF = 1 або за СХ≠ 0
|
1 |
|
|
REPNE (REPNZ) |
Префікс умовного повторення - повторення за ZF = 0 або за СХ≠0
|
1 |
|
|
MOVSB |
Копіювання байта з комірки пам'яті з адресою DS: [SI] у комірку ES:[DI]
|
ES:[DI]¬DS:[SI]
SI¬SI±1*7 DI¬DI±1*7 |
1 |
18*5
9+17CX*6
|
MOVSW |
Копіювання слова з DS: [SI] у ES: [DI] |
ES: [DI]¬DS: [SI] SI¬-SI±2*7 DI¬-DI±2*7 |
1 |
18*5 9+17СХ*6 |
LODSB |
Копіювання байта з DS: [SI] в AL |
AL¬DS: [SI] SI¬-SI±1*7 |
1 |
11*5 9 +10 СХ*6 |
LODSW |
Копіювання слова з DS: [SI] в АХ |
AX¬DS: [SI] SI¬-SI± 2*7 |
1 |
11*5 9 +10 СХ*6 |
STOSB |
Запис байта з AL в ES: [DI] |
ES: [DI]¬AL DI¬DI± 1*7 |
1 |
11*5 9 +10 СХ*6 |
STOSW |
Запис слова з АХ в ES: [DI] |
ES: [DI]¬AX DI¬DI ± 2*7 |
1 |
11*5 9 +10 СХ*6 |
CMPSB |
Порівняння байтів DS: [SI] і ES: [DI] із записом результату порівняння у регістр прапорців |
FÜ ES: [DI] - DS: [SI] SI¬- ¬SI±1*7 DI¬-DI ± 1*7 |
1 |
22*5 9 +22 СХ*6 |
CMPSW |
Порівняння слів DS: [SI] і ES: [DI] із записом результату порівняння у регістр прапорців |
FÜES: [DI]- DS: [SI] SI¬ ¬ SI ± 2*7; DI¬DI± 2*7 |
1 |
22*5 9 +22 СХ*6 |
SCASB |
Порівняння байта DS: [SI] і AL із записом результату порівняння у регістр прапорців |
FÜ[DS: SI] -AL; S¬ SI ± 1*7Г7 |
1 |
15*5 9 +15 СХ*6 |
SCASW |
Порівняння слова DS: [SI] і АХ із записом результату порівняння у регістр прапорців |
FÜ [DS: SI] - AX; SI¬SI ± 2*7 |
1 |
15*5 9 +15 СХ*6 |
КОМАНДИ ПЕРЕДА ВАННЯ КЕРУВАН НЯ |
||||
JMP target16 JMP NEAR target8 JMP reg JMP mem |
Внутрішньосегментний Безумовний перехід до цільової адреси target (перехід у межах сегмента завдовжки 64 Кбайт) |
IP¬IP + disp16
IP¬IP + disp8
IP¬ IP + reg IP¬IP + mem |
3
2
2 2-4'1 |
15
15
2 18 + EА |
JMP FAR target JMP FAR mem |
Міжсегментний безумовний перехід до цільової адреси target (перехід у межах усієї ємності пам'яті 1 Мбайт) |
IP¬offset target, CS¬seg target IP¬[mem] IP¬[mem+2] |
5
2-4*1
|
15
24 + ЕА |
JCX target |
Перехід, якщо СХ = 0 |
2 |
18/6*8 |
|
LOOP target |
Цикл: СХ¬СХ - 1 і перехід, якщо СХ≠0 |
2 |
16/4*8 |
|
LOOPE (LOOPZ) target |
СХ¬СХ - 1 і перехід, якщо СХ ≠0 і ZF=1 |
2 |
18/6*8 |
|
LOOPNE (LOOPNZ) target |
СХ¬ СХ - 1 і перехід, якщо СХ ≠0 і ZF=0 |
2 |
19/5*8 |
|
JA(JNBE) target |
Перехід, якщо перший беззнаковий операнд більше, ніж другий (CF = ZF = 0) |
2 |
16/4*8 |
|
JAE (JNB) target |
Перехід, якщо перше беззнакове число не менше, ніж друге (CF = 0) |
2 |
16/4*8 |
|
JB (JC) target |
Перехід, якщо перше беззнакове число менше, ніж друге (.CF = 1) |
2 |
16/4*8 |
|
JE (JZ) target |
Перехід, якщо числа дорівнюють (ZF = 1) |
2 |
16/4-8 |
|
JG (JNLE) target |
Перехід, якщо перше більше за друге знакове число (SF = (ZF&OF)) |
2 |
16/4*8 |
|
JGE (JNL) target |
Перехід, якщо перше знакове число більше або дорівнює другому (SF = OF) |
2 |
16/4*8 |
|
JL (JNGE) target |
Перехід, якщо перше знакове число менше за друге (SF≠ OF) |
2 |
16/4*8 |
|
JLE (JNG) target |
Перехід, якщо перше знакове число менше або дорівнює другому (SF≠OF або ZF = 0) |
2 |
16/4*8 |
|
JNC (JAE/JNB) target |
Перехід, якщо перенесення немає (CF = 0) |
2 |
16/4*8 |
|
JNE (JNZ) target |
Перехід, якщо числа не рівні (ZF=0) |
2 |
16/4*8 |
|
JNO target |
Перехід, якщо немає переповнення (OF = 0) |
2 |
16/4*8 |
JNP (JPO) target |
Перехід, якщо паритет непарний (PF = 0) |
2 |
16/4*8 |
|
JNS target |
Перехід, якщо позитивний результат (SF = 0) |
2 |
16/4*8 |
|
JO target |
Перехід, якщо є переповнення (OF = 1) |
2 |
16/4'8 |
|
JP (JPE) target |
Перехід, якщо паритет парний (PF = 1) |
2 |
16/4*8 |
|
JS target |
Перехід, якщо негативний результат (SF = 1) |
2 |
16/4*8 |
|
CALL NEAR target CALL NEAR reg CALL NEAR mem |
Внутрішньосегментний виклик процедури (виклик у межах сегмента завдовжки 64 Кбайт)
|
SP ¬SP - 2 [SS.SP] ¬-IP; IP¬target |
3 |
19 |
IP¬reg |
2 |
16 |
||
IP¬mem |
2-4*1 |
21+ЕА |
||
CALL FAR target
CALL FAR mem |
Міжсегментний виклик процедури (виклик у межах усієї ємності пам'яті 1 Мбайт) |
SP¬SP - 2 [SS:SP] ← CS SP←SP - 2 [SS:SP]←IP; CS, IP← target |
5 |
28 |
|
|
IP¬-[mem]; CS← [mem + 2] |
2-4*1 |
37 +ЕА |
RET RET NEAR
RET (n) RET NEAR (n) |
Повернення з внутрішньосегментної процедури. Необов'язковий параметр п задає корекцію значення вказівника стеку |
IP¬[SS.SP]; SP←SP + 2
IP←- [SS:SP]; SP←-SP + n |
1
3 |
8
12 |
RET FAR
RET FAR (n) |
Повернення з між-сегментної процедури Необов'язковий параметр п задає корекцію значення вказівника стеку |
IP←[SS.SP]; SP←SP + 2 C←[SS.SP]; SP←SP + 2 |
1
3 |
18
17 |
Команди переривань |
||||
INT n |
Виконання програмного переривання |
SP<-SP - 2 [SS.SP] «- F |
2 |
51 |
|
|
SP←-SP - 2 [SS:SP]← CS SP←SP - 2 [SS.SP] ← IP |
|
|
|
INT3 |
Виконання програмного переривання 3 |
1 |
52 |
||
INTO |
Виконання програмного переривання 4, якщо прапорець OF = 1 |
1 |
53/4*9 |
||
IRET |
Повернення з переривання |
IP←[SS.SP]; SP←SP+2 CS← [SS.SP], SP← SP+2; F←[SS.SP]; SP← SP+2 |
1 |
24 |
|
КОМАНДИ КЕРУВАННЯ СТАНОМ МП |
|||||
CLC |
Скидання прапорця перенесення |
CF ← 0 |
1 |
2 |
|
CMC |
Інверсія прапорця перенесення |
CF← |
1 |
2 |
|
STC |
Установлення прапорця перенесення |
CF←1 |
1 |
2 |
|
CLD |
Скидання прапорця напряму |
DF←0 |
1 |
2 |
|
STD |
Установлення прапорця напряму |
DF←1 |
1 |
2 |
|
CLI |
Заборона маскованих апаратних переривань |
IF←0 |
1 |
2 |
|
STI |
Дозвіл маскованих апаратних переривань |
IF←1 |
1 |
2 |
|
HLT |
Зупинка процесора |
|
1 |
2 |
|
WAIT |
Очікування сигналу на лінії TEST |
|
1 |
3 |
|
ESC msk/mem |
Передавання коду команди msk або коду та операнда тет арифметичному співпроцесору |
2 2-4*1 |
2 8 + ЕА |
||
LOCK |
Префікс блокування шини на час виконання наступної інструкції у максимальному режимі |
1 |
2 |
NOP |
Операцій немає |
1 |
2 |
Примітки:
*1Команда займає два байти, якщо під час адресації комірки пам'яті не використовується зміщення, тобто disp = 0, наприклад, позначення комірки пам'яті тет відповідає позначенню [SI]; команда займає три байти, якщо використовується 8-розрядне зміщення disp8, наприклад, [SI + 25Н]; команда займає чотири байти, якщо зміщення 16-розряд-не - displ6, наприклад, [SI + 1000 Н].
*2Команда займає три байти за disp = 0, чотири байти за disp8 і п'ять байт при disp\6.
*3Команда займає чотири байти за disp = 0, п'ять байт за disp8 і шість байт за disp\6.
"''Логічний зсув логічний ліворуч збігається з арифметичним зсувом ліворуч. Допускається замість позначення SAL використовувати позначення SHL.
*5Наведено тривалість виконання рядкової команди без префікса повторення.
*бНаведено тривалість виконання рядкової команди із префіксом повторення. У регістрі СХ записано кількість повторень.
*73а встановленого прапорця напряму (DF - 1) - цс операція додавання або віднімання.
*8т/п - під час виконання переходу команда виконується за т або за п тактів.
*93а встановленого прапорця (OF = 1) команда виконується за 53 або за чотири такти.