Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Организация циклов






Цикл, как известно, представляет собой важную алгоритмическую структуру, без использования которой не обходится, наверное, ни одна программа. Организовать циклическое выполнение некоторого участка программы можно, к примеру, используя команды условной передачи управления или команду безусловного перехода jmp. При такой организации цикла все операции по его организации выполняются “вручную”. Но, учитывая важность такого алгоритмического элемента, как цикл, разработчики микропроцессора ввели в систему команд группу из трех команд, облегчающую программирование циклов. Эти команды также используют регистр ecx/cx как счетчик цикла.

Дадим краткую характеристику этим командам: loop метка_перехода (Loop) — повторить цикл. Работа команды заключается в выполнении следующих действий:

-декремента регистра ecx/cx;

- сравнения регистра ecx/cx с нулем:

-если (ecx/cx) > 0, то управление передается на метку перехода;

-если (ecx/cx) = 0, то управление передается на следующую после loop команду.

loope/loopz метка_перехода (Loop till cx < > 0 or Zero Flag = 0) — повторить цикл, пока cx < > 0 или zf = 0.

Команды loope и loopz — абсолютные синонимы, поэтому используйте ту команду, которая вам больше нравиться. Работа команд заключается в выполнении следующих действий:

-декремента регистра ecx/cx;

-сравнения регистра ecx/cx с нулем;

-анализа состояния флага нуля zf:

-если (ecx/cx) > 0 и zf = 1, управление передается на метку перехода;

-если (ecx/cx) = 0 или zf = 0, управление передается на следующую после loop команду.

loopne/loopnz метка _перехода (Loop till cx < > 0 or Not Zero flag=0) — повторить цикл пока cx < > 0 или zf = 1.

Команды loopne и loopnz также абсолютные синонимы. Работа команд заключается в выполнении следующих действий:

-декремента регистра ecx/cx;

-сравнения регистра ecx/cx с нулем;

-анализа состояния флага нуля zf:

-если (ecx/cx) > 0 и zf = 0, управление передается на метку перехода;

-если (ecx/cx)=0 или zf=1, управление передается на следующую после loop команду.

 

 

22) Приведите основные принципы организации и обработки массивов в языке Ассемблер. Приведите примеры?

массив - структурированный тип данных, состоящий из некоторого числа элементов одного типа. Используя директивы label и rept. Пара этих директив может облегчить описание больших массивов в памяти и повысить наглядность такого описания. Директива rept относится к макросредствам языка ассемблера и вызывает повторение указанное число раз строк, заключенных между директивой и строкой endm. К примеру, определим массив байт в области памяти, обозначенной идентификатором mas_b. В данном случае директива label определяет символическое имя mas_b, аналогично тому, как это делают директивы резервирования и инициализации памяти. Достоинство директивы label в том, что она не резервирует память, а лишь определяет характеристики объекта. В данном случае объект — это ячейка памяти. Используя несколько директив label.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.