Эти высказывания просто отражают два разных взгляда программиста на числа А и В.

DATA

Сравнение знаковых и беззнаковых целых чисел

МЕХАНИЗМ ВЫПОЛНЕНИЯ

1. «Результат» := оп1 – оп2;
{установились флаги}

«Результат» НИГДЕ НЕ СОХРАНЯЕТСЯ.

A db 00111011B ; A = 59 или А = + 59

B db 10010010B ; B= 146 или B = ― 110

Считаем А и В ЗНАКОВЫМИ.
Тогда А =+59 БОЛЬШЕ B = -110
и B = -110 МЕНЬШЕ А =+59

Считаем А и В БЕЗЗНАКОВЫМИ.
Тогда А =59 НИЖЕ, чем B = 146
и B = 146 ВЫШЕ, чем А =59.

Результаты «А больше, но ниже, чем В»и «В меньше, но выше, чем А» существуют одновременно и не противоречат друг другу. Им всем соответствует одна комбинация флагов, которая установилась после CMP AL, B.

Кодировка проверяемых отношений в мнемонике комады «jXX метка»

Буквенная кодировка Родитель (англ.) Смысл (Рус.) Тип операндов
E e Equal Равно Любые
Z z Zero Ноль Любые
N n Not Не Любые
G g Greater Больше Числа со знаком
L l Less Меньше Числа со знаком
A a Above Выше, в смысле “больше” Числа без знака
B b Below Ниже, в смысле “меньше” Числа без знака

 

Команды условных переходов, применяемые после команды «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

 

Команды условных переходов
по значениям флагов

Название флага Команда Переходим, если:
Флаг переноса CF jc CF = 1
Флаг четности PF jp PF = 1
Флаг нуля ZF jz ZF = 1
Флаг знака SF js SF = 1
Флаг переполнения OF jo OF = 1
Флаг переноса CF jnc CF = 0
Флаг четности PF jnp PF = 0
Флаг нуля ZF jnz ZF = 0
Флаг знака SF jns SF = 0
Флаг переполнения OF jno OF = 0

 

Команды условного перехода и регистр ECX/CX

Регистр ECX/CX используется КАК СЧЕТЧИК в циклах.
Чтобы удобнее было обработать ситуацию «нулевое число повторений цикла», в состав системы команд процессора введены специальные команды:

JCXZ метка (Jump if CX is Zero) – переход при CX=0;

 

JECXZ метка (Jump if ECXis Zero) - переход при ECX=0.

Эти команды выполняют ТОЛЬКО КОРОТКИЕ ПЕРЕХОДЫ
на дистанцию -128 … +127 байт максимум
.

МЕЖСЕГМЕНТНЫЙ УСЛОВНЫЙ ПЕРЕХОД

Пусть надо передать управление из сегмента 1:

Если условие ХХ выполняется, то на метку Target1 в сегменте 2,
а если НЕ выполняется, то на метку Target2 в сегменте 3.

 

ОРГАНИЗАЦИЯ ЦИКЛОВ И управление ими

Программирование цикла со счетчиком
(«for») с помощью переходов

В качестве счетчика повторений цикла можно взять переменную или любой регистр общего назначения. Ну, возьмем CX – почему бы и нет?
Используем обратный счет до нуля.

Mov CX, 20 ; задаем число повторений

Cycle: