Циклы в языке Ассемблер.. Цикл со счетчиком Цикл со счетчиком можно организовать с помощью конструкций IF и GOTO. В нашем примере тело цикла должно повторяться.

Презентация:



Advertisements
Похожие презентации
Организация циклов в Ассемблере. Цикл – это многократно повторяющаяся последовательность операторов.
Advertisements

С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
Цикл - это специальная конструкция языка, позволяющая запрограммировать многократное выполнение определённого блока команд Итерация - это каждый проход.
Числа со знаком и дополнительный код Синтаксис FASM Для записи отрицательного числа в программе на ассемблере используется символ -, например: x db -5.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Архитектура ЭВМ Практика 5. Программирование циклов.
Введение в C++ Урок 3-4. ОПЕРАТОРЫ ЦИКЛА Операторы цикла используются для организации многократно повторяющихся вычислений. - цикл с предусловием while,
Микропроцессоры и микропроцессорные системы. 1. Пересылка данных MOV приемник, источник- Пересылка данных Базовая команда пересылки данных. Копирует содержимое.
Циклом Циклом называется операция, в которой одни и те же действия повторяются многократно. Цикл состоит из оператора цикла и тела цикла. Оператор цикла.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
далее цикл с известным числом шагов цикл с неизвестным числом шагов (цикл с условием)цикл с неизвестным числом шагов (цикл с условием) что такое цикл?
Название цикла: 1.WHILE (цикл с предусловием)WHILE (цикл с предусловием) 2.FOR (цикл с параметром)FOR (цикл с параметром) 3.REPEAT (цикл с постусловием)REPEAT.
ПРОГРАММИРОВАНИЕ ПОВТОРЕНИЙ МОУ «Средняя общеобразовательная школа 41» Учитель информатики: Рассохина Г.В. САРАНСК 2008.
Организация циклов Компьютер может заданное число раз выполнить одни и те же действия с разными данными. Повторяющиеся действия в программировании называются.
Цикл – это многократно выполняемая последовательность операторов (команд). Существует два основных цикла: цикл с предусловием и цикл с постусловием. В.
Архитектура ЭВМ Практика 4. Программы с ветвлениями.
Основы программирования Pascal ABC. 2 Циклы Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным числом шагов цикл.
Microsoft® Small Basic Условия и циклы Предполагаемое время работы с этим уроком: 2 часа.
Понятие циклов и их применение к решению задач по программированию на языке Pascal.
Работа с массивами Массив – упорядоченный набор данных, обозначаемый одним именем.
Транксрипт:

Циклы в языке Ассемблер.

Цикл со счетчиком Цикл со счетчиком можно организовать с помощью конструкций IF и GOTO. В нашем примере тело цикла должно повторяться 10 раз. Сначала нужно инициализировать счетчик. Затем выполняем тело цикла, после этого увеличиваем счетчик на 1. Проверяем: если счетчик меньше 10, то начинаем опять выполнять тело цикла, если же счетчик равен 10, то мы выходим из цикла. for_start: mov cx,0 ;инициализируем счетчик СХ= 0 for_loop: ;метка для перехода назад... ;тело цикла inc сх ;увеличиваем СХ на 1 cmp сх,10 ;сравниваем СХ с 10 jnz for_loop ;если не равно, переход на ;for_loop for_finish: ;если СХ = 10, выходим

Цикл со счетчиком for_start: mov i, 0 ;переменная типа dword 1 = 0 for_loop: ;метка для перехода назад... ;тело цикла inc i ;увеличиваем i на 1 cmp i, 10 ;сравниваем i с 10 jnz for_loop ;если не равно, переход на for_loop for_finish: ;если равно, выходим Рассмотрим другую версию цикла FOR. Она работает так же, как предыдущая, но счетчик хранитьcя не в регистре, а в памяти, в переменной i. Еще одна версия цикла, использующая команду DEC и команду проверки флага ZF вместо команды сравнения СМР. for_start: mov есх,10 ;ЕСХ = 10 for_loop: ;метка для перехода назад... ;тело цикла dec есх ;уменьшаем ЕСХ на 1 jnz for_loop ;если не 0, переходим на for_loop for_finish: ;если 0, выходим из цикла

Команда цикла LOOP for_start: mov сx, 10 ;CX = итераций for_loop: ;метка для возврата назад... ;тело цикла loop for_loop ;уменьшаем СХ, если не 0, переходим ;к for_loop for_finish: ;выход из цикла В CISC-процессорах для организации цикла можно использовать команду LOOP. LOOP метка Подобно команде MUL, команда LOOP работает с двумя операндами. Первый операнд фиксирован, и мы не можем его указать явно. Это значение регистра ЕСХ (или СХ). Второй это адрес целевой метки цикла. Инструкция LOOP уменьшает значение регистра ЕСХ (СХ) на единицу и, если результат не равен 0, то она переходит на указанную метку.

Команда цикла LOOPZ и LOOPNZ for_start: mov cx,10 ;СХ = 10 for_lоор: ;метка для возврата назад … ;тело цикла FOR ;где-то здесь изменяется регистр ВХ cmp bx,3 ;ВХ равен 3? loopz for_loop ;СХ=СХ-1; если СХО, и если ВХ=3, ;переход к for_loоp for_finish: ;если СХ =0 или если ВХ 3, выходим Команда LOOPZ позволяет организовать цикл с проверкой дополнительного условия. Например: цикл нужно выполнить, как и раньше, не более 10 раз, но только при условии, что регистр ВХ содержит значение 3. Как только значение в регистре ВХ изменится, цикл нужно прервать. LOOPZ метка LOOPNZ метка Команда LOOPZ уточняет условие перехода следующим образом: переход на указанную метку произойдет, если СХ не содержит нуля и в то же время флаг ZF равен единице. Команда LOOPNZ работает аналогично, но дополнительное условие противоположно: переход будет выполнен только если СХ (ЕСХ) не равен 0 и в то же время ZF равен 0.

Пример использования циклов Программа, которая будет печатать все буквы английского алфавита. ASCII-коды этих символов расположены последовательно, поэтому можно выводить их в цикле. Для вывода символа на экран используется функция DOS 02h (выводимый байт должен находиться в регистре DL). mov ah,02h ;Для вызова функции DOS 02h - вывод символа mov dl,'A' ;Первый выводимый символ mov cx,26 ;Счётчик повторений цикла metka: int 21h ;Обращение к функции DOS inc dl ;Следующий символ loop metka ;Команда цикла mov ah,09h ;Функция DOS 09h - вывод строки mov dx,press ;в DX адрес строки int 21h ;обращение к функции DOS mov ah,08h ;функция DOS 08h - ввод символа int 21h ;обращение к функции DOS Команды «int 21h» и «inc dl» будут выполняться в цикле 26 раз. Для того, чтобы программа не закрылась сразу, используется функция DOS 08h ввод символа с клавиатуры без эха, то есть вводимый символ не отображается. Перед этим выводится предложение нажать любую кнопку.

Пример использования циклов Необходимо вывести на экран цифры от 0 до 9, используя цикл с предусловием и цикл с постусловием. Цикл с предусловием: mov dl, '0' mov ah, 02 cikl: cmp dl, '9' ja end_cikl int 21h inc dl jmp cikl end_cikl: Цикл с постусловием: mov dl, '0' mov ah, 02 cikl: int 21h inc dl cmp dl, '9' jbe cikl

Пример использования циклов Необходимо вывести на экран цифры от 0 до 9, используя цикл со счетчиком. Цикл с предусловием: mov cx, 10 mov dl, '0' mov ah, 02 cikl: int 21h inc dl loop cikl