JZ
(Jump if Ноль)сумма JNZ
(Jump if Not Zero) — две инструкции условного перехода, которые зависят от нулевой флаг(Zero Флаг, ZF) для определения поведения программы при переходе. Разница между ними в том, что условия прыжка противоположны.
Функция:
JZ
Выполнение инструкции скачет.Сценарии использования:
ZF
в это время установлено значение 1 JZ
Перейдет на указанный целевой адрес.Пример:
CMP AX, BX ; Сравнивать AX и BX ценить
JZ target ; если AX == BX,ZF Установите значение 1, перейдите к target Этикетка
В приведенном выше примере, если AX
и BX
равный,CMP
Команда будет ZF
установлен на 1,JZ
Инструкция перейдет к target
Этикетка.
Функция:
JNZ
Выполнение инструкции скачет.Сценарии использования:
ZF
очищено, в это время JNZ
Перейдет на указанный целевой адрес.Пример:
CMP AX, BX ; Сравнивать AX и BX ценить
JNZ target ; если AX != BX,ZF очищается и переходит к target Этикетка
В приведенном выше примере, если AX
и BX
Нетравный,CMP
Команда будет ZF
установлен на 0,JNZ
Инструкция перейдет к target
Этикетка.
JZ
(Jump if Ноль) будет в ZF = 1
Перейти, когда обычно используется для проверки того, равен ли результат операции нулю.JNZ
(Jump if Not Ноль) будет в ZF = 0
Переход во времени, обычно используемый для проверки того, равен ли результат операции нулю.Эти две инструкции часто используются для реализации условных ветвей в программах, которым необходимо выполнять разные пути в зависимости от условий.
CLD флаг сброса направления DF;,делать Сравнивать Направление от нижнего адреса к верхнему адресу.
MOV SI, 2200H ; Загрузите начальный адрес 2200H исходной строки в SI.
MOV DI, 3200H ; Загрузите начальный адрес 3200H строки назначения в DI.
MOV CX, 50 ; Загрузить количество байт сравнения 50 в CX
REPE CMPSB ; еслиравныйиZF=1,продолжать Сравнивать,доCX=0или Обнаружить Нетравный
JZ LP1 ; еслиZF=1,ноперейти к ЭтикеткаLP1,означает, что все байтыравный
DEC SI ; если Нетравный,Уменьшить показатель SIу на 1,Укажите на первое Нетравныйбайты
MOV BX, SI ; Сохраните адрес первого Нет равного байта в BX.
MOV AL, [SI] ; Сохраните первое Нет-равное байтовое содержимое исходной строки в AL.
JMP LP2 ; Перейти к метке LP2
LP1: MOV BX, 0 ; есливсе байтыравный,но ВоляBXустановлен на0
LP2: ; Продолжить выполнение последующего кода
ES
часть)4300Hадрес начинается100Найти символы в байтах *
。еслиоказаться,хранение смещенного адресаBX
зарегистрироваться;еслине найдено,BX
= 0。CLD ; четкий указатель направления, установлен прямой поиск
MOV DI, 4300H ; Инициализируйте DI значением 4300H, указывая на первый байт в Память.
MOV AL, '*' ; Загрузите персонажей, которых вы ищете, в AL '*'
MOV CX, 100 ; Установите диапазон поиска на 100 байт.
REPNZ SCASB ; Байт за байтом Сравнивать,дооказаться'*' или CX=0
JNZ LP1 ; еслине найдено(ZF=0),перейти кLP1
DEC DI ; уменьшать ДИ, потому что SCASB переместит еще один байт
MOV BX, DI ; Сохраните найденный адрес смещения позиции в BX.
JMP LP2 ; перейти к LP2
LP1:
MOV BX, 0 ; не найдено '*',Воля BX установлен на 0
LP2:
; Продолжить с другим кодом