Ім'я файлу: 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







скачати

© Усі права захищені
написати до нас