Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Мнемоника команд микропроцессора 8086



  Мнемокод Операнд 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; Прочитано: 890 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...