Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

3.2.3. Третя група команд умовного переходу.

У цю групу входять команди jcxz і jecxz. Вони, на відміну від попередніх команд, перевіряють не прапори, а вміст регістра сх на нуль. Це дуже важливі команди, що використовуються при організації циклів.

Синтаксис:

jcxz коротка_мітка

jecxz коротка_мітка

Рис.1. Логіка роботи команди jcxz.

3.3. Команди управління циклами looPx

Команди цього виду організують циклічні обчислення (loop — цикл), використовуючи регістр лічильника eсх (cx) по своєму прямому призначенню (counter — лічильник). У регістр eсх (cx) повинне бути попередньо занесена кількість повторень циклу. Ці команди реалізують класичний цикл із лічильником з післяумовою.

3.3.1. Команда loop — перехід по лічильнику

Синтаксис команди:

loop коротка_мітка

Команда loop зменшує вміст регістра eсх на 1, потім передає управління мітці коротка_мітка, якщо вміст eсх не дорівнює 0.

Оскільки умова виходу з циклу перевіряється наприкінці, при значенні counter=0 цикл усе рівно виконається, при цьому, ми ще і зациклимося. Щоб цього уникнути, звичайно до початку циклу перевіряють уміст регістра eсх на нуль.

Таким чином, стандартна послідовність команд для організації циклу з лічильником має такий вигляд:

mov ecx, [counter]

jcxz ExitCicle; якщо <ECX> = 0, цикл обійти

short_label:

; Виконання тіла циклу

loop short_label

Рис.2. Алгоритм роботи команди loop

3.3.2. Команда loope (loopz) перехід по лічильнику і якщо дорівнює

Дана команда має два рівнозначних мнемонічних імена (if equal — якщо дорівнює або if zero — якщо нуль).

Синтаксис команди:

loope коротка_мітка

loopz коротка_мітка

Спрощений алгоритм роботи команди loope (loopz) приведений на рисунку 3, опущені блоки ініціалізації і зменшення лічильника.

Усі те, що говорилося для команди loop, справедливо і для команди loope (loopz), додається ще перевірка прапора ZF. Застосовується дана команда у випадку, якщо потрібно достроково вийти з циклу, як тільки знаходиться перший елемент, відмінний від заданої величини.

Рис.3. Спрощений алгоритм роботи команди loope (loopz).

3.3.3. Команда loopne (loopnz) перехід по лічильнику і якщо не дорівнює

Дана команда теж має два рівнозначних мнемонічних імена (if not equal — якщо не дорівнює або if not zero — якщо не нуль). На відміну від попередньої команди перевіряється, скинутий чи ні прапор нуля (ZF=0?).

Синтаксис команди:

loopne коротка_мітка

loopnz коротка_мітка

Рис.4. Спрощений алгоритм роботи команди loopne (loopnz).

Спрощений алгоритм роботи команди loopne (loopnz) приведений на рисунку 4, опущені блоки ініціалізації і зменшення лічильника.

Усі те, що говорилося для попередньої команди, справедливо і для команди loopne (loopnz). Застосовується дана команда у випадку, якщо потрібно достроково вийти з циклу, як тільки знаходиться перший елемент, дорівнює заданій величині.

4. Методичні вказівки з оформлення звіту

Звіт до лабораторної роботи повинен містити:

тему лабораторної роботи;

формулювання мети і задач, що вирішуються в ході виконання роботи;

докладний про хід виконання завдання, із наведенням: алгоритмів, текстів програм, умістом комірок пам’яті та регістрів мікропроцесора, що були отримані у дебагері;

осмислені та аргументовані висновки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]