| Ім'я файлу: Command_As.doc Розширення: docРозмір: 182кб.Дата: 02.06.2020скачати Набір команд Асемблера в алфавітному порядку.
Команда
| Дія
| Оп.
| Пра
порці
| AAA
| Корекція для додавання ASCII кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра знаходиться між Ah і Fh або прапорець AF дорівнює 1, то до регістра AL додається 6, а до регістра AH додається 1, прапорці. У всіх випадках команда встановлює в 0 ліву шіст. цифру в регістрі AL. Результат - у регістрі AX.
| 0
| AF, CF
| AAD
| Корекція ASCII коду діленого до безпосереднього ділення. Команда множить вміст AH на 10 (0Ah), додає результат до регістра AL і очищає регістр AH.
| 0
| PF,SF,
ZF
| AAM
| Корекція результату множення ASCII кодів у регістрі AX. Команда ділить вміст регістра AL на 10 (0Ah) і записує частку в регістр AH, а остачу в AL.
| 0
| PF,SF
ZF
| AAS
| Корекція для віднімання ASCII-кодів.
Команда перевіряє праву шіст.цифру (чотири біти) в регістрі AL. Якщо ця цифра лежить між A і F або прапорець AF дорівнює 1, то з регістра AL віднімається 6, а з регістра AH віднімається 1. У всіх випадках команда встановлює в 0 ліву шіст. цифру в регістрі AL.
| 0
| AF, CF
| ADC
| Додавання з врахуванням переносу. Тобто якщо прапорець CF має значення 1, то ця команда додає 1 до першого операнду, а вже потім додає другий операнд.
| 2
| AF,CF,OF,
PF,SF,ZF
| ADD
| Додавання двійкових даних. Операнди повинні бути однакової довжини: байт або слово. Команда може мати наступний формат:
ADD регістр-регістр;
ADD пам'ять-регістр;
ADD регістр-пам'ять;
ADD регістр-безпосереднє значення;
ADD пам’ять-безпосереднє значення.
| 2
| AF,CF,OF,
PF,SF,ZF
| AND
| Логічне «І».Порозрядна кон’юнкція бітів операндів. Якщо відповідні біти операндів рівні 1, то у першому(лівому) операнді встановлюється біт=1.
| 2
| CF,OF,
PF,SF,ZF
| CALL
| Виклик процедури.
| 1
| -
| CBW
| Перетворення байту у слово.
Команда розширяє однобайтне арифметичне значення в регістрі AL, до розміру слова у регістрі AX. Розмножується знаковий біт.
| 0
| -
| CLC
| Скидання прапорця переносу. CF=0
| 0
| CF=0
| CLD
| Скидання прапорця напрямку. DF=0
| 0
| DF=0
| CLI
| Скидання прапорця переривання. IF=0
| 0
| IF=0
| CMC
| Перемикання прапорця переносу. Інвертує значення CF.
| 0
| CF
| CMP
| Порівняння двох полів даних.
Команда виконує віднімання другого операнду від першого, але значення операндів на змінює. Операнди повинні бути однакової довжини: байт або слово. Команда може мати наступний формат:
CMP регістр-регістр;
CMP пам'ять-регістр;
CMP безпосереднє значення -регістр;
CMP регістр-пам’ять;
CMP безпосереднє значення –пам’ять
| 2
| AF,CF,OF,
PF,SF,ZF
| CMPS
CMPSB
CMPSW
| Порівняння рядків довільної довжини. Перший операнд цих команд адресується регістровою парою DS:SI, а другий – ES:DI. Для команди CMPSB порівняння виконується по одному байту, а для команди CMPSW – по два. Якщо прапорець DF=0, то порівняння відбувається зліва направо і регістри SI та DI збільшуються після кожного порівняння на 1(для CMPSB), чи на 2(для CMPSW). Якщо прапорець DF=1, то порівняння відбувається справа наліво і регістри SI та DI зменшуються на 1 чи 2, відповідно.
| 2/0
| AF,CF,OF,
PF,SF,ZF
| CWD
| Перетворення слова у подвійне слово. Команда розширяє двобайтове арифметичне значення в регістрі AХ, до розміру 4 байт у регістровій парі DX:AX. Розмножується знаковий біт.
| 0
| -
| DAA
| Корекція для додавання BCD кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра знаходиться між Ah і Fh або прапорець AF дорівнює 1, то до регістра AL додається 6 і AF=1, якщо AL містить значення більше 9F, або CF=1, то додається 60h до регістра AL і CF=1.
| 0
| AF,CF
PF,SF,ZF
|
DAS
| Корекція для віднімання BCD кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра більше за 9, або прапорець AF дорівнює 1, то від AL віднімається 60h і CF=1.
| 0
| AF,CF
PF,SF,ZF
| DEC
| Віднімання одиниці до байту або слова в регістрі або пам’яті.
| 1
| AF,CF
PF,SF,ZF
| DIV
| Ділення без знакових двійкових даних. Формати команд:
"Слово на байт". Ділене перебуває в регістрі AX, а дільник - у байті пам'яті або а однобайтовому регістрі. Після ділення остача виходить у регістрі AH, а частка - в AL.
"Подвійне слово на слово". Ділене перебуває в регістровій парі DX:AX, а дільник - у слові пам'яті або в регістрі. Після ділення остача виходить у регістрі DX, а частка в регістрі AX.
| 1
| AF,CF,OF,
PF,SF,ZF
| ESC
| Перемикання на співпроцесор. Забезпечує використання співпроцесора для виконання спеціальних операцій з рухомою крапкою.
| 0
| -
| HLT
| Зупинка процесора.
| 0
| -
| IDIV
| Ділення знакових двійкових даних. Формати команд аналогічні DIV.
| 1
| AF,CF,OF,
PF,SF,ZF
| IMUL
| Множення знакових двійкових даних. Формати команд аналогічні MUL.
| 1
| AF,CF,OF,
PF,SF,ZF
| IN
| Ввід байту або слова даних з порту.
Передається з вхідного порту один байт в регістр AL, або два байти в регістр AX. Порт кодується як безпосередній операнд, або як змінна в регістрі DX.
| 2
| -
| INC
| Додавання одиниці до байту або слова в регістрі або пам’яті.
| 1
| AF,CF
PF,SF,ZF
| INT
| Переривання.
| 1
| IF,TF
| INTO
| Переривання по переповненню
| 0
| -
| IRET
| Повернення з обробки переривання
| 0
| AF,CF,OF,
PF,SF,ZF
| JE/JZ
| Перехід, якщо рівно/нуль
| 1
| ZF
| JNE/JNZ
| Перехід, якщо не рівно/не нуль
| 1
| ZF
| JA/JNBE
| Перехід, якщо вище/не нижче або рівно
| 1
| ZF,CF
| JAE/JNB
| Перехід, якщо вище або рівно/ не нижче
| 1
| CF
| JB/JNAE
| Перехід, якщо нижче/не вище або рівно
| 1
| CF
| JBE/JNA
| Перехід, якщо нижче або рівно/не вище
| 1
| CF,AF
| JE/JZ
| Перехід, якщо рівно/нуль
| 1
| ZF
| JNE/JNZ
| Перехід, якщо не рівно/не нуль
| 1
| ZF
| JG/JNLE
| Перехід, якщо більше/не менше або рівно
| 1
| ZF,SF,OF
| JGE/JNL
| Перехід, якщо більше або рівно/ не менше
| 1
| SF,OF
| JL/JNE
| Перехід, якщо менше/не більше або рівно
| 1
| SF,OF
| JLE/JNG
| Перехід, якщо менше або рівно/не більше
| 1
| ZF,SF,OF
| JS
| Перехід, якщо є знак(від’ємне)
| 1
| SF
| JNS
| Перехід, якщо немає знаку(додатнє)
| 1
| SF
| JC
| Перехід, якщо є перенос (аналогічно JB)
| 1
| CF
| JNC
| Перехід, якщо немає переносу
| 1
| CF
| JO
| Перехід, якщо є переповнення
| 1
| OF
| JNO
| Перехід, якщо немає переповнення
| 1
| OF
| JP/JPE
| Перехід, якщо паритет парний
| 1
| PF
| JNP/JP
| Перехід, якщо паритет непарний
| 1
| PF
| JMP
| Команда безумовного переходу. Дана команда додає значення вказане в операнді до значення в регістрі IP, який містить адресу команди, що розташована після JMP. Відповідно, якщо здійснюється перехід назад, то значення операнду буде від’ємне, якщо вперед – додатне.
| 1
| -
| LAHF
| Загрузка прапорців в регістр AH у виді: S Z * A * P * C (*- біти, що не використовуються)
| 0
| -
| LDS
| Загрузка регістру сегменту даних
| 2
| -
| LEA
| Загрузка відносної адреси
| 2
| -
| LES
| Загрузла регістру додатковогосегменту даних
| 2
| -
|
LOCK
| Блокування шини доступу до даних
| 0
| -
| LODS LODSB LODSW
| Загрузка однобайтового або двобайового рядка з пам’яті в регістр AL чи AX, відповідно. Регістрова пара DS:SI адресує в пам’яті байт (для LODSB) або слово (для LODSW). Якщо прапорець DF=0, то операція додає 1 (для байту) або 2 (для слова) до вмісту регістра SI. Якщо DF=1, то операція віднімає відповідні значення від SI.
| 2/0
| -
| LOOP
| Оператор циклу. Передає керування на мітку, вказану як операнд, поки значення в регістрі CX не стане рівне нулю.
| 1
| -
| LOOPE
LOOPZ
| Оператор циклу. Передає керування за адресою, вказаною в операнді якщо CX містить нульове значення і встановлений прапорець нуля, тобто ZF=1
| 1
| -
| LOOPNE
LOOPNZ
| Оператор циклу. Передає керування за адресою, вказаною в операнді якщо CX містить нульове значення і прапорець нуля скинуто, тобто ZF=0.
| 1
| -
| MOV
| Пересилання даних.
| 2
| -
| MOVS MOVSB MOVSW
| Пересилання рядка між областями пам’яті. Перший операнд адресується регістровою парою DS:SI, а другий – ES:DI. Для команди MOVSB пересилання відбувається по одному байти, а для команди MOVSW по два байти. Якщо прапорець DF=0, то пересилання відбувається зліва направо і регістри SI та DI збільшуються після кожного порівняння на 1(для MOVSB) чи на 2(для MOVSW). Якщо прапорець DF=1, то пересилання відбувається справа наліво і регістри SI та DI зменшуються на 1 чи 2.
| 2/0
| -
| MUL
| Множення беззнакових двійкових даних. Формати команди:
"Байт на байт". Множене перебуває в регістрі AL, а множник у байті пам'яті або в однобайтовом регістрі. Після множення добуток перебуває в регістрі AX.
"Слово на слово". Множене перебуває в регістрі AX, а множник - у слові пам'яті або у двобайтному регістрі. Після множення добуток знаходиться в подвійному слові, для якого потрібно два регістри: старша (ліва) частина добутку - в регістрі DX, а молодша (права) частина - в регістрі AX.
| 1
| AF,CF,OF,
PF,SF,ZF
| NEG
| Зміна знаку числа. Змінює війкове значення з додатного на від’ємне, а з від’ємного на додатне. Обраховує двійкове доповнення операнду: віднімає операнд від нуля та додає одиницю. Операндом може бути байт або слово в регістрі або в пам’яті.
| 1
| AF,CF,OF,
PF,SF,ZF
| NOP
| Відсутність операції. Використовується для видалення або вставки машинних кодів або для затримки виконання програми.
| 0
| -
| NOT
| Логічне «НЕ». Порозрядна інверсія бітів операнду. Встановлює протилежне значення бітів у байті чи слові, в регістрі чи в пам’яті. Прапорці при цьому не змінюються
| 1
| -
| OR
| Логічне «АБО». Порозрядна диз’юнкція бітів операндів. Якщо хоча б один з порівнюваних бітів рівний 1, то результат рівний 1, якщо порівнювані біти рівні 0, то результат - 0 .
| 2
| CF,OF,
PF,SF,ZF
| OUT
| Вивід байту або слова в порт. Передає у вихідний порт байт з регістру AL, або слово з АХ. Порт кодується як фіксований числовий операнд, або як змінна в регістрі DX.
| 2
| -
| POP
| Вилучення слова зі стеку. Передає слово, що розташоване у вершині стеку у вказаний операнд. Регістр SP вказує на поточне слово у вершині стеку. Команда вилучає слово зі стеку і збільшує значення SP на 2.
| 1
| -
| POPA
| Вилучення зі стеку всіх регістрів загального призначення.
Вилучає зі стеку вісім значень в регістри DI,SI,BP,SP,BX,DX,CX,AX у приведеній послідовності та збільшує SP на 16.
| 0
| -
| POPF
| Вилучення прапорців зі стеку. Передає слово, що розташоване у вершині стеку у регістр прапорців і збільшує значення SP на 2.
| 0
| AF,CF,OF,
PF,SF,ZF
| PUSH
| Занесення слова у стек. Зменшує SP на 2 і зберігає значення слова з пам’яті чи з регістра у новій вершині стеку.
| 1
| -
| PUSHA
| Запис у стек всіх загальних регістрів у такій послідовності: AX, CX, DX, BX, SP, BP,SI,DI та зменшує SP на16.
| 0
| -
| PUSHF
| Запис регістру прапорців у стек. Зменшує значення у SP на 2 та записує регістр прапорців у нову вершину стеку.
| 0
| -
| RCL
| Циклічний зсув вліво з участю CF.
| 1
| CF,OF
| RCR
| Циклічний зсув вправо з участю CF.
| 1
| CF,OF
| REP
| Префікс повтору. Кодується безпосередньо перед ланцюговою командою. Кількість повторів необхідно встановити в регістрі CX. Прапорець напрямку визначає напрямок повторюваної операції (зліва направо DF=0; справа наліво DF=1)
| -
| -
| REPE
| Префікс повтору. Повторювати операцію, поки ZF = 0. Припинити операцію при ZF ≠0 або CX=0.
| -
| -
| REPNE
| Префікс повтору. Повторювати операцію, поки ZF ≠ 0. Припинити операцію при ZF =0 або CX=0.
| -
| -
|
REPNZ
| Префікс повтору. Повторювати операцію, поки ZF ≠ 0. Припинити операцію при ZF =0 або CX=0.
| -
| -
| REPZ
| Префікс повтору. Повторювати операцію, поки ZF = 0. Припинити операцію при ZF ≠0 або CX=0
| -
| -
| RET
| Повернення з процедури. Передає керування з процедури в межах одного сегменту або між сегментами. Команда заносить слово з вершини стеку в регістр IP і збільшує значення SP на 2. Для міжсегментного повернення заносить наступне слово зі стеку у CS і ще раз збільшує SP на 2. Може мати числовий операнд, який додється до вказівника стеку SP.
| 0/1
| -
| ROL
| Циклічний зсув вліво.
| 1
| CF,OF
| ROR
| Циклічний зсув вправо.
| 1
| CF,OF
| SAHF
| Запис регістра прапорців з регістра AH.
| 0
| -
| SAL
| Арифметичний зсув вліво (на місце молодших бітів стають „0”).
| 1
| CF,OF,
PF,SF,ZF
| SAR
| Арифметичний зсув вправо (розмноження знакового розряду).
| 1
| CF,OF,
PF,SF,ZF
| SBB
| Віднімання з запозиченням. Тобто якщо прапорець CF має значення 1, то ця команда спочатку віднімає 1 від першого операнду, а вже потім віднімає від нього другий операнд. Формати команди аналогічні команді ADD.
| 2
| AF,CF,OF,
PF,SF,ZF
| SCAS
SCASB
SCASW
| Пошук байту чи слова в рядку. Для команди SCASB значення, що шукається повинно знаходитися у регістрі AL, а для команди SCASW – у регістрі AX. Регістрова пара ES:DI вказує на рядок в пам’ят, яки треба сканувати. Якщо Якщо DF=0, то сканування відбувається зліва направо і регістр DI збільшується на 1. Якщо DF=1, то сканування відбувається справа наліво і регістр DI на одиницю зменшується.
| 2/0
| AF,CF,OF,
PF,SF,ZF
| SHL
| Логічний зсув вліво (на місце молодших бітів стають „0”).
| 2
| -
| SHR
| Логічний зсув вправо (на місце старших бітів стають „0”).
| 2
| -
| STC
| Встановлення прапорця переносу: CF=1.
| 0
| CF=1
| STD
| Встановлення прапорця напрямку : DF=1.
| 0
| DF=1
| STI
| Встановлення прапорця переривання : ІF=1.
| 0
| IF=1
| STOS
STOS
STOSW
| Запис однобайтового чи двобайтового рядка в пам’ять. Для команди STOSB байт, що треба записати має бути в AL, а для STOSW має бути слово в AX. Пам’ять, куди треба записувати рядок, адресується регістровою парою ES:DI. Якщо DF=0, то запис відбувається зліва направо і регістр DI збільшується на 1(для STOSB) чи на 2(для STOSW). Якщо DF=1, то запис відбувається справа наліво і регістр DI зменшується.
| 0
| -
| SUB
| Віднімання двійкових даних. Операнди повинні бути однакової довжини: байт або слово. Формати команди аналогічні команді ADD.
| 2
| AF,CF,OF,
PF,SF,ZF
| TEST
| Логічне «І» - встановлюються прапорці, проте біти не змінюються.
| 2
| CF,OF,
PF,SF,ZF
| WAIT
| Перехід процесора в стан очікування, поки не відбудеться зовнішнє переривання. Використовується для синхронізації процесора із зовнішніми пристроями, або із співпроцесором.
| 0
| -
| XCHG
| Перестановка. Переставляє два байти, або два слова між двома регістрами, або між регістром і пам’яттю.
| 2
| -
| XLAT
| Перекодування. Транслює байти в інший формат, наприклад при переводі нижнього регістру у верхній. Для використання команди необхідно визначити таблицю перетворення і завантажити її адресу у регістр BX. Регістр AL повинен містити байт, який треба перекодувати. Операція використовує значення з AL як зміщення у таблиці, вибирає байт за цим зміщенням і записує його в AL.
| 0
| -
| XOR
| Логічне «виключне АБО». Якщо один з порівнюваних бітів рівний 0, а інший 1, то результат рівний 1, якщо порівнювані біти однакові, то результат -0-
| 2
| CF,OF,
PF,SF,ZF
|
скачати
|