- •Основні арифметичні команди над цілими двійковими числами:
- •Inc операнд – операція інкремента, тобто збільшення значення операнда на 1;
- •Imul операнд_1 (, операнд_2, операнд_3) – команда множення чисел зі знаком; виконується так само, як і команда mul;
- •Знаходження діленого задано неявно:
- •Idiv дільник – команда ділення чисел зі знаком; виконується так само, як і команда div.
- •Безумовні-умовні переходи мови 4ипии4мма
- •Команда безумовного переходу
- •Команди умовного переходу та ознаки:
Команда безумовного переходу
jmp (модифікатор) адреса_переходу – безумовний перехід без збереження інформації про точку повернення; адреса_переходу – мітка або адреса пам’яті.
Найчастіше використовуються:
· короткий внутрішньосегментний перехід – відстань від команди jmp до адреси_переходу не більше ніж -128 або +127 байт:
jmp short ptr m1
не більше 35-40 команд (127 байт)
m1:
або
m1
відстань не більше 35-40 команд (-128 байт)
jmp m1
· внутрішньосегментний перехід – дозволяються переходи в межах 64 Кбайт відносно наступної за jmp команди:
m1:
відстань більше 128 байт і менше 64 Кбайт
jmp m1;
· міжсегментний перехід – для організації переходів між сегментами:
seg_1 segment
jmp far ptr m2; far обов’язкове
m1 label far
seg_1 ends
seg_2 segment
m2 label far
jmp m1; far обов’язкове
Модифікатори short ptr, near ptr i word ptr використовуються для організації внутрішньосегментних переходів, а far ptr i dword ptr – міжсегментних.
Команди умовного переходу:
· jcxz мітка_переходу – перехід, якщо сх=0;
· jecxz мітка_переходу – перехід, якщо есх=0.
Вони зручні про організації циклів. Але можуть адресувати лише короткі переходи – на -128 байтів або на +127 байтів від наступної за нею команди.
Команди організації циклів:
· loop мітка_переходу – повторити цикл; команда зменшує вміст есх/сх на одиницю і якщо (есх/сх)>0, то керування передається на мітку переходу;
· loop/loopz мітка_переходу – повторювати цикл, поки (есх/сх) <> 0 або zf=0;
· loopne/loopnz мітка_переходу – повторювати цикл, поки (есх/сх) <> 0 або zf=1.
Команди порівняння
Команда порівняння сmр установлює ознаки залежно від значень операнда_1 та операнда_2.
Синтаксис команди cmp:
cmp операнд_1, операнд_2.
Ознаки, які встановлює команда cmp, можна аналізувати спеціальними командами умовного переходу:
jcc мітка_переходу,
де
|
Мнемокод команди умовного переходу |
Критерій умовного переходу |
Значення ознак для здійснення переходу |
будь-які |
je |
операнд_1 = операнд+2 |
zf=1 |
будь-які |
jne |
операнд_1 <> операнд_2 |
zf=0 |
зі знаком |
jl/jnge |
операнд_1< операнд_2 |
s <> of |
зі знаком |
jle/jng |
операнд_1< = операнд_2 |
s <> 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 |