Skip to content

[ЭКЗАМЕН 17] Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.

Justarone edited this page Jun 9, 2020 · 5 revisions

Условный переход - переход, происходящий при выполнении какого-то условия.

Безусловный переход - переход, не зависящий от чего-либо (совершаемый в любом случае).

Виды безусловных переходов

JMP - оператор безусловного перехода.

Вид перехода Дистанция перехода
short (короткий) -128..+127 байт
near (ближний) в том же сегменте (без изменения CS)
far (дальний) в другой сегмент (со сменой CS)

Для короткого и ближнего переходов непосредственный операнд (число) прибавляется к IP. Регистры и переменные заменяют старое значение в IP (CS:IP).

Команда безусловной передачи управления JMP

JMP <операнд>

  • Передаёт управление в другую точку программы, не сохраняя какой-либо информации для возврата.
  • Операнд - непосредственный адрес, регистр или переменная.

Команды условных переходов J.. (Зубков, Assembler, …, глава 2)

  • Переход типа short или near
  • Обычно используются в паре с CMP
  • "Выше" и "ниже" - при сравнении беззнаковых чисел
  • "Больше" и "меньше" - при сравнении чисел со знаком
Команда Описание Состояние флагов для выполнения перехода
JO Есть переполнение OF = 1
JNO Нет переполнения OF = 0
JS Есть знак SF = 1
JNS Нет знака SF = 0
JE/JZ Если равно/если ноль ZF = 1
JNE/JNZ Не равно/не ноль ZF = 0
JP/JPE Есть чётность/чётное PF = 1
JNP/JPO Нет чётности/нечётное PF = 0
JCXZ CX = 0
Команда Описание Состояние флагов для выполнения перехода Знаковый
JB Если ниже CF = 1 Нет
JNAE Если не выше и не равно CF = 1 Нет
JC Если перенос CF = 1 Нет
JNB Если не ниже CF = 0 Нет
JAE Если выше или равно CF = 0 Нет
JNC Если нет переноса CF = 0 Нет
JBE Есть ниже или равно CF = 1 или ZF = 1 Нет
JNA Если не выше CF = 1 или ZF = 1 Нет
JA Если выше CF = 0 и ZF = 0 Нет
JNBE Если не ниже и не равно CF = 0 и ZF = 0 Нет
JL Если меньше SF <> OF Да
JNGE Если не больше и не равно SF <> OF Да
JGE Если больше или равно SF = OF Да
JNL Если не меньше SF = OF Да
JLE Если меньше или равно ZF = 1 или SF <> OF Да
JNG Если не больше ZF = 1 или SF <> OF Да
JG Если больше ZF = 0 и SF = OF Да
JNLE Если не меньше и не равно ZF = 0 и SF = OF Да

Следующий вопрос: Способы адресации.

Предыдущий вопрос: Директива END. Точка входа.

Экзамен:

  1. Архитектура фон Неймана. Принципы фон Неймана

  2. Структурная схема ЭВМ. Виды памяти. Системная шина.

  3. Процессор 8086. Разрядность. Регистры.

  4. Процессор 8086. Регистр флагов.

  5. Процессор 8086. Шина адреса. Сегментная модель памяти.

  6. Выполнение программы. Машинный код. Исполняемые файлы. Язык ассемблера.

  7. Классификация команд процессора x86.

  8. Команда пересылки данных.

  9. Команды целочисленной арифметики.

  10. Команды побитовой арифметики.

  11. Команды передачи управления.

  12. Структура программы на языке ассемблера. Модули. Сегменты.

  13. Директивы выделения памяти. Метки.

  14. Директива SEGMENT.

  15. Директива ASSUME.

  16. Директива END. Точка входа.

  17. Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.

  18. Способы адресации.

  19. Команда сравнения.

  20. Команды условных переходов.

  21. Команда XLAT/XLATB.

  22. Команда LEA.

  23. Команды десятичной арифметики.

  24. Команды сдвига.

  25. Команда организации цикла.

  26. Строковые операции. Префиксы повторения.

  27. Стек. Регистры, связанные со стеком. Команды записи/извлечения из стека.

  28. Стек. Использование при вызове подпрограмм. Команды вызоваподпрограммы и возврата.

  29. Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.

  30. Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.

  31. Процессор 80386. Разрядность, регистры.

  32. Защищённый режим работы процессора. Многозадачность.

  33. Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование.

  34. Процессоры x86-64. Регистры. Режимы работы.

  35. Математический сопроцессор. Типы данных. Представление вещественных чисел.

  36. Математический сопроцессор. Регистры.

  37. Математический сопроцессор. Особые числа.

  38. Математический сопроцессор. Классификация команд.

  39. Расширение MMX. Назначение. Типы данных.

  40. Расширение MMX. Регистры. Классификация команд.

  41. Расширение SSE. Назначение. Типы данных. Регистры.

  42. Макроопределения. Назначение.

  43. Макроопределения. Директивы присваивания и отождествления.

  44. Макроопределения. Макрооперации.

  45. Макроопределения. Блоки повторения.

  46. Макроопределения. Директивы условного ассемблирования.

Clone this wiki locally