Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASMMET.DOC
Скачиваний:
24
Добавлен:
27.03.2015
Размер:
339.46 Кб
Скачать

Команда безусловного перехода

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]