###
Команда 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, если операндом директивы будет
адресное выражение.
Например:
|