Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС / МПС лаб / МПС лаб / Метод_МПС_I.doc
Скачиваний:
16
Добавлен:
28.03.2015
Размер:
336.9 Кб
Скачать

6.1.Операции над целыми числами

6.1.1. Пересылка данных и адресов

Пересылка данных без преобразования:

MOVПересылка операнда

PUSHЗапись операнда в стек

PUSHAЗапись в стек содержимого всех регистров

POPЧтение операнда из стека

POPAЧтение из стека содержимого всех регистров

XCHGОбмен между регистрами или памятью и регистром

XLATПреобразование кодов

BSWAPПерестановка байтов

Пересылка данных с преобразованием:

MOVSXПересылка байта или слова с расширением знака

MOVZXПересылка байта или слова с расширением нулями

Ввод-вывод данных:

INВвод операнда из порта в аккумулятор

OUTВывод операнда из аккумулятора в порт

Загрузка адреса и селектора:

LEAЗагрузка эффективного адреса ЕА в регистр

LDSЗагрузка селектора в регистрDS

LESЗагрузка селектора в регистрES

LFSЗагрузка селектора в регистрFS

LGSЗагрузка селектора в регистрGS

LSSЗагрузка селектора в регистрSS

6.1.2. Арифметические операции

Сложение:

ADDСложение операндов

ADCСложение операндов с признакомCF(перенос)

XADDОбмен операндами и сложение

INCИнкремент операнда

AAAASCII-коррекция результата сложения

DAAДесятичная коррекция результата сложения

Вычитание:

SUBВычитание операндов

SBBВычитание операндов с признакомCF(заем)

DECДекремент операнда

CMPСравнение операндов

CMPXCHGСравнение и обмен операндами

NEGИзменение знака операнда (с переводом в дополнительный код)

AASASCII-коррекция результата вычитания

DASДесятичная коррекция результата вычитания

Умножение:

MULБеззнаковое умножение

IMULЗнаковое (целочисленное) умножение

AMMASCII-коррекция результата умножения

Деление:

DIVБеззнаковое деление

IDIVЗнаковое (целочисленное) деление

AADASCII-коррекция результата деления

Изменения разрядности путем расширения знака:

CBWПреобразование байта (AL) в слово (AX)

CWDEПреобразование слова (АХ) в двойное слово (ЕАХ)

CWDПреобразование слова (АХ) в двойное слово (DX,AX)

CDQПреобразование двойного слова (ЕАХ) в учетверенное слово (EDX,EAX)

6.1.3. Логические операции и сдвиги

Логические операции:

NOTИнверсия операнда (логическое НЕ)

ANDКонъюнкция операндов (логическое И)

ORДизъюнкция операндов (логическое ИЛИ)

XORНеравнозначность операндов (исключающее ИЛИ)

TESTЛогическое сравнение операндов (установка признаковZF,SF,PF)

Сдвиги:

SHL/SALСдвиг влево

SHRЛогический сдвиг вправо

SARАрифметический сдвиг вправо

SHLDДвухоперандный сдвиг влево

SHRDДвухоперандный сдвиг вправо

ROLЦиклический сдвиг влево

RORЦиклический сдвиг вправо

RCLЦиклический сдвиг влево через перенос (CF)

RCRЦиклический сдвиг вправо через перенос (CF)

Операции с битами:

ВТ Проверка бита

BTSПроверка и установка бита

BTRПроверка и сброс бита

ВТС Проверка и инверсия бита

BSFПрямое сканирование битов

BSRОбратное сканирование битов

Операции со строками символов:

LODSЗагрузка символа в аккумулятор

STOSЗапись символа из аккумулятора

INSВвод символа

OUTSВывод символа

MOVSПересылка символа

CMPSСравнение символов

SCASСканирование строки символов

6.2. Операции управления

6.2.1. Управление программой

Безусловная передача управления:

JMPБезусловный переход

CALLВызов подпрограммы

RETВозврат из подпрограммы

Условные переходы без учета знака:

JA/JNBEПереход, если выше (не ниже и не равно)

JAE/JNB/JNCПереход, если (CF)=0: выше или равно (не ниже)

JB/JNAE/JCПереход, если (CF)=1: ниже (не выше и не равно)

JBE/JNAПереход, если ниже или равно (не выше)

JE/JZПереход, если равно (нуль): (ZF)=1

JNE/JNZПереход, если не равно (не нуль): (ZF)=0

JP/JPEПереход, если четность: (PF)=1

JNP/JPOПереход, если нечетность: (PF)=0

Условные переходы с учетом знака:

JG/JNLEПереход, если больше (не меньше и не равно)

JGE/JNLПереход, если больше или равно (не меньше)

JL/JNGEПереход, если меньше (не больше и не равно)

JLE/JNGПереход, если меньше или равно (не больше)

JSПереход, если отрицательно: (SF)=1

JNSПереход, если положительно (SF)=0

JOПереход, если переполнение: (OF)=1

JNOПереход, если нет переполнения (OF)=0

Условная установка байта:

SETA/SETNBEУстановка, если выше (не ниже и не равно)

SETAE/SETNBУстановка, если выше или равно (не ниже)

SETB/SETNAEУстановка, если ниже (не выше и не равно)

SETBE/SETNAУстановка, если ниже или равно (не выше)

SETE/SETZУстановка, если равно (нуль): (ZF)=1

SETNE/SETNZУстановка, если не равно (не нуль): (ZF)=0

SETP/SETPEУстановка, если четность: (PF)=1

SETNP/SETPOУстановка, если нечетность: (PF)=0

SETG/SETNLEУстановка, если не больше (не меньше и не равно)

SETGE/SETNLУстановка, если больше или равно (не меньше)

SETL/SETNGEУстановка, если меньше (не больше и не равно)

SETLE/SETNGУстановка, если меньше и не равно (не больше)

SETSУстановка, если отрицательно: (SF)=1

SETNSУстановка, если положительно: (SF)=0

SETOУстановка, если переполнение: (OF)=1

SETNOУстановка, если нет переполнения: (OF)=0

Прерывания:

INTПрерывание

INT0 Прерывание по переполнению: (OF)=1

INT3 Прерывание в контрольной точке

IRETВозврат из подпрограммы прерывания

CLIЗапрещение прерываний

STIРазрешение прерываний

Организация циклов:

LOOPРеализация циклов, пока (ECX)≠0

LOOPE/LOOPZРеализация циклов, пока (ECX)≠0 или (ZF)=1

LOOPNE/LOOPNZРеализация циклов, пока (ECX)≠0 или (ZF)=0

JCXZ(JECXZ) Реализация циклов, пока (СХ)=0 или (ЕСХ)=0

Операции над признаками:

LAHFЗагрузка признаков в регистр АН

SAHFЗапись содержимого АН в регистр признаков

PUSHFЗапись содержимого регистра признаков в стек

POPFЧтение содержимого регистра признаков из стека

CLCСброс признака переноса: (CF)=0

STCУстановка признака переноса: (CF)=1

CMCИнвертирование признака переноса (СF)

CLDСброс признака направления: (DF)=0

CTDУстановка признака направления: (DF)=1

Соседние файлы в папке МПС лаб