###
Команда JMP
#########################################################
### Осуществляет безусловный переход, модифицируя указатель команд IP (при
переходе типа NEAR) или пару регистров CS:IP (при
переходе типа FAR).
Старое значение регистров IP и
CS теряется.
### Регистр флажков не модифицируется.
### Форматы команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ JMP SHORT Метка
¦ t = 15 тактов
¦ 11101011
¦
+-------------------------+
¦----------------¦
Относительный переход типа NEAR.
¦ dispL
¦
Диапазон перехода -128 … +127 байт.
+----------------+
Если осуществляется переход назад,
оператор SHORT можно опустить.
7
0
+-------------------------+ l = 3 байта
+----------------+
¦ JMP Метка типа NEAR ¦ t = 15 тактов
¦ 11101001
¦
+-------------------------+
¦----------------¦
Относительный переход типа NEAR.
¦ dispL
¦
Диапазон перехода -32768 … +32767
¦----------------¦
байт.
¦ dispH
¦
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ JMP Память
¦ t = 18+ЕА тактов
¦ 11111111
¦
+-------------------------+
¦----------------¦
+-------------------------+ l = 2 байта
¦ mod 100 r/m ¦
¦ JMP Регистр
¦ t = 11 тактов
¦----------------¦
+-------------------------+
¦ dispL
¦
Косвенный переход типа NEAR. Адрес
+----------------¦
перехода загружается из 16-битового
¦ dispH
¦
общего регистра или слова памяти.
+----------------+
7
0
+-------------------------+ l = 5 байтов
+----------------+
¦ JMP Метка типа FAR ¦ t = 15
тактов
¦ 11101010
¦
+-------------------------+
¦----------------¦
Прямой переход типа FAR:
¦ offL
¦
значение off загружается в IP,
¦----------------¦
значение seg загружается в CS.
¦ offH
¦
¦----------------¦
¦ segL
¦
¦----------------¦
¦ segH
¦
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ JMP Память
¦ t = 24+ЕА тактов
¦ 11111111
¦
+-------------------------+
¦----------------¦
Косвенный переход типа FAR:
¦ mod 101 r/m ¦
слово памяти загружается в IP,
¦----------------¦
следующее слово памяти - в CS.
¦ dispL
¦
+----------------¦
¦ dispH
¦
+----------------+
### Команда
CALL#########################################################
### Передает управление подпрограмме с
автоматическим
сохранением
адреса возврата в стеке.
### Регистр флажков не модифицируется.
### Форматы команды:
7
0
+-------------------------+ l = 3 байта
+----------------+
¦ CALL Метка типа NEAR ¦ t = 19 тактов
¦ 11101000
¦
+-------------------------+
¦----------------¦
Относительный переход типа NEAR:
¦ dispL
¦
производится декремент SP на 2,
¦----------------¦
включается в стек содержимое IP,
¦ dispH
¦
прибавляется к содержимому IP
+----------------+
значение индексного смещения.
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ CALL Память
¦ t = (21+EA) тактов
¦ 11111111
¦
+-------------------------+
¦----------------¦
+-------------------------+ l = 2 байта
¦ mod 010 r/m ¦
¦ CALL Регистр
¦ t = 16 тактов
¦----------------¦
+-------------------------+
¦ dispL
¦
Косвенный переход типа NEAR:
+----------------¦
* производится декремент SP на 2,
¦ dispH
¦
* включается в стек содержимое IP,
+----------------+
* слово, адресуемое
операндом
загружается в регистр IP.
7
0
+-------------------------+ l = 5 байтов
+----------------+
¦ CALL Метка типа FAR ¦ t = 28 тактов
¦ 10011010
¦
+-------------------------+
¦----------------¦
Прямой переход типа FAR:
¦ offL
¦
* уменьшается содержимое SP на 2,
¦----------------¦
* заносится в стек содержимое CS,
¦ offH
¦
* уменьшается содержимое SP на 2,
¦----------------¦
* заносится в стек содержимое IP,
¦ segL
¦
* в IP заносится off, в CS - seg.
¦----------------¦
¦ segH
¦
+----------------+
7
0
+-------------------------+ l = 2-4 байта
+----------------+
¦ CALL Память
¦ t = (37+EA) тактов
¦ 11111111
¦
+-------------------------+
¦----------------¦
Косвенный переход типа FAR:
¦ mod 011 r/m ¦
уменьшается содержимое SP на 2,
¦----------------¦
заносится в стек содержимое CS,
¦ dispL
¦
уменьшается содержимое SP на 2,
+----------------¦
заносится в стек содержимое IP,
¦ dispH
¦
слово, адресуемое операндом,
+----------------+
загружается в IP, а следующее
слово - в регистр CS.
### Команда
RET############################################################
### Возвращает управление вызывающей программе.
Команда возврата - это
косвенный переход, т.к. адрес перехода извлекается
из вершины стека.
Команда возврата с
операндом-константой
дополнительно прибавляет,
содержащееся в ней данное, к указателю стека SP, что упрощает
возврат из
подпрограмм, параметры которых передаются в стеке.
### Регистр флажков не модифицируется.
### Форматы команды:
7
0
+-------------------------+ l = 1 байт
+----------------+
¦ RET
¦ t = 8 тактов
¦ 0011010 w
¦
+-------------------------+
+----------------+
Возврат типа NEAR:
слово из стека помещается в IP,
содержимое SP увеличивается на 2
7
0
+-------------------------+ l = 1 байт
+----------------+
¦ RET
¦ t = 18 тактов
¦ 0011010 w
¦
+-------------------------+
+----------------+
Возврат типа FAR:
слово из стека помещается в IP,
содержимое SP увеличивается на 2
слово из стека помещается в CS,
содержимое SP увеличивается на 2
7
0
+-------------------------+ l = 3 байта
+----------------+
¦ RET Константа
¦ t = 12 тактов
¦ 0011010 w
¦
+-------------------------+
¦----------------¦
Возврат типа NEAR:
¦ dataL
¦
слово из стека помещается в IP,
¦----------------¦
содержимое SP увеличивается на 2
¦ dataH
¦
к содержимому SP
добавляется
+----------------+
значение константы.
7
0
+-------------------------+ l = 3 байта
+----------------+
¦ RET Константа
¦ t = 17 тактов
¦ 0011010 w
¦
+-------------------------+
¦----------------¦
Возврат типа FAR:
¦ dataL
¦
слово из стека помещается в IP,
¦----------------¦
содержимое SP увеличивается на 2
¦ dataH
¦
слово из стека помещается в CS,
+----------------+
содержимое SP увеличивается на 2
к содержимому SP
добавляется
значение константы.
|