Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz._12.doc
Скачиваний:
3
Добавлен:
11.08.2019
Размер:
146.43 Кб
Скачать

Команда порівняння cmp

Команда порівняння cmp має цікавий принцип роботи. Він абсолютно такий же, як і у команди віднімання sub операнд_1, операнд_2. Команда cmp так само, як і команда sub, виконує віднімання операндів і встановлює прапори. Єдине, чого вона не робить - це запис результату віднімання на місце першого операнда.

Синтаксис команди cmp:

cmp операнд_1, операнд_2 - порівнює (compare) два операнди і за результатами порівняння встановлює прапори.

Прапори, що встановлюються командою cmp, можна аналізувати спеціальними командами умовного переходу. Перед тим, як ми їх розглянемо, приділимо трохи уваги мнемоніки цих команд умовного переходу (табл. 12.1). Розуміння позначень при формуванні назви команд умовного переходу (елемент у назві команди jcc, позначений нами cc) полегшить їх запам'ятовування і подальше практичне використання.

Таблиця 12.1 - Значення абревіатур в назві команди jcc

Мнемонічне позначення

Англійська

Українська

Тип операндів

E e

equal

Рівно

Будь-які

N n

not

Ні

Будь-які

G g

greater

Більше

Числа зі знаком

L l

less

Менше

Числа зі знаком

A a

above

Вище, в сенсі "більше”

Числа зі знаком

B b

below

Нижче, в сенсі "менше"

Числа зі знаком

Таблиця 12.2 - Перелік команд умовного переходу для команди cmp операнд_1, операнд_2

Типи операндів

Мнемокод команди умовного переходу

Критерій умовного переходу

Значення прапорів для здійснення переходу

Будь-які

je

операнд_1 = операнд_2

zf = 1

Будь-які

jne

операнд_1<>операнд_2

zf = 0

Зі знаком

Jl / jnge

операнд_1 < операнд_2

sf <> of

Зі знаком

Jle / jng

операнд_1 <= операнд_2

sf <> of or zf = 1

Зі знаком

Jg / jnle

операнд_1 > операнд_2

sf = of and zf = 0

Зі знаком

Jge / jnl

операнд_1 => операнд_2

sf = of

Зі знаком

Jb / jnae

операнд_1 < операнд_2

cf = 1

Зі знаком

Jbe / jna

операнд_1 <= операнд_2

cf = 1 or zf=1

Зі знаком

Ja / jnbe

операнд_1 > операнд_2

cf = 0 and zf = 0

Зі знаком

Jae / jnb

операнд_1 => операнд_2

cf = 0

Не дивуйтеся тій обставині, що однаковим значенням прапорів відповідає кілька різних мнемокодів команд умовного переходу (вони відділені одна від одної косою рискою в табл. 12.2). Різниця в назві зумовлена бажанням розробників мікропроцесора полегшити використання команд умовного переходу в поєднанні з певними групами команд. Тому різні назви відображають скоріше різну функціональну спрямованість.Тим не менше, те, що ці команди реагують на одні й ті ж прапори робить їх абсолютно еквівалентними і рівноправними в програмі. Тому в табл. 12.2 вони згруповані не за назвами, а за значеннями прапорів (умовами), на які вони реагують.

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