[Принципы микрокомпьютера] Разница между инструкциями JZ и JNZ
[Принципы микрокомпьютера] Разница между инструкциями JZ и JNZ

JZ(Jump if Ноль)сумма JNZ(Jump if Not Zero) — две инструкции условного перехода, которые зависят от нулевой флаг(Zero Флаг, ZF) для определения поведения программы при переходе. Разница между ними в том, что условия прыжка противоположны.

1. JZ(Jump if Zero)

Функция:

  • когда нулевой флаг(ZF) одеялоустановлен на1 час,JZ Выполнение инструкции скачет.

Сценарии использования:

  • В основном используется для проверки того, равен ли результат операции нулю. Если результат операции равен нулю (например, два значения равны или результат вычитания равен нулю), то ZF в это время установлено значение 1 JZ Перейдет на указанный целевой адрес.

Пример:

Язык кода:javascript
копировать
CMP AX, BX  ; Сравнивать AX и BX ценить
JZ  target  ; если AX == BX,ZF Установите значение 1, перейдите к target Этикетка

В приведенном выше примере, если AX и BX равный,CMP Команда будет ZF установлен на 1,JZ Инструкция перейдет к target Этикетка.

2. JNZ(Jump if Not Zero)

Функция:

  • когда нулевой флаг(ZF) одеялоустановлен на0час,JNZ Выполнение инструкции скачет.

Сценарии использования:

  • Используется для проверки того, является ли результат операцииНетравен нулю。если Результат операции Нетравен нулю(Например, два значения Нетравный,или Результат вычитания Нетравен нулю),Так ZF очищено, в это время JNZ Перейдет на указанный целевой адрес.

Пример:

Язык кода:javascript
копировать
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 Переход во времени, обычно используемый для проверки того, равен ли результат операции нулю.

Эти две инструкции часто используются для реализации условных ветвей в программах, которым необходимо выполнять разные пути в зависимости от условий.


Просто приведите два примера для понимания.
Пример: Проверьте, равны ли 50 байтов, начиная с первого адреса 2200H блока памяти, 50 байтам, начиная с первого адреса 3200H.
Язык кода:javascript
копировать
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。
Язык кода:javascript
копировать
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:
; Продолжить с другим кодом
boy illustration
API-интерфейс Jitu Express для электронных счетов-Express Bird [просто для понимания]
boy illustration
Каковы архитектуры микросервисов Java. Серверная часть плавающей области обслуживания
boy illustration
Описание трех режимов жизненного цикла службы внедрения зависимостей Asp.net Core.
boy illustration
Java реализует пользовательские аннотации для доступа к интерфейсу без проверки токена.
boy illustration
Серверная часть Unity добавляет поддержку .net 8. Я еще думал об этом два дня назад, и это сбылось.
boy illustration
Проект с открытым исходным кодом | Самый элегантный метод подписки на публичные аккаунты WeChat на данный момент
boy illustration
Разрешения роли пользователя Gitlab Гость, Репортер, Разработчик, Мастер, Владелец
boy illustration
Spring Security 6.x подробно объясняет механизм управления аутентификацией сеанса в этой статье.
boy illustration
[Основные знания ASP.NET] — Аутентификация и авторизация — Использование удостоверений для аутентификации.
boy illustration
Соединение JDBC с базой данных MySQL в jsp [легко понять]
boy illustration
[Уровень няни] Полный процесс развертывания проекта Python (веб-страницы Flask) в Docker.
boy illustration
6 способов чтения файлов свойств, рекомендуем собрать!
boy illustration
Графическое объяснение этапа строительства проекта IDEA 2021 Spring Cloud (базовая версия)
boy illustration
Подробное объяснение технологии междоменного запроса данных JSONP.
boy illustration
Учебное пособие по SpringBoot (14) | SpringBoot интегрирует Redis (наиболее полный во всей сети)
boy illustration
Подробное объяснение механизма подтверждения выпуска сообщений RabbitMQ.
boy illustration
На этот раз полностью поймите протокол ZooKeeper.
boy illustration
Реализуйте загрузку файлов с использованием минимального WEB API.
boy illustration
Демо1 Laravel5.2 — генерация и хранение URL-адресов
boy illustration
Spring boot интегрирует Kafka и реализует отправку и потребление информации (действительно при личном тестировании)
boy illustration
Мысли о решениях по внутренней реализации сортировки методом перетаскивания
boy illustration
Междоменный доступ к конфигурации nginx не может вступить в силу. Междоменный доступ к странице_Page
boy illustration
Как написать текстовый контент на php
boy illustration
PHP добавляет текстовый водяной знак или водяной знак изображения к изображениям – метод инкапсуляции
boy illustration
Интерпретация быстрой таблицы (TLB)
boy illustration
Интерфейс WeChat API (полный) — оплата WeChat/красный конверт WeChat/купон WeChat/магазин WeChat/JSAPI
boy illustration
Преобразование Java-объекта в json string_complex json-строки в объект
boy illustration
Примените сегментацию слов jieba (версия Java) и предоставьте пакет jar
boy illustration
matinal: Самый подробный анализ управления разрешениями во всей сети SAP. Все управление разрешениями находится здесь.
boy illustration
Коротко расскажу обо всем процессе работы алгоритма сборки мусора G1 --- Теоретическая часть -- Часть 1