Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

3.2. Команди умовної передачі управління Jcc

Базових команд умовного переходу всього 17, але вони можуть мати різну мнемоніку (це команди-синоніми — для зручності читання і розуміння програми), тому виходить 31 команда. Читати ці команди досить просто, якщо знаєш ключ.

Перша буква команди J від уже відомого нам слова (Jump — стрибок). Інші букви (сc) у скороченому виді описують умова переходу. За цією ознакою всі команди умовного переходу можна розбити на три групи.

3.2.1. Перша група команд умовного переходу.

Е — Equal (дорівнює).

N — Not (не, заперечення).

G — Greater (більше) — застосовується для чисел зі знаком.

L — Less (менше) — застосовується для чисел зі знаком.

А — Above (вище, більше) — застосовується для чисел без знака.

В — Below (нижче, менше) — застосовується для чисел без знака.

Різниця в командах переходу для знакових і беззнакових даних порозумівається тим, що вони реагують на різні прапори (для знакових даних суттєвим є прапор SF, а для беззнакових — CF).

Умовний перехід для цієї групи команд звичайно реалізується в два кроки:

  • порівняння, у результаті чого формуються прапори (регістр eflags).

  • умовна передача управління (jcc коротка_мітка) на позначену команду в залежності від значення прапорів.

Таким чином, у даному випадку реалізується умовний оператор if.

Ця група операцій найчастіше виконується в парі з командою порівняння cmp:

cmp приймач, джерело

jсс коротка_мітка

Таблиця 1. - Команди умовного переходу групи 1.

Умова порівняння

(СМР)

Мнемокод/

синонім

Стан прапорів

Для будь-яких чисел і кодів

Приймач = джерело

JE

ZF=1

Приймач <>джерело

JNE

ZF=0

Для чисел зі знаком

Приймач < джерело

JL/JNGE

SF<>OF

Приймач <= джерело

JLE/JNG

SF<>OF or ZF=l

Приймач > джерело

JG/JNLE

SF=OF and ZF=0

Приймач >= джерело

JGE/JNL

SF=OF

Для чисел без знака

Приймач < джерело

JB/JNAE

CF=1

Приймач <= джерело

JBE/JNA

CF=1 or ZF=1

Приймач > джерело

JA/JNBE

CF=0 and ZF=0

Приймач >= джерело

JAE/JNB

CF=0

3.2.2 Друга група команд умовного переходу.

Ця група команд реагує на те або інше значення визначеного прапора. Тому в мнемоніці даної групи команд завжди вказується перша буква прапора, що перевіряється. Ці команди не вимагають обов'язкової наявності команд порівняння перед своїм виконанням. Їм досить будь-якої команди, що виробляє потрібний прапор.

Таблиця 2. Команди умовного переходу групи 2

Мнемокод /

синоніми

Стан прапорів

Мнемокод /

синоніми

Стан прапорів

JZ/JE

ZF=1

JNZ/JNE

ZF=0

JS

SF=1

JNS

SF=0

JC/JB/JNAE

CF=1

JNC/JAE/JNB

CF=0

JO

OF=l

JNO

OF=0

JP

PF=1

JNP

PF=0

Як видно з таблиці, з деякими командами ми вже зустрічалися в групі 1. Синоніми мнемокодів команд просто підкреслюють, на що конкретно звернув увагу програміст.

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