Організація циклу за допомогою команди JMP (Другий спосіб)
Стр 1 из 2Следующая ⇒ ЛАБОРАТОРНА РОБОТА №6 КОМАНДИ ПЕРЕСИЛКИ ДАНИХ. ОЗНАЙОМЛЕННЯ З РОБОТОЮ ЦИКЛІВ
Мета роботи: ознайомитися зі структурою та реалізацією циклів в програмі.
Короткі теоретичні відомості Цикли, що дозволяють виконати деяку ділянку програми багаторазово, в будь-якій мові є однією з найбільш уживаних конструкцій. У системі команд МП 86 цикли реалізуються, головним чином, за допомогою команди loop (петля), хоча є й інші способи організації циклів. У більшості випадках число кроків в циклі визначається вмістом регістра СХ, тому максимальне число кроків складає 64 К. Організація циклічних переходів, як на мовах високого рівня, так і мовою assembler являє собою чудовий засіб, що дозволяє значно знизити код виконуваної програми. У загальному вигляді будь цикл записується в асемблері як умовний перехід.
Організація циклу за допомогою команди LOOP (Перший спосіб) Команда loop (анг. петля) виконує декремент вмісту регістра СХ (лічильник), і якщо воно не дорівнює 0, здійснює перехід на вказану мітку вперед або назад в тому ж програмному сегменті в діапазоні - 128... + 127 байт. Зазвичай мітка поміщається перед першою пропозицією тіла циклу, а команда loop є останньою командою циклу. Вміст регістра СХ розглядається як ціле число без знака, тому максимальне число повторень групи включених в цикл команд складає 65536 (якщо перед входом у цикл СХ = 0). Команда не діє на прапорці процесора.
Простий приклад організації циклічного переходу (з лічильником в регістрі cx) на мові Assembler:
У рядку (5) завантажуємо в CX кількість повторів (відлік буде йти від 10 до 0). У рядку (6) створюємо мітку (Label - мітка). Далі (рядки (7) - (9)) виводимо повідомлення. І в рядку (10) оператор loop зменшує на одиницю CX і, якщо він не дорівнює нулю, переходить на мітку Label1 (рядок (6)). Таким чином, рядок буде виведена на екран десять разів. Коли програма перейде на рядок (11), регістр CX буде дорівнює нулю.
Організація циклу за допомогою команди JMP (Другий спосіб) Команда jmp передає управління у вказану точку того ж або іншого програмного сегмента. Адреса повернення не зберігається. Команда не впливає на прапори процесора. Команда jmp має п’ять різновидів: 1. перехід прямої короткий (у межах - 128... + 127 байтів); 2. перехід прямої ближній (в межах поточного програмного сегменту); 3. перехід прямої дальній (у інший програмний сегмент); 4. перехід непрямий ближній; 5. перехід непрямий дальній.
Всі різновиди переходів мають одну і ту ж мнемоніку jmp, хоча і розрізняються коди операцій. У багатьох випадках транслятор може визначити вид переходу по контексту, в тих же випадках, коли це неможливо, слід використовувати атрибутні оператори (short - прямий короткий перехід; near ptr - прямий ближній перехід; far ptr - прямий дальній перехід; word ptr - непрямий ближній перехід; dword ptr - непрямий дальній перехід).
В результаті роботи програми буде зациклений блок рядків (6) - (10) (Виведення рядка PRIVET численна кількість разів) Рядки (10) - (11).
Читайте также: I. Організація проведення занять Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|