Основные команды языка ASSEMBLER
### Команда 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 добавляется
значение константы.
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|