П.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
|
|
|
|
Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...
|
Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...
|
Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...
|
Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...
|
Дизартрии у детей Выделение клинических форм дизартрии у детей является в большой степени условным, так как у них крайне редко бывают локальные поражения мозга, с которыми связаны четко определенные синдромы двигательных нарушений...
Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...
Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической
Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....
|
Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....
БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...
Типология суицида. Феномен суицида (самоубийство или попытка самоубийства) чаще всего связывается с представлением о психологическом кризисе личности...
|
|