Основные команды языка ASSEMBLER
### Команда MOV #########################################################
### Осуществляет передачу содержимого второго операнда в первый.
### Регистр флажков не модифицируется.
### Форматы команды:
7 0
+-------------------------+ l = 2 байта +----------------+
¦ MOV Регистр1, Регистр2 ¦ t = 2 такта ¦ 100010 d w ¦
+-------------------------+ ¦----------------¦
+-------------------------+ l = 3-4 байта ¦ mod reg r/m ¦
¦ MOV Регистр, Память ¦ t = 9+ЕА тактов ¦----------------¦
+-------------------------+ ¦ dispL ¦
+-------------------------+ l = 3-4 байта +----------------¦
¦ MOV Память, Регистр ¦ t = 8+ЕА тактов ¦ dispH ¦
+-------------------------+ +----------------+
7 0
+-------------------------+ l = 3-6 байта +----------------+
¦ MOV Память, Константа ¦ t = 10+ЕА тактов ¦ 1100011 w ¦
+-------------------------+ ¦----------------¦
¦ mod 000 r/m ¦
¦----------------¦
¦ dispL ¦
¦----------------¦
¦ dispH ¦
¦----------------¦
¦ dataL ¦
¦----------------¦
¦ dataH ¦
+----------------+
7 0
+-------------------------+ l = 2-3 байта +----------------+
¦ MOV Регистр, Константа ¦ t = 4 такта ¦ 1011 w reg ¦
+-------------------------+ ¦----------------¦
Нельзя определять сегментные регистры. ¦ dataL ¦
¦----------------¦
¦ dataH ¦
+----------------+
7 0
+-------------------------+ l = 3 байта +----------------+
¦ MOV Аккумулятор, Память¦ t = 10 тактов ¦ 1010000 w ¦
+-------------------------+ ¦----------------¦
¦ dispL ¦
¦----------------¦
¦ dispH ¦
+----------------+
7 0
+-------------------------+ l = 3 байта +----------------+
¦ MOV Память, Аккумулятор¦ t = 10 тактов ¦ 1010001 w ¦
+-------------------------+ ¦----------------¦
¦ dispL ¦
¦----------------¦
¦ dispH ¦
+----------------+
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ MOV СегРегистр, Память ¦ t = 8+ЕА тактов ¦ 10001110 ¦
+-------------------------+ ¦----------------¦
+-------------------------+ l = 2-4 байта ¦ mod 0sreg r/m ¦
¦ MOV СегРегистр, Регистр ¦ t = 8+ЕА тактов ¦----------------¦
+-------------------------+ ¦ dispL ¦
Нельзя использовать регистр CS, т.к. +----------------¦
результат операции будет неопределен. ¦ dispH ¦
При инициализации рекомендуется +----------------+
использовать регистр АХ.
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ MOV Память, СегРегистр ¦ t = 9+ЕА тактов ¦ 10001100 ¦
+-------------------------+ ¦----------------¦
+-------------------------+ l = 2-4 байта ¦ mod 0sreg r/m ¦
¦ MOV Регистр, CегРегистр ¦ t = 9+ЕА тактов ¦----------------¦
+-------------------------+ ¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Команда XCHG #########################################################
### Обменивает содержимое двух операндов. В качестве операндов нельзя
использовать сегментные регистры.
### Регистр флажков не модифицируется.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ XCHG Регистр, AX ¦ t = тактов ¦ 10010 reg ¦
+-------------------------+ +----------------+
Команда XCHG AX, AX используется
как команда пустой операции NOP.
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ XCHG Регистр1, Регистр2 ¦ t = 4 такта ¦ 1000011 w ¦
+-------------------------+ ¦----------------¦
+-------------------------+ l = 2-4 байта ¦ mod reg r/m ¦
¦ XCHG Регистр, Память ¦ t = 17+ЕА тактов ¦----------------¦
+-------------------------+ ¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Команда XLAT #########################################################
### Заменяет содержимое аккумулятора AL на значение, выбираемое из таблицы,
на которую указывает регистр BX. Содержимое AL интепретируется как индекс
выбираемого байта.
+-----------------------------------+ ¦ П А М Я Т Ь
ВХ ¦ эффективный адрес таблицы ------------------¦----------------¦
+-----------------------------------+ ¦ ¦
¦ ¦----------------¦
+-----------------+ ¦ ¦ ¦
Регистр AL перед ¦ и н д е к с ----------¦ ¦----------------¦
выполнением XLAT +-----------------+ ¦ ¦ ¦
¦ ¦----------------¦
¦ ¦
+-----------------+ -----¦----------------¦
Регистр AL после ¦ содержимое ----------------- содержимое ¦
выполнения XLAT +-----------------+ ¦----------------¦
¦
### Регистр флажков не модифицируется.
### Формат команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ XLAT ¦ t = 11 тактов ¦ 11010111 ¦
+-------------------------+ +----------------+
### Примечание:
Смещение адресного значения таблицы можно загрузить в регистр ВХ с
помощью команд LEA, LDS или другими способами.
### Команда LEA #########################################################
### Загружает в первый операнд эффективный адрес памяти, который
вычисляется в соответствии с указанным режимом адресации второго опреанда.
В качестве первого операнда нельзя использовать сегментные регистры.
### Регистр флажков не модифицируется.
### Формат команды:
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ LEA Регистр, Память ¦ t = 2+ЕА тактов ¦ 10001101 ¦
+-------------------------+ ¦----------------¦
¦ mod reg r/m ¦
¦----------------¦
¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Примечание:
Во многих случаях команда LEA идентична команде MOV с непосредственным
операндом. Например:
LEA BX, EXWORD - эквивалентно - MOV BX, OFFSET EXWORD
(оператор OFFSET сообщает,
что надо переслать СМЕЩЕНИЕ
адресного значения переменной)
### Команда LDS #########################################################
### Загружает в первый операнд (обычно регистр SI) значение смещения,
расположенное по адресу второго операнда, а в регистр DS загружает
значение сегмента, расположенное по адресу второго операнда + 2.
### Регистр флажков не модифицируется.
### Формат команды:
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ LDS Регистр, Память ¦ t = 16+ЕА тактов ¦ 11000101 ¦
+-------------------------+ ¦----------------¦
¦ mod reg r/m ¦
¦----------------¦
¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Примечание:
Указатель ( сегмент: смещение ) можно организовать с помощью директивы
DD, если операндом директивы будет адресное выражение. Например:
...............................
TABLE DB '0123456789'
...............................
TABLE POINTER DD TABLE ; В переменной TABLE POINTER
............................... содержится указатель на TABLE
............................... сегмент:смещение
...............................
LDS SI, TABLE POINTER ; Из переменной TABLE POINTER в
............................... регистр DS загружается сегмент,
............................... в регистр SI - смещение
### Команда LES #########################################################
### Загружает в первый операнд (обычно регистр DI) значение смещения,
расположенное по адресу второго операнда, а в регистр ES загружает
значение сегмента, расположенное по адресу второго операнда + 2.
### Регистр флажков не модифицируется.
### Формат команды:
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ LES Регистр, Память ¦ t = 16+ЕА тактов ¦ 11000100 ¦
+-------------------------+ ¦----------------¦
¦ mod reg r/m ¦
¦----------------¦
¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Примечание:
Указатель ( сегмент: смещение ) можно организовать с помощью директивы
DD, если операндом директивы будет адресное выражение. Например:
### Регистр флажков не модифицируется.
### Формат команды:
7 0
+-------------------------+ l = 2-4 байта +----------------+
¦ LES Регистр, Память ¦ t = 16+ЕА тактов ¦ 11000100 ¦
+-------------------------+ ¦----------------¦
¦ mod reg r/m ¦
¦----------------¦
¦ dispL ¦
+----------------¦
¦ dispH ¦
+----------------+
### Примечание:
Указатель ( сегмент: смещение ) можно организовать с помощью директивы
DD, если операндом директивы будет адресное выражение. Например:
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|