УСЛОВНЫЕ ПЕРЕХОДЫ, ЦИКЛЫ, СДВИГИ




 

Краткие сведения

Все команды условных переходов в микропроцессорах семейства 80х86 имеют следующий формат:

 

Код операции Смещение
8 битов 8 битов

 

Эффективный адрес перехода определяется как сумма адреса текущей команды (содержание счетчика адреса команды) и смещения. Если условие перехода, задаваемое кодом операции выполнено, то выполняется команда, определяемая эффективным адресом перехода, иначе - следующая по порядку команда. Признаком перехода является значение соответствующего флажка, которое установлено последней арифметической или логической командой. Список наиболее употребительных команд условного перехода и используемых флагов приведен в таблице 1.2.

Смещение рассматривается как целое число со знаком. То есть условный переход возможен в пределах [-128...+127] байт от команды перехода.

Команды цикла совмещают вычисление условия перехода и их анализ, с тем что переход всегда идет в пределах от 0 до 255 байт в сторону младших адресов.

Общий вид циклической программы с известным числом повторений представлен на рис. 2.а. Здесь тело цикла - произвольная последовательность команд.

 

 

Рис 2.1 Цикл и способы его программирования

 

На рис. 2.б. и 2.в приведены варианты программирования циклической программы, позволяющие выделить общие черты и различия выполнения цикла, с использованием тех или иных операторов. В обоих случаях счетчиком числа циклов является регистр СХ (для команды LOOP это обязательно). Возврат происходит до тех пор, пока счетчик не достигает нулевого состояния. Команда LOOP автоматически уменьшает СХ на единицу.


Список команд организации циклов приведен в таблице 2.1

 

Таблица 2.1

 

Мнемоника, формат Условие прекращения цикла
LOOP 8 бит смещ. (CX)¹0
LOOPZ 8 бит смещ. (CX)¹0 либо ZF=1
LOOPNZ 8 бит смещ. (CX¹0) либо ZF=0

 

Таблица 2.2

Название Мнемоника, формат Комментарий
Инверсия NOT adr (adr):= ^(adr)
Логическое ИЛИ OR DST, RST DST:= (DST) or ((RSC)
Логическое И AND DST, RST DST:= (DST) and ((RSC)
Исключающее ИЛИ XOR DST, RST DST:= (DST) Å ((RSC)
Тестирование TEST DST, RST Подобно END, но не меняет DST, но только воздействует на флаги

 

Таблица 2.3

Название Мнемоника, формат Комментарий
Логический сдвиг влево SHL OPR, CNT сдвиг OPR на СNT, битов влево LSB:=0, CF:= MSB
Логический сдвиг вправо SHR OPR, CNT сдвиг OPR на СNT, битов вправо MSB:=0, CF:= LSB
Арифметический сдвиг влево SAL OPR, CNT сдвиг OPR на СNT, битов влево освобождающиеся разряды принимают значение старшего
Арифметический сдвиг вправо SAR OPR, CNT сдвиг OPR на СNT, битов вправо освобождающиеся разряды принимают значение старшего
Циклический сдвиг влево ROL OPR, CNT сдвиг OPR на СNT, битов влево старшие биты “вдвигаются” со стороны младших
Циклический сдвиг вправо ROR OPR, CNT сдвиг OPR на СNT, битов вправо младшие биты “вдвигаются” со стороны старших
Циклический сдвиг влево через бит переноса RCL OPR, CNT Подобно ROR, но в петлю сдвига между старшим и младшим разрядом “включен” CF
Логический сдвиг вправо через бит переноса RCR OPR, CNT Подобно ROL, но в петлю сдвига между старшим и младшим разрядом “включен” CF

Примечание: MSB - младший бит слова или байта, LSB - старший бит.


В таблице 2.2 приведен список логических команд процессора. Логические команды оперируют над одноименными битами слов. В результате выполнения этих команд устанавливаются признаки результата (флаги) SF, ZF и PF, а СА и OF обнуляются.

В данной работе логические команды изучаются на примере их использования селективной установки, сброса для анализа отдельных битов в аргументах. Рассмотрим последовательность команд:

 

NOT AL
AND AL,0C3h
JZ <адрес перехода>

 

Переход происходит в том случае, если перед исполнением два старшие и два младшие разряды в регистре AL были установлены в единичное состояние. Константа (непосредственный операнд) во второй команде фрагмента называется маской.

Если требуется тестировать группу битов слова (или байта) в соответствии с одним и тем же признаком выгодно использовать циклические алгоритмы, в процессе исполнения, которых проверяемый код или маска сдвигаются. Список команд сдвигов представлен в таблице 2.3.

Подготовка к работе

2.2.1 Изучить систему логических команд процессоров семейства 80х86.

2.2.2 Приготовить тексты программ и ручную прокрутку исполнения алгоритмов в соответствии с индивидуальными заданиями выбираемыми преподавателем из п.2.3.

2.2.3 Приготовить таблицы для записи результатов выполнения работы.

Индивидуальные задания

а. Определит номер младшего из установленных в единицу разрядов в регистре DL, если все нули - результат равен 8.

б. Определить номер самого старшего бита из установленных в единицу в регистре DH, если все нули - результат равен 8.

в. определить число единиц в регистре АН.

г. Определить число единиц в разрядах с номерами от 0 до заданного К-го.

д. Проверить, есть ли в коде плотная группа единиц длиной больше заданного К.

е. Найти младшую единицу в коде и определить, сколько единиц следует за ней вплотную.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: