Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Набір команд Асемблера в алфавітному порядку.



Набір команд Асемблера в алфавітному порядку.

Команда

Дія

Оп.

Пра

порці

AAA

Корекція для додавання ASCII кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра знаходиться між Ah і Fh або прапорець AF дорівнює 1, то до регістра AL додається 6, а до регістра AH додається 1, прапорці. У всіх випадках команда встановлює в 0 ліву шіст. цифру в регістрі AL. Результат - у регістрі AX.

 

AF, CF

AAD

Корекція ASCII коду діленого до безпосереднього ділення. Команда множить вміст AH на 10 (0Ah), додає результат до регістра AL і очищає регістр AH.

 

PF,SF,

ZF

AAM

Корекція результату множення ASCII кодів у регістрі AX. Команда ділить вміст регістра AL на 10 (0Ah) і записує частку в регістр AH, а остачу в AL.

 

PF,SF

ZF

AAS

Корекція для віднімання ASCII-кодів.

Команда перевіряє праву шіст.цифру (чотири біти) в регістрі AL. Якщо ця цифра лежить між A і F або прапорець AF дорівнює 1, то з регістра AL віднімається 6, а з регістра AH віднімається 1. У всіх випадках команда встановлює в 0 ліву шіст. цифру в регістрі AL.

 

AF, CF

ADC

Додавання з врахуванням переносу. Тобто якщо прапорець CF має значення 1, то ця команда додає 1 до першого операнду, а вже потім додає другий операнд.

 

AF,CF,OF,

PF,SF,ZF

ADD

Додавання двійкових даних. Операнди повинні бути однакової довжини: байт або слово. Команда може мати наступний формат:

ADD регістр-регістр;

ADD пам'ять-регістр;

ADD регістр-пам'ять;

ADD регістр-безпосереднє значення;

ADD пам’ять-безпосереднє значення.

 

AF,CF,OF,

PF,SF,ZF

AND

Логічне «І».Порозрядна кон’юнкція бітів операндів. Якщо відповідні біти операндів рівні 1, то у першому(лівому) операнді встановлюється біт=1.

 

CF,OF,

PF,SF,ZF

CALL

Виклик процедури.

 

-

CBW

Перетворення байту у слово.

Команда розширяє однобайтне арифметичне значення в регістрі AL, до розміру слова у регістрі AX. Розмножується знаковий біт.

 

-

CLC

Скидання прапорця переносу. CF=0

 

CF=0

CLD

Скидання прапорця напрямку. DF=0

 

DF=0

CLI

Скидання прапорця переривання. IF=0

 

IF=0

CMC

Перемикання прапорця переносу. Інвертує значення CF.

 

CF

CMP

Порівняння двох полів даних.

Команда виконує віднімання другого операнду від першого, але значення операндів на змінює. Операнди повинні бути однакової довжини: байт або слово. Команда може мати наступний формат:

CMP регістр-регістр;

CMP пам'ять-регістр;

CMP безпосереднє значення -регістр;



CMP регістр-пам’ять;

CMP безпосереднє значення –пам’ять

 

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. Розмножується знаковий біт.

 

-

DAA

Корекція для додавання BCD кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра знаходиться між Ah і Fh або прапорець AF дорівнює 1, то до регістра AL додається 6 і AF=1, якщо AL містить значення більше 9F, або CF=1, то додається 60h до регістра AL і CF=1.

 

AF,CF

PF,SF,ZF


 

DAS

Корекція для віднімання BCD кодів. Команда перевіряє праву шістнадцяткову. цифру (4 біти) у регістрі AL. Якщо ця цифра більше за 9, або прапорець AF дорівнює 1, то від AL віднімається 60h і CF=1.

 

AF,CF

PF,SF,ZF

DEC

Віднімання одиниці до байту або слова в регістрі або пам’яті.

 

AF,CF

PF,SF,ZF

DIV

Ділення без знакових двійкових даних. Формати команд:

"Слово на байт". Ділене перебуває в регістрі AX, а дільник - у байті пам'яті або а однобайтовому регістрі. Після ділення остача виходить у регістрі AH, а частка - в AL.

"Подвійне слово на слово". Ділене перебуває в регістровій парі DX:AX, а дільник - у слові пам'яті або в регістрі. Після ділення остача виходить у регістрі DX, а частка в регістрі AX.

 

AF,CF,OF,

PF,SF,ZF

ESC

Перемикання на співпроцесор. Забезпечує використання співпроцесора для виконання спеціальних операцій з рухомою крапкою.

 

-

HLT

Зупинка процесора.

 

-

IDIV

Ділення знакових двійкових даних. Формати команд аналогічні DIV.

 

AF,CF,OF,

PF,SF,ZF

IMUL

Множення знакових двійкових даних. Формати команд аналогічні MUL.

 

AF,CF,OF,

PF,SF,ZF

IN

Ввід байту або слова даних з порту.

Передається з вхідного порту один байт в регістр AL, або два байти в регістр AX. Порт кодується як безпосередній операнд, або як змінна в регістрі DX.

 

-

INC

Додавання одиниці до байту або слова в регістрі або пам’яті.

 

AF,CF

PF,SF,ZF

INT

Переривання.

 

IF,TF

INTO

Переривання по переповненню

 

-

IRET

Повернення з обробки переривання

 

AF,CF,OF,

PF,SF,ZF

JE/JZ

Перехід, якщо рівно/нуль

 

ZF

JNE/JNZ

Перехід, якщо не рівно/не нуль

 

ZF

JA/JNBE

Перехід, якщо вище/не нижче або рівно

 

ZF,CF

JAE/JNB

Перехід, якщо вище або рівно/ не нижче

 

CF

JB/JNAE

Перехід, якщо нижче/не вище або рівно

 

CF

JBE/JNA

Перехід, якщо нижче або рівно/не вище

 

CF,AF

JE/JZ

Перехід, якщо рівно/нуль

 

ZF

JNE/JNZ

Перехід, якщо не рівно/не нуль

 

ZF

JG/JNLE

Перехід, якщо більше/не менше або рівно

 

ZF,SF,OF

JGE/JNL

Перехід, якщо більше або рівно/ не менше

 

SF,OF

JL/JNE

Перехід, якщо менше/не більше або рівно

 

SF,OF

JLE/JNG

Перехід, якщо менше або рівно/не більше

 

ZF,SF,OF

JS

Перехід, якщо є знак(від’ємне)

 

SF

JNS

Перехід, якщо немає знаку(додатнє)

 

SF

JC

Перехід, якщо є перенос (аналогічно JB)

 

CF

JNC

Перехід, якщо немає переносу

 

CF

JO

Перехід, якщо є переповнення

 

OF

JNO

Перехід, якщо немає переповнення

 

OF

JP/JPE

Перехід, якщо паритет парний

 

PF

JNP/JP

Перехід, якщо паритет непарний

 

PF

JMP

Команда безумовного переходу. Дана команда додає значення вказане в операнді до значення в регістрі IP, який містить адресу команди, що розташована після JMP. Відповідно, якщо здійснюється перехід назад, то значення операнду буде від’ємне, якщо вперед – додатне.

 

-

LAHF

Загрузка прапорців в регістр AH у виді: S Z * A * P * C (*- біти, що не використовуються)

 

-

LDS

Загрузка регістру сегменту даних

 

-

LEA

Загрузка відносної адреси

 

-

LES

Загрузла регістру додатковогосегменту даних

 

-


 

LOCK

Блокування шини доступу до даних

 

-

LODS LODSB LODSW

Загрузка однобайтового або двобайового рядка з пам’яті в регістр AL чи AX, відповідно. Регістрова пара DS:SI адресує в пам’яті байт (для LODSB) або слово (для LODSW). Якщо прапорець DF=0, то операція додає 1 (для байту) або 2 (для слова) до вмісту регістра SI. Якщо DF=1, то операція віднімає відповідні значення від SI.

2/0

-

LOOP

Оператор циклу. Передає керування на мітку, вказану як операнд, поки значення в регістрі CX не стане рівне нулю.

 

-

LOOPE

LOOPZ

Оператор циклу. Передає керування за адресою, вказаною в операнді якщо CX містить нульове значення і встановлений прапорець нуля, тобто ZF=1

 

-

LOOPNE

LOOPNZ

Оператор циклу. Передає керування за адресою, вказаною в операнді якщо CX містить нульове значення і прапорець нуля скинуто, тобто ZF=0.

 

-

MOV

Пересилання даних.

 

-

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.

 

AF,CF,OF,

PF,SF,ZF

NEG

Зміна знаку числа. Змінює війкове значення з додатного на від’ємне, а з від’ємного на додатне. Обраховує двійкове доповнення операнду: віднімає операнд від нуля та додає одиницю. Операндом може бути байт або слово в регістрі або в пам’яті.

 

AF,CF,OF,

PF,SF,ZF

NOP

Відсутність операції. Використовується для видалення або вставки машинних кодів або для затримки виконання програми.

 

-

NOT

Логічне «НЕ». Порозрядна інверсія бітів операнду. Встановлює протилежне значення бітів у байті чи слові, в регістрі чи в пам’яті. Прапорці при цьому не змінюються

 

-

OR

Логічне «АБО». Порозрядна диз’юнкція бітів операндів. Якщо хоча б один з порівнюваних бітів рівний 1, то результат рівний 1, якщо порівнювані біти рівні 0, то результат - 0.

 

CF,OF,

PF,SF,ZF

OUT

Вивід байту або слова в порт. Передає у вихідний порт байт з регістру AL, або слово з АХ. Порт кодується як фіксований числовий операнд, або як змінна в регістрі DX.

 

-

POP

Вилучення слова зі стеку. Передає слово, що розташоване у вершині стеку у вказаний операнд. Регістр SP вказує на поточне слово у вершині стеку. Команда вилучає слово зі стеку і збільшує значення SP на 2.

 

-

POPA

Вилучення зі стеку всіх регістрів загального призначення.

Вилучає зі стеку вісім значень в регістри DI,SI,BP,SP,BX,DX,CX,AX у приведеній послідовності та збільшує SP на 16.

 

-

POPF

Вилучення прапорців зі стеку. Передає слово, що розташоване у вершині стеку у регістр прапорців і збільшує значення SP на 2.

 

AF,CF,OF,

PF,SF,ZF

PUSH

Занесення слова у стек. Зменшує SP на 2 і зберігає значення слова з пам’яті чи з регістра у новій вершині стеку.

 

-

PUSHA

Запис у стек всіх загальних регістрів у такій послідовності: AX, CX, DX, BX, SP, BP,SI,DI та зменшує SP на16.

 

-

PUSHF

Запис регістру прапорців у стек. Зменшує значення у SP на 2 та записує регістр прапорців у нову вершину стеку.

 

-

RCL

Циклічний зсув вліво з участю CF.

 

CF,OF

RCR

Циклічний зсув вправо з участю CF.

 

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

Циклічний зсув вліво.

 

CF,OF

ROR

Циклічний зсув вправо.

 

CF,OF

SAHF

Запис регістра прапорців з регістра AH.

 

-

SAL

Арифметичний зсув вліво (на місце молодших бітів стають „0”).

 

CF,OF,

PF,SF,ZF

SAR

Арифметичний зсув вправо (розмноження знакового розряду).

 

CF,OF,

PF,SF,ZF

SBB

Віднімання з запозиченням. Тобто якщо прапорець CF має значення 1, то ця команда спочатку віднімає 1 від першого операнду, а вже потім віднімає від нього другий операнд. Формати команди аналогічні команді ADD.

 

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”).

 

-

SHR

Логічний зсув вправо (на місце старших бітів стають „0”).

 

-

STC

Встановлення прапорця переносу: CF=1.

 

CF=1

STD

Встановлення прапорця напрямку: DF=1.

 

DF=1

STI

Встановлення прапорця переривання: ІF=1.

 

IF=1

STOS

STOS

STOSW

Запис однобайтового чи двобайтового рядка в пам’ять. Для команди STOSB байт, що треба записати має бути в AL, а для STOSW має бути слово в AX. Пам’ять, куди треба записувати рядок, адресується регістровою парою ES:DI. Якщо DF=0, то запис відбувається зліва направо і регістр DI збільшується на 1(для STOSB) чи на 2(для STOSW). Якщо DF=1, то запис відбувається справа наліво і регістр DI зменшується.

 

-

SUB

Віднімання двійкових даних. Операнди повинні бути однакової довжини: байт або слово. Формати команди аналогічні команді ADD.

 

AF,CF,OF,

PF,SF,ZF

TEST

Логічне «І» - встановлюються прапорці, проте біти не змінюються.

 

CF,OF,

PF,SF,ZF

WAIT

Перехід процесора в стан очікування, поки не відбудеться зовнішнє переривання. Використовується для синхронізації процесора із зовнішніми пристроями, або із співпроцесором.

 

-

XCHG

Перестановка. Переставляє два байти, або два слова між двома регістрами, або між регістром і пам’яттю.

 

-

XLAT

Перекодування. Транслює байти в інший формат, наприклад при переводі нижнього регістру у верхній. Для використання команди необхідно визначити таблицю перетворення і завантажити її адресу у регістр BX. Регістр AL повинен містити байт, який треба перекодувати. Операція використовує значення з AL як зміщення у таблиці, вибирає байт за цим зміщенням і записує його в AL.

 

-

XOR

Логічне «виключне АБО». Якщо один з порівнюваних бітів рівний 0, а інший 1, то результат рівний 1, якщо порівнювані біти однакові, то результат -0-

 

CF,OF,

PF,SF,ZF

 


Дата добавления: 2015-09-29; просмотров: 18 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Assoc AT attrib break cacls CALL CD CHCP chdir chkdsk chkntfs cls CMD color comp compact convert COPY DATE del DIR diskcomp diskcopy doskey echo endlocal erase exit fc find findstr FOR Format ftype 4 страница | 

mybiblioteka.su - 2015-2024 год. (0.052 сек.)