- •Введение
- •Программная модель микропроцессора Intel8086
- •Структура и формат команд
- •Примеры некоторых форматов команд
- •Базовый - индексный способ адресации
- •Относительный базовый – индексный способ адресации
- •Система команд мп Intel8086 Команды перемещения данных
- •Загрузка в стек (с декрементом sp )
- •Команда безусловного перехода
- •Вызов подпрограммы
- •Возврат из подпрограммы ret
- •Команды организации циклов
- •Команды прерывания
- •Команды строчной обработки
- •Команды манипуляции со флажками
- •Команды управления микропроцессором
Команда безусловного перехода
JMP – внутрисегментная команда с прямой адресацией относительноIP.В мнемонике в команде записывается метка или адрес перехода. При переходе к машинным командам смещение вычисляется аналогично командам условного перехода.
Смещение записывается в дополнительном коде и может иметь 8 или 16 разрядов. Если смещение 8-разрядное, то переход называют коротким.
JMP адрес перехода (метка) - в пределах сегмента.
JMP src |
11111111 |
Mod 100 r/m |
- Внутрисегментный с косвенной адресацией – адрес перехода в регистре или памяти
11101010 |
cмещ. мл. б. |
Смещ. ст. б. |
сегм. мл. б. |
сегм. ст. б. |
- Межсегментный с прямой адресацией – в команде указываются полный адрес перехода, включая значение сегментного регистра CS. В первом слове операнда находится новое содержимоеIP, во втором находитсяCS.
JMP (CS):смещение[FAR PTR МЕТКА]
JMP src |
11111111 |
Mod 100 r/m |
JMP 200:300 EA 0003 0002
- Межсегментный с косвенной адресацией
11101000 |
Смещение мл. б. |
Cмещение ст. б. |
Полный адрес перехода занимает в памяти двойное слово. Слово, указанное постбайтом, является смещением, а следующее – новым значением CS.
(IP) = (EA) ; (CS) = (EA + 2)
Вызов подпрограммы
Структура и формат команды аналогичны командам безусловной передачи управления.
Внутрисегментный переход с прямой адресацией
CALL метка (адрес)(IP) = (IP) + смещение
CALL src |
11111111 |
mod 100 r/m |
11101010 |
Cмещ. мл. б. |
смещ. ст. б. |
сегм. мл. б. |
сегм. ст. б. |
- Внутрисегментный с косвенной адресацией
11101010 |
Cмещ. мл. б. |
смещ. ст. б. |
сегм. мл. б. |
сегм. ст. б. |
- Межсегментный с прямой адресацией
CALL (CS):смещение[FAR PTR МЕТКА]
Команда вызова подпрограммы CALL производит те же действия, что и командаJMP за исключением того, что перед выполнением команды адрес возврата помещается в стек. Если переход внутрисегментный, то в стек помещается лишь содержимое указателя командIP. Если переход межсегментный, то в стек загружается сначала содержимоеCS, затемIP.
Возврат из подпрограммы ret
При выполнении команды возврата из стека извлекается адрес возврата. Так как адрес возврата может иметь одно или два слова, для команды RET используют два кода.
- Внутрисегментный возврат
RET |
11000011 |
- Межсегментный возврат
RET FAR |
11001011 |
Возврат из подпрограммы с увеличением указателя стека (SP) = (SP) + data
- Внутрисегментный
RET data |
11000010 |
данные мл. б. |
данные ст. б. |
- Межсегментный
RET data |
11001010 |
данные мл. б. |
данные ст. б. |
Команды организации циклов
Команды организации циклов обеспечивают уменьшение содержимого регистра CX и условный переход по результату. Команды организации циклов являются командами условного перехода, имеют такой же синтаксис и аналогично выполняются.
КОП |
Смещение |
Мнемоника |
КОП 16-рич. |
Условие Ветвления |
Описание действия |
LOOP |
E2 |
(CX) <> 0 |
Декремент CX и переход, если (CX) не равно 0. |
LOOPE / LOOPZ |
E1 |
(CX) <> 0 ZF = 1 |
Декремент CX и переход, если "равно" или "нуль". |
LOOPNE / LOOPNZ |
E0 |
(CX) <> 0 ZF = 0 |
Декремент CX и переход, если "не равно" или "не нуль". |
JCXZ |
E3 |
(CX) = 0 |
Переход, если (CX) равно 0. |