![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Мнемокод | Операнд | Nb | nt | Описание | ||
MOV | r,r r,m m,r ac,m m,ac r,d m,d r,sr sr,r m,sr sr,m | 2-4 2-4 2-3 3-6 2-4 2-4 | 8+E 9+E 10+E 9+E 8+E | Пересылает один байт или одно слово между регистрами или между регистром и памятью, а также передает непосредственное значение в регистр или в память. Например:MOV AX, SI – содержимое индексного регистра SI записывается в аккумулятор. | ||
PUSH | r m sr | 2-4 | 16+E | Сохраняет значение слова (адрес или элемент данных) в стеке для последующего использования. Например: PUSH AX. | ||
PUSHF | - | Сохраняет значения флагов из флагового регистра в стеке для последующего использования. | ||||
POP | r m sr | 2-4 | 17+E | Передает слово (помещенное ранее в стек) в указанный операнд. Например: POP BX. | ||
POPF | - | Передает биты (помещенные ранее в стек) во флаговый регистр. | ||||
XCHG | r,r | Переставляет два байта или два слова между двумя регистрами или между регистром и памятью. Например: XCHG AX,BX. | ||||
XLAT | - | Транслирует байты в другой формат, например, при переводе нижнего регистра в верхний или при перекодировке ASCII-кода в EBCDIC-код. | ||||
IN | аc, p ac,[DX] | Передает из входного порта один байт в регистр AL или два байта в регистр АХ. Если адрес порта байтовый, то он прямо указывается в команде, иначе косвенно через регистр DX. Например: IN AX,DX. | ||||
OUT | p,ac [DX],ac | Передает в выходной порт байт из регистра AL или слово из регистра AХ. Адресация как в команде IN. Например: OUT DX, AX. | ||||
LEA | r,m | 3-4 | 2*E | Загружает адрес смещения переменной в регистр r. Например: LEA BX, Table. | ||
LDS LES | r,m r,m | 3-4 3-4 | 16+E 16+E | Загружает сегментный адрес переменной в DS (ES) и адрес смещения переменной в регистр r для обеспечения доступа к данной переменной. Например: LDS SI, Table | ||
INC | rm | 2-4 | 15+E | Прибавляет 1 к байту или слову в регистре или в памяти. Например: INC СХ | ||
DEC | rm | 2-4 | 15+E | Вычитает 1 из байта или слова в регистре или в памяти. Например: DEC СХ. | ||
NEG | rm | 2-4 | 16+E | Меняет двоичное значение из положительного в отрицательное и из отрицательного в положительное. Операндом может быть байт или слово в регистре или в памяти. Например: NEG AX | ||
NOT | rm | 2-4 | 16+E | Меняет нулевые биты на единичные и наоборот. Операндом может быть байт или слово в регистре или в памяти. Например: NOT AX | ||
ADD | r,r r,m m,r r,d ac,d m,d | 2-4 2-4 3-4 2-3 3-6 | 9+E 16+E 17+E | ADD: складывает байт или слово в регистре, памяти или непосредственное значение с регистром или памятью. | ||
ADC | r,r r,m m,r r,d ac,d m,d | 2-4 2-4 3-4 2-3 3-6 | 9+E 16+E 17+E | ADC: используется при сложении многословных величин для учета бита переполнения в последующих фазах операции. Например: ADC AX, BX. | ||
SUB | SUB: вычитает байт или слово в регистре, памяти или непосредственное значение из регистра или памяти. Например: SUB AX, BX. | |||||
SBB | SBB: используется при вычитании многословных двоичных величин для учета единичного бита переполнения в последующей фазе операции. Например: SBB AX, BX. | |||||
CMP | CMP: сравнивает содержимое двух полей данных. Фактически команда CMP вычитает второй операнд из первого, но содержимое полей не изменяет. Например: CMP AX, DX. | |||||
AND(1) | AND: команда выполняет поразрядную конъюнкцию (И) битов двух операндов. Например: AND AX, DX. | |||||
OR(1) | OR: выполняет поразрядную дизъюнкцию (ИЛИ) над битами двух операндов. Например: OR AX, DX. | |||||
XOR(1) | XOR: выполняет логическую операцию исключающего ИЛИ над битами двух операндов. Например: AX, DX. | |||||
TEST(2) | TEST: команда выполняет проверку байта или слова на определенную битовую комбинацию. Например: TEST AL, 01110101 (исполняется также, как и AND, но не изменяет операнды) | |||||
DAA DAS AAA AAS | - | Команды коррекции при сложении и вычитании двоично-десятичных чисел в упакованном и распакованном формате | ||||
AAM | - | ASCII- коррекция для умножения (распакованный 2-10 код) | ||||
AAD | - | ASCII- коррекция для деления (распакованный 2-10 код) | ||||
MUL(3) IMUL DIV DIV | r/m | 2-4 2-4 2-4 2-4 | MUL: умножает без знаковое множимое (8 или 16 бит), которое находится в аккумуляторе(АХ или Аl) на без знаковый множитель(8 или 16 бит). Например: MUL BX. Произведение размещается в регистровой паре DX:AX. | |||
IMUL: выполняет умножение на знаковый множитель (8 или 16 бит). Левый единичный бит рассматривается как знак минус для отрицательных чисел. Например IMUL BX. Произведение размещается в регистровой паре DX:AX. | ||||||
DIV: выполняет деление без знакового делимого (16 или 32 бит) на без знаковый делитель (8 или 16 бит). | ||||||
IDIV: выполняет деление знакового делимого (16 или 32 бит) на знаковый делитель (8 или 16 бит). Делимое в АХ либо DX:AX | ||||||
CLC | - | Очистка флага переноса в регистре F | ||||
CMC | - | Инвертирование флага переноса в регистре F | ||||
STC | - | Установка флага переноса в регистре F | ||||
CLD | - | Очистка флага DF в регистре F | ||||
STD | - | Установка флага DF в регистре F | ||||
STI | - | Установка флага IF в регистре F | ||||
CBW | - | Расширение байта до слова (копируется знаковый разряд в старший байт, байт должен находиться в регистре AL, а результат в регистре AX). | ||||
CWD | - | Расширяет арифметическое значение в регистре АХ до размеров двойного слова в регистровой паре DX:AX, дублируя при этом знаковый бит 15-й в регистре DX. | ||||
INT | - type | Прерывает выполнение программы и передает управление по одному из 256 адресов (векторов прерывания). | ||||
INT0 | - | 53/4 | Приводит к прерыванию при возникновении переполнения (флаг OF установлен в 1). | |||
CALL | Disp R M | 2-4 | 21+E | Выполняет короткий или длинный вызов процедуры для связи подпрограмм. | ||
SHL SHR SAL SAR ROL ROR RCL RCR | r, cl m, cl В регистре СL помещается число сдвигов | 2-4 2-4 | 15+E 8+4E 20+E+4N | Команды SHR и SHL - это логический сдвиг вправо (влево). Содержимое операнда сдвигается вправо (влево) на количество бит определяемых счетчиком сдвига. Слева (справа) в позицию старшего знакового бита (в позицию младшего бита) вписываются нули. Например, SHR BX,СL | ||
Команда SAL арифметический сдвиг влево действует аналогично команде SHL. | ||||||
Команда SAR сдвигает биты вправо определенное число раз и слева в освобождающийся биты (кроме знакового) записываются нули, а знаковый бит сохраняет своё значение. | ||||||
ROR ROL Выполняет циклический сдвиг (ротацию) битов влево или вправо. Данные операции могут выполняться в байте или в слове, в регистре или в памяти. | ||||||
RCR RCL Выполняет циклический сдвиг битов (ротацию) влево или вправо через флаг CF. Для команды RCL значение флага CF записывается в бит 0, а самый левый бит записывается во флаг CF; все другие биты сдвигаются влево. Для команды RCR значение флага CF записывается в самый левый бит, а бит 0 записывается во флаг CF; все другие биты сдвигаются вправо. | ||||||
JMP | DispRM | 2-3 2-4 | 18+E | Выполняет переход по указанному адресу при любых условиях. Команда JMP заносит в регистр IP необходимый адрес перехода. При межсегментном переходе в регистр CS заносится также новый сегментный адрес. | ||
Jсоnd(4) | Disp | 8/4 | Команды условного перехода. Смотри таблицу 7. | |||
RET | - d | Возвращает управление из процедуры, вызванной ранее командой CALL. Команда RET заносит слово из вершины стека в регистр IP и увеличивает значение SP на 2. Для межсегментного возврата также еще раз заносит слово из новой вершины стека в регистр СS. | ||||
LOOP | disp | 17/5 | Управляет выполнением группы команд определенное число раз. До начала цикла в регистр CX должно быть загружено число выполняемых циклов. | |||
LOOPZ | disp | 18/6 | Управляет выполнением группы команд определенное число раз или пока установлен флаг ZF (в единичное состояние). | |||
LOOPNZ JCXZ | disp disp | 18/6 18/6 | Управляет выполнением группы команд определенное число раз или пока сброшен флаг ZF (в нулевое состояние). | |||
Выполняет передачу управления по указанному в операнде адресу, если значение в регистре CX равно нулю. | ||||||
IRET | - | Обеспечивает возврат из подпрограммы обработки прерывания. | ||||
REP | - | Повторяет цепочечную операцию определенное число раз. | ||||
MOVS (5) | - | Пересылает данные между областями памяти. Цепочечная команда | ||||
CMPS | - | 9+13 | Сравнивают строки любой длины. Цепочечная команда | |||
SCAS | - | Выполняет поиск определенного байта или слова в строке. Цепочечная команда | ||||
LODS | - | Загружает из памяти один байт в регистр AL или одно слово в регистр AХ. Цепочечная команда | ||||
STOS | - | Сохраняет байт или слово в памяти. Цепочечная команда | ||||
WAIT | - | Позволяет процессору оставаться в состоянии ожидания, пока не произойдет внешнее прерывание. | ||||
NOP | - | Применяется для удаления или вставки машинных кодов или для задержки выполнения программы. | ||||
HLT | - | Останов | ||||
ESC | r m | 2-4 | 8+E | Обеспечивает использование сопроцессора | ||
LOCK | - | Запрещает другим сопроцессорам одновременно изменять элементы данных. | ||||
1. Логические команды (в отличии от приведенных в этом же блоке арифметических команд) не имеют формата, в котором при работе со словами (т.е. при W=1) указывается однобайтовый непосредственный операнд d.
2. Команда TEST не имеет варианта m,r со временем выполнения 16+Е, т.к. он был бы эквивалентен более короткому варианту r,m.
3. Для команд умножения и деления указано время выполнения при работе с операндами максимально допустимой длины, размещенными в регистрах.
4. В командах условного перехода типы условий приведены в табл.7.
5. Дано время выполнения одного цикла цепочечной команды, имеющей префикс повторения.
Таблица 7
Дата публикования: 2015-11-01; Прочитано: 922 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!