Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команды переходов

Команды сдвигов

Команды сдвигов используются для изменения содержимого регистров в соответствии с некоторым побитовым алгоритмом.

SAR – арифметический сдвиг вправо

SAL — арифметический сдвиг влево

SHR — логический сдвиг вправо

SHL — логический сдвиг влево

ROR — циклический сдвиг вправо

ROL — циклический сдвиг влево

RCR — циклический сдвиг вправо через флаг переноса

RCL — циклический сдвиг влево через флаг переноса

Команды переходов предназначены для управления логикой работы программы, организации процедур, организации логические конструкций IF...THEN...ELSE, и т.д.

Команда безусловного перехода (аналог goto):

JMP метка

В зависимости от типа перехода различают:

• Короткий переход (short). Адрес перехода находится в пределах -128...+127 байт от команды JMP. В машинном коде адрес перехода определяется относительным смещением.

Ближний переход (near). Адрес перехода находится в том же сегменте, что и команда JMP. В машинном коде адрес перехода определяется новым значением смещения (16 бит).

Дальний переход (far). Адрес перехода находится в другом сегменте памяти, и требует переопределения регистра CS. В машинном коде для дальнего перехода задаётся пара сегмент:смещение.

Команды условного перехода выполняют переход в зависимости от состояния флагов. Общий вид команды условного перехода:

Jcc метка (JZ, JE, JNE, JC, JS, JNLE и т.д.)

Команды условного перехода можно разделить на 2 группы — команды непосредственной проверки состояния флагов, и команды проверки результата сравнения. Для проверки результата сравнения используется несколько флагов, мнемоники команд отличаются в зависимости от вида операндов команды сравнения. Для беззнаковых используются JA, JB и подобные, для знаковых — JG, JL.

Мнемоника Условие
JA, JBE CF=0 и ZF=0
JAE, JNB, JNC CF=0
JB, JNAE, JC CF=1
JBE, JNA CF=1 или ZF=1
JE, JZ ZF=1
JG, JNLE ZF=0 и SF=OF
JGE, JNL SF=OF
JL, JNGE SF≠OF
JLE, JNG ZF=1 или SF≠OF
JNE, JNZ ZF=0
JNO OF=0
JO OF=1
JNP, JPO PF=0
JP, JPE PF=1
JNS SF=0
JS SF=1

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

В процессорах Intel предусмотрена специальная команда для организации циклов:

LOOP метка

При выполнении этой команды процессор уменьшает содержимое регистра CX на 1, после чего выполняют переход типа short если регистр CX не равен нулю.

Пример организации цикла:

mov cx, 10

loop_start: add ax, cx

loop loop_start

Для организации процедур предусмотрена специальная пара команд — CALL и RET.

CALL метка

При выполнении команды CALL процессор сохраняет адрес следующей за CALL команды в стеке, и выполняет переход на указанную метку (или адрес). При выполнении команды RET процессор считывает из стека слово, и загружает его в регистр IP. Таким образом выполняется переход на следующую за CALL команду.

Также предусмотрены команды работы со стековыми кадрами для облегчения передачи параметров в функции: ENTER и LEAVE,

<== предыдущая лекция | следующая лекция ==>
Логические команды | Директива SEGMENT
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 472; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.