Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды условного перехода и регистр есх/сх.Содержание книги
Поиск на нашем сайте
Регистр есх/сх выполняет роль счётчика в командах управления циклами и при работе с цепочками символов. Синтаксис этой команды таков: – 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.
При работе с вложенными циклами возникает проблема сохранения значения счётчика внешнего цикла есх/сх на время выполнения внутреннего цикла. Для этого можно использовать регистры, ячейки памяти или стек. Пример программы, содержащей три цикла вложенных один в другой.
Сложение двоичных чисел без знака Если при сложении результат превышает размерность поля операнда, то результат оказывается неверным. Например: 254+5=259 (11111110+0000101=1 00000011). Для фиксирования ситуации выхода за разрядную сетку результата предназначен флаг переноса cf. Поэтому после операции сложения в программе предполагается включение участков кода, в которых анализируется флаг cf. Это можно сделать с помощью команды условного перехода jc <метка>.
В системе команд микропроцессора имеются три команды двоичного сложения: – INC <операнд>; операция инкремента, то есть увеличение значения операнда на 1. – ADD <операнд_1><операнд_2>; Принцип действия: операнд_1=операнд_1+операнд_2. В этой команде нельзя использовать переменную одновременно и для опернда_1, и для операнда_2. Команда ADD не различает числа со знаком и без знака. – ADC <операнд_1><операнд_2>; команда сложения с учётом флага переноса cf. Принцип действия: операнд_1=операнд_1+операнд_2+значение_cf.
Имеющиеся варианты приёмника и источник:
Сложим, например, два 64-битных целых числа: одно число находится в регистрах EDX:EAX, а другое в регистрах ЕВХ:ЕСХ: Add eax,ecx Adc edx,ebx Если при сложении младших двойных слов произошел перенос из старшего разряда (флаг CF=1), то он будет учтен следующей командой ADC.
Вычислим сумму 254+17 в регистр ах. При этом известно, что результат сложения выходит за границы операнда.
– XADD <операнд_1><операнд_2>; выполняет команду «обменять между собой и сложить». Выполняет сложение, помещает содержимое операнд_1 в операнд_2, — сумму операндов — в операнд_1. Операнд_2 всегда регистр, операнд_1 может быть регистром и переменной.
|
||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-09-13; просмотров: 448; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.169 (0.007 с.) |