Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лекция № 4. Условные переходы. Арифметиченские команды. BCD числа.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Микропроцессор имеет 18 команд условного перехода, позволяющие проверить: – отношение между операндами со знаком (больше-меньше); – отношение между операндами без знака (выше-ниже); – состояние арифметических флагов zf,sf, cf, of, pf. Команды условного перехода имеют одинаковый синтаксис: Jcc метка_перехода
Межсегментной передачи управления в условных переходах не допускается (максимальный переход равен размеру сегмента). Источниками условия для перехода могут быть: – любая команда, изменяющая состояние арифметических флагов; – команда сравнения cmp; – состояние регистра ecx/cx. Команда cmp выполняет вычитание операторов и устанавливает флаги, не записывает результат вычитания на место первого операнда. Cmp операнд_1, операнд_2
Значения аббревиатур в названии команды jcc:
Пример 7: сравним очередной элемент массива с 5:
Команды условного перехода и флаги Cmp x, y
Пример 8: надо преобразовать строчные буквы в прописные. Строчным буквам в таблице ASCII символов соответствует диапазон 61h-7ah, прописным – 41h-5ah. Для выполнения преобразования между строчными и прописными буквами достаточно инвертировать 5 бит. Например: а – 01100001 z – 01111010 А – 01000001 Z – 01011010
Таблица ASCII кодов.
Команды условного перехода и регистр есх/сх. Регистр есх/сх выполняет роль счётчика в командах управления циклами и при работе с цепочками символов. Синтаксис этой команды таков: – Jcxz метка_перехода (Jump if is zero) – прыжок, если сх ноль; – jecxz метка_перехода (Jump equal ecx zero) – переход, если есх ноль.
В отличие от других команд условной передачи управления, команды Jcxz/ jecxz могут адресовать только короткие переходы – на -128 байт или на +127 байт от следующей за ней командой.
Организация циклов В системе команд микропроцессора существует три команды для работы с циклами. Данные команды: 1) loop метка_перехода – повторить цикл. Работа команды заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; если (есх/сх)>0, то управление передаётся на метку перехода; если (есх/сх)=0, то управление передаётся на следующую после loop команду;
2) loope/loopz метка_перехода – повторить цикл пока сх=0 или zf=0. Команды loope и loopz – абсолютные синонимы. Работа команд заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; в) анализа состояния флага нуля zf; если (есх/сх)>0, и zf=1, управление передаётся на метку перехода; если (есх/сх)=0, или zf=0, управление передаётся на следующую после loop команду;
3) loopne/loopnz метка_перехода – повторить цикл пока сх<>0 или zf=1. Команды loope и loopz – абсолютные синонимы. Работа команд заключается в выполнении следующих действий: а) декремента регистра есх/сх; б) сравнение регистра есх/сх с нулём; в) анализа состояния флага нуля zf; если (есх/сх)>0, и zf=0, управление передаётся на метку перехода; если (есх/сх)=0, или zf=1, управление передаётся на следующую после loop команду;
Команды loop loope/loopz и loopne/loopnz реализуют только короткие переходы (от -128 до _127 байтов). Для работы с длинными циклами необходимо использовать команду jmp.
При работе с вложенными циклами возникает проблема сохранения значения счётчика внешнего цикла есх/сх на время выполнения внутреннего цикла. Для этого можно использовать регистры, ячейки памяти или стек. Пример программы, содержащей три цикла вложенных один в другой.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 575; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.46.74 (0.01 с.) |