П.1.1. Машинные коды команд базового процессора i8086
В табл. П.1.1_1 использованы следующие обозначения: r – общий регистр; sr – сегментный регистр; m – адрес ячейки памяти, который указывается в мнемокоде в соответствии с используемым способом адресации; Acc – аккумулятор AH или AL; port – адрес 8-pазpядного порта ввода-вывода; type – тип (вектор) прерывания; disp 8/16 – смещение в формате команды (один или два байта); D8/16 – одно или двухбайтная константа; sbr – имя подпрограммы; diff – разница между адресом перехода и содержимым указателя команд IP; label – метка, к которой осуществляется переход; opcode – команда для сопроцессора. Постбайт (второй байт B2 в табл. П.1.1_1.) состоит из трех полей: md – режим, reg – регистр, r/m – регистр/память.
Таблица П.1.1_1
Машинные коды команд базового процессора i8086
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 1. ASCII- коррекция для сложе-
ния AAA
|
|
|
|
| 2. ASCII-коррекция для деления
|
|
|
|
| AAD
|
|
|
|
| 3. ASCII-коррекция для умножения AAM
|
|
|
|
| 4. ASCII-коррекция для вычитания AAS
|
|
|
|
|
Продолжение табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 5. Сложение с учётом переноса
|
|
|
|
| ADC r, r/m
| 0001001w
| md reg r/m
| (disp8/16)
| rr+ r/m+ CF
| r/m, r
| 0001000w
| md reg r/m
| (disp8/16)
| r/mr+ r/m+ CF
| r/m, d
| 1000000w
| md 010r/m
| (disp8/16)d8/16
| r/mr+ r/m+ CF
| r16/m16, d8
|
| md 010r/m
| data L
| r/mr/m+ d+ CF
| acc, d
| 0001010w
| data L
| (data H)
| accacc +d+ CF
| 6. Сложение
|
|
|
|
| ADD r, r/m
| 0000001w
| md reg r/m
| (disp8/16)
| rr+ r/m
| r/m, r
| 0000000w
| md reg r/m
| (disp8/16)
| r/mr +r/m
| r/m, d
| 1000000w
| md 000r/m
| (disp8/16)d8/16
| r/mr/m +d
| r16/d16, d8
|
| md000r/m
| data L
| r/mr/m +d
| acc, d
| 0000010w
| data L
| (data H)
| accacc +d
| 7. Логическое И
|
|
|
|
| And r, r/m
| 0010001w
| md reg r/m
| (disp8/16)
| rr Ù r/m
| r/m, r
| 0010000w
| md reg r/m
| (disp8/16)
| r/mr Ù r/m
| r/m, d
| 1000000w
| md 100 r/m
| data L (data H)
| r/mr/m Ù d
| acc, d
| 0010010w
| data L
| (data H)
| acc acc Ù d
| 8. Вызов подпрограммы
|
|
|
|
| Call near sbr
|
| diff L
| diff H
| IPIP+ diff
| near r16/m16
|
| md 010 r/m
| (disp8/16)
| IPIP+ r/m
| far sbr
|
| ip-L
| ip-H, cs-L, cs-H
|
| far m32
|
| md 011 r/m
| (disp8/16)
| CS, IPm32
| 9. Преобразование байта в слово
|
|
|
|
| CBW
|
|
|
|
| 10. Сброс флага переноса CLC
|
|
|
| CF0
| 11. Сброс флага направления
|
|
|
|
| CLD
|
|
|
| DF0
| 12. Сброс флага прерывания
|
|
|
|
| CLI
|
|
|
| IF0
| 13. Инверсия флага переноса
|
|
|
|
| CMC
|
|
|
| CF =! CF
| 14. Сравнение
|
|
|
|
| CMP r, r/m
| 0011101w
| md reg r/m
| (disp8/16)
| r-r/m
| r/m, r
| 0011100w
| md reg r/m
| (disp8/16)
| r/m-r
| r/m, d
| 1000000w
| md 111 r/m
| (disp8/16)d8/16
| r/m-d
| r16/m16, d8
|
| md 111 r/m
| data L
| r/m-d
| acc, d
| 0011110w
| data L
| (data H)
| acc-d
| 15. Сравнение строк
|
|
|
|
| CMPS dst, src
| 1010011w
|
|
| [ds: si]-[es: di]
| 16. Преобразование слова в
двойное слово CWD
|
|
|
|
| 17. Десятичная коррекция сложе-ния DAA
|
|
|
|
| 18. Десятичная коррекция вычи-
тания DAS
|
|
|
|
|
Продолжение табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 19. Декремент
|
|
|
|
| DEC r/m
| 1111111w
| md 001 r/m
| (disp8/16)
| r/mr/m-1
| r
| 01001 reg
|
|
| rr-1
| 20. Деление чисел без знака
|
|
|
|
| DIV r/m
| 1111011w
| md 110 r/m
| (disp8/16)
|
| 21. Переключение на сопроцессор EXC OPCODE, r/m
| 11011xxx
| md 001 r/m
| (disp8/16)
|
| 22. Останов HLT
|
|
|
|
| 23. Деление чисел со знаком
|
|
|
|
| IDIV r/m
| 1111011w
| md 111 r/m
| (disp8/16)
|
| 24. Умножение чисел со знаком
|
|
|
|
| IMUL r/m
| 1111011w
| md 101 r/m
| (disp8/16)
|
| 25. Ввод из порта
|
|
|
|
| Прямой IN acc, port
| 1110010w
| port8
|
|
| Косвенный IN acc, dx
| 1110110w
|
|
|
| 26. Инкремент
|
|
|
|
| INC r/m
| 1111111w
| md 000 r/m
| (disp8/16)
| r/mr/m+1
| r
| 01000 reg
|
|
| rr+1
| 27. Прерывание заданного типа
|
|
|
|
| INT type
|
| type
|
|
| Прерывание по переполнению INTO
|
|
|
|
| Прерывание типа 3 (INT3)
|
|
|
|
| 28. Возврат из прерывания
|
|
|
|
| IRET
|
|
|
|
| 29. Переход, если выше
|
|
|
| CFÚ ZF=0
| JA label
|
| diff L
|
| IPIP+diff L
| 30. Переход, если выше или равно JAE ladel
|
|
diff L
|
| CF=0
IPIP+diffL L
| 31. Переход, если ниже
|
|
|
| CF=1
| JB ladel
|
| diff L
|
| IPIP+diff L
| 32. Переход, если ниже или равно
|
|
|
| CFÚ ZF=1
| JBE label
|
| diff L
|
| IPIP+diff L
| 33. Переход, если есть перенос
|
|
|
| CF=1
| JC label
|
| diff L
|
| IPIP+diff L
| 34. Переход, если СX=0
|
|
|
|
| JCXZ label
|
| diff L
|
| IPIP+diff L
| 35. Переход, если равно
|
|
|
| ZF=1
| JE/JZ label
|
| diff L
|
| IPIP+diff L
| 36. Переход, если больше
|
|
|
| (SFÅ OF)Ú ZF=0
| JG label
|
| diff L
|
| IPIP+diff L
|
|
|
|
|
| 37. Переход, если больше или
равно JGE label
|
|
diff L
|
| SFÅ OF=0
IPIP+diff L
| 38. Переход, если меньше
|
|
|
| SFÅ OF=1
| JL label
|
| diff L
|
| IPIP+diff L
| Продолжение табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 39. Переход, если меньше или =
|
|
|
| (SFÅ OF)Ú ZF=1
| JLE label
|
| diff L
|
| IPIP+diff L
| 40. Безусловный переход
|
|
|
|
| JMP short label
|
| diff L
|
| IPIP+diff L
| near label
|
| diff L
| diff H
| IPIP+diff 16
| near r16/m16
|
| md 100 r/m
| (disp8/16)
| IPIP+r/m
| far label
|
| ip-l
| ip-h, cs-l, cs-h
|
| far m32
|
| md 101 r/m
| (disp8/16)
| CS, IPm32
| 41. Переход, если нет переноса
|
|
|
| CF=0
| JNC label
|
| diff L
|
| IPIP+diff L
| 42. Переход, если не равно
|
|
|
| ZF=0
| JNE/JNZ
|
| diff L
|
| IPIP+diff L
| 43. Переход, если нет перепол-
нения JNO label
|
|
diff L
|
| OF=0
IPIP+diff L
| 44. Переход, если нет паритета
|
|
|
| PF=0
| JNP label
|
| diff L
|
| IPIP+diff L
| 45. Переход, если SF=0
|
|
|
|
| JNS label
|
| diff L
|
| IPIP+diff L
| 46. Переход, если есть перепол-
нение JO label
|
|
diff L
|
| OF=1
IPIP+diff L
| 47. Переход, если есть паритет
|
|
|
| PF=1
| JP label
|
| diff L
|
| IPIP+diff L
| 48. Переход, если паритет нечёт-
ный JPO label
|
|
diff L
|
| PF=0
IPIP+diff L
| 49. Переход, если SF=1
|
|
|
|
| JS label
|
| diff L
|
| IPIP + diff L
| 50. Загрузка младшего байта FL в регистр AH LAHF
|
|
|
|
AHFL
| 51. Загрузка указателя адреса
|
|
|
|
| LDS r16, m32
|
| md reg r/m
| (disp8/16)
| r, dsm32
| 52. Загрузка эффективного адреса
|
|
|
|
| LEA r16, m
|
| md reg r/m
| (disp8/16)
| rEA
| 53. Загрузка указателя адреса
|
|
|
|
| LES r16, m32
|
| md reg r/m
| (disp8/16)
| r, esm32
| 54. Загрузка элемента строки
|
|
|
|
| LODS src
| 1010110w
|
|
| acc [ds: si]
| 55. Зациклить LOOP label
|
| diff L
|
| IPIP+diff L
| 56. Зациклить, если равно
|
|
|
| (cx≠ 0)& (zf=1)
| LOOPE/LOOPZ label
|
| diff L
|
| IPIP+diff L
| 57. Зациклить если не равно
|
|
|
| (cx≠ 0)& (zf=0)
| LOOPNE/LOOPNZ label
|
| diff L
|
| IPIP+diff L
|
Продолжение табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 58. Пересылка
|
|
|
|
| MOV r, r/m
| 1000101w
| md reg r/m
| (disp8/16)
| rr/m
| r/m, r
| 1000100w
| md reg r/m
| (disp8/16)
| r/mr
| r/m, d
| 1100011w
| md 000r/m
| (disp8/16) d8/d16
| r/md
| r, d
| 1011w reg
| data L
| (data H)
| rd
| acc, m
| 1010000w
| disp L
| disp H
| accm
| m, acc
| 1010001w
| disp L
| disp H
| macc
| sr, r/m
|
| md 0sr r/m
| (disp 8/16)
| srr/m
| r/m, sr
|
| md 0sr r/m
| (disp 8/16)
| r/msr
| 59. Передача элемента строки
|
|
|
|
| MOVS dst, src
| 1010010w
|
|
| [es: di][ds: si]
| 60. Умножение чисел без знака
|
|
|
|
| MUL r/m
| 1111011w
| md 100 r/m
| (disp 8/16)
|
| 61. Изменение знака числа
|
|
|
|
| NEG r/m
| 1111011w
| md 011 r/m
| (disp 8/16)
| r/m 0-r/m
| 62. Пустая операция NOP
|
|
|
|
| 63. Логическое НЕ NOT
| 1111011w
| md 010 r/m
| (disp8/16)
|
| 64. Логическое ИЛИ
|
|
|
|
| or r, r/m
| 0000101w
| md reg r/m
| (disp8/16)
| rr Ú r/m
| r/m, r
| 0000100w
| md reg r/m
| (disp8/16)
| r/mr/m Ú r
| r/m, d
| 1000000w
| md 001 r/m
| (disp8/16) d8/16
| r/mr/rm Ú d
| acc, d
| 0000110w
| data L
| (data H)
| accacc Ú d
| 65. Вывод в порт
|
|
|
|
| Прямой Out acc, port
| 1110011w
| port 8
|
|
| Косвенный Out acc, dx
| 1110111w
|
|
|
| 66. Чтение из стека POP r/m
|
| md 110 r/m
| (disp8/16)
|
| r
| 01011reg
|
|
|
| sr
| 000sr111
|
|
|
| 67.Чтение флагов из стека POPF
|
|
|
|
|
|
|
|
|
| 68. Запись в стек PUSH r/m
|
| md 110 r/m
| (disp8/16)
|
| r
| 01010 reg
|
|
|
| sr
| 000 sr 110
|
|
|
| 69. Запись регистра флагов в стек
|
|
|
|
| PUSHF
|
|
|
|
| 70. Циклический сдвиг влево через CF RCL r/m, 1
|
1101000w
|
md 010 r/m
|
(disp8/16)
|
| r/m, CL
| 1101001w
| md 010 r/m
| (disp8/16)
|
| 71.Циклический сдвиг вправо через CF RCR r/m, 1
|
1101000w
|
md 011 r/m
|
(disp8/16)
|
| r/m, CL
| 1101001w
| md 011 r/m
| (disp8/16)
|
|
Продолжение табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 72. Возврат из подпрограммы
|
|
|
|
| RET (near)
|
|
|
| ip← (ss: sp)
| RET (far)
|
|
|
| ip← (ss: sp)
cs← (ss: sp+2)
| Возврат с прибавлением числа d
|
|
|
|
| d=2k, где 2к-число параметров
RET d (near)
|
| data L
| data H
| ip← (ss: sp)
sp=sp+d
| RET d (far)
|
| data L
| data H
| ip← (ss: sp)
cs← (ss: sp+2)
sp=sp+d
| 73. Циклический сдвиг влево
|
|
|
|
| ROL r/m, 1
| 1101000w
| md 000 r/m
| (disp8/16)
|
| r/m, CL
| 1101001w
| md 001 r/m
| (disp8/16)
|
| 74. Циклический сдвиг вправо
|
|
|
|
| ROR r/m, 1
| 1101000w
| md 001 r/m
| (disp8/16)
|
| r/m, CL
| 1101001w
| md 001 r/m
| (disp8/16)
|
| 75. Пересылка АН в регистр
флагов SAHF
|
|
|
|
| 76. Арифметический (логический) сдвиг влево
|
|
|
|
| SAL/SHL r/m, 1
| 1101000w
| md 100 r/m
| (disp8/16)
|
| r/m, CL
| 1101001w
| md 100 r/m
| (disp8/16)
|
| 77. Арифметический сдвиг впра-
во SAR r/m, 1
|
1101000w
|
md 111 r/m
|
(disp8/16)
|
| r/m, CL
| 1101001w
| md 111 r/m
| (disp8/16)
|
| 78. Вычитание с заёмом
|
|
|
|
| SBB r, r/m
| 0001101w
| md reg r/m
| (disp8/16)
| rr-r/m-CF
| r/m, r
| 0001100w
| md reg r/m
| (disp8/16)
| r/mr-r/m-CF
| r/m, d
| 1000000w
| md 011 r/m
| (disp8/16)
| r/mr/m-d-CF
| r16/m16, d8
|
| md 011 r/m
| (disp8/16)
| r/mr/m-d-CF
| acc, d
| 0001110w
| data L
| data H
| accacc-d-CF
| 79. Сканировать элемент строки
|
|
|
|
| SCAS dst
| 1010111w
|
|
| acc-[es: di]
| 80. Логический сдвиг влево
SHL r/m, 1
r/m, cl
|
1101000w
1101001w
|
md 100 r/m
md 100 r/m
|
(disp 8/16)
(disp 8/16)
|
| 81. Логический сдвиг вправо
|
|
|
|
| SHR r/m, 1
| 1101000w
| md 101 r/m
| (disp8/16)
|
| r/m, cl
| 1101001w
| md 101 r/m
| (disp8/16)
|
| 82. Установка флага cf STC
|
|
|
| CF=1
| 83.Установка флага направления
|
|
|
|
| STD
|
|
|
| DF=1
| 84. Установка флага прерывания
|
|
|
|
| STI
|
|
|
| IF=1
| 85. Сохранение Aсc в строке
|
|
|
|
| STOS dst
| 1010101w
|
|
| [es: di]acc
|
Окончание табл. П.1.1_1
Команда
| Байты кода команды
| Содержание операции
| В1
| В2
| В3-В6
| 86. Вычитание
|
|
|
|
| SUB r, r/m
| 0010101w
| md reg r/m
| (disp8/16)
| rr-r/m
| r/m, r
| 0010100w
| md reg r/m
| (disp8/16)
| r/mr-r/m
| r/m, d
| 1000000w
| md 101 r/m
| (disp8/16) d8/16
| r/mr/m-d
| r16/m16, d8
|
| md 101 r/m
| data L
| r/mr/m-d
| acc, d
| 0010110w
| data L
| (data H)
| accacc-d
| 87.Проверка (неразрушающее И)
|
|
|
|
| TEST r, r/m
| 1000010w
| md reg r/m
| (disp8/16)
| rÙ r/m
| r/m, d
| 1111011w
| md 000 r/m
| (disp8/16) d8/16
| r/mÙ d
| acc, d
| 1010100w
| data L
| (data H)
| accÙ d
| 88. Ожидание WAIT
|
|
|
|
| 89. Обмен XCHG ax, r
| 10010 reg
|
|
| ax«r
| r, ax
| 10010 reg
|
|
| r«ax
| r, r/m
m, r
| 1000011w
1000011w
| md reg r/m
md reg r/m
| (disp 8/16)
(disp 8/16)
| r«r/m
m«r
| 90. Табличная трансляция XLAT
|
|
|
|
| 91. Исключающее ИЛИ
|
|
|
|
| xor r, r/m
| 0011001w
| md reg r/m
| (disp 8/16)
| rr Å r/m
| r/m, r
| 0011000w
| md reg r/m
| (disp 8/16)
| r/mr Å r/m
| r/m, d
| 1000000w
| md 100 r/m
| (disp 8/16) d8/16
| r/mr/m Å d
| acc, d
| 0011010w
| data L
| (data H)
| accacc Å d
| Префикс блокировки шины
LOCK
|
|
|
|
| Повторять строковую операцию
|
|
|
|
| REP/REPE/REPZ
|
|
|
|
| REPNE/REPNZ
|
|
|
|
| Префикс замены сегмента SEG
| 001 sr 110
|
|
|
|
Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...
|
Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...
|
Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...
|
Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...
|
МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...
СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень
Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...
Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...
|
Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...
Концептуальные модели труда учителя В отечественной литературе существует несколько подходов к пониманию профессиональной деятельности учителя, которые, дополняя друг друга, расширяют психологическое представление об эффективности профессионального труда учителя...
Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...
|
|