Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Команда преобразования байта в слово, а слова - в двойное слово




CBW

CWD

По команде CBW число из al переписывается в ax (дополнение выполняется знаковыми разрядами). Аналогично по команде CWD число из ax переписывается в два регистра dx и ax.

Команды передачи управления

JMP <адрес перехода>; имеет три модификации в зависимости от длины ее адресной части:

short - при переходе по адресу, который находится на расстоянии -128...127 байт относительно адреса данной команды (длина адресной части 1 байт);

near ptr - при переходе по адресу, который находится на расстоянии З2 Кбайта (-32768...32767 байт) относительно адреса данной команды (длина адресной части 2 байта);

far ptr - при переходе по адресу, который находится на расстоянии превышающем 32 Кбайта (длина адресной части 4 байта).

При указании перехода к командам, предшествующим команде перехода, ассемблер сам определяет расстояние до метки перехода и строит адрес нужной длины. При указании перехода к последующим частям программы необходимо ставить указатели short, near ptr и far ptr.

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

а) <имя>: nор (nор - команда «нет операции»);

б) <имя> label near (для внутрисегментных переходов);

в) <имя> label far (для внесегментных переходов).

Примеры:

а) jmp short b - переход по адресу b;

б) jmp [bx] - переход по адресу в регистре bx (адрес определяется косвенно);

в) a: пор -описание метки перехода «;

г) b label near - описание метки перехода «.

Команды условного перехода

<мнемоническая команда> <адрес перехода>

Набор инструкций процессора 8086 предусматривает большое разнообразие инструкций условных переходов, что позволяет вам осуществлять переход почти по любому флагу или их комбинации. Можно осуществлять условный переход по состоянию нуля, переноса, по знаку, четности или флагу переполнения и по комбинации флагов, показывающих результаты операций чисел со знаками.

Перечень инструкций условных переходов приводится в таблице 3.2.

 

Таблица 3.2 Инструкции условных переходов

Название Значение Проверяемые флаги
JB/JNAE Перейти, если меньше / перейти, если не больше или равно CF = 1
JAE/JNB Перейти, если больше или равно / перейти, если не меньше CF = 0
JBE/JNA Перейти, если меньше или равно / перейти, если не больше CF=1 или ZF=1
JA/JNBE Перейти, если больше / перейти, если не меньше или равно CF = 0 и ZF = 0
JE/JZ Перейти, если равно ZF = 1
JNE/JNZ Перейти, если не равно ZF = 0
JL/JNGE Перейти, если меньше чем / перейти если не больше чем или равно SF = OF
JGE/JNL Перейти, если больше чем или равно / перейти, если не меньше чем SF = OF
JLE/JNLE Перейти, если меньше чем или равно / перейти, если не больше, чем ZF = 1 или SF =OF
JG/JNLE Перейти, если больше чем / перейти, если не меньше чем или равно ZF = 0 или SF = OF
JP/JPE Перейти по четности PF = 1
JNP/JPO Перейти по нечетности PF = 0
JS Перейти по знаку SF = 1
JNS Перейти, если знак не установлен SF = 0
JC Перейти при наличии переноса CF = 1
JNC Перейти при отсутствии переноса CF = 0
JO Перейти по переполнению OF = 1
JNO Перейти при отсутствии переполнения OF = 0
CF - флаг переноса, SF - флаг знака, OF - флаг переполнения, ZF - флаг нуля, PF - флаг четности

 

Все команды имеют однобайтовое поле адреса, следовательно, смешение не должно превышать -128...127 байт. Если смещение выходит за указанные пределы, то используется специальный прием:

Вместо программируется

Jz zero jnz continue

Jmp zero

continue:

Команды организации циклической обработки

В качестве счетчика цикла во всех командах циклической обработки используется содержимое регистра cx.

- Команда организации цикла

LOOP <адрес перехода>; при каждом выполнении уменьшает содержимое регистра cx на единицу и передает управление по указанному адресу, если cx не равно 0:

mov cx, loop_count; загрузка счетчика

begin_loop:

;... тело цикла

Loop begin_loop

 

Примечание. Если перед началом цикла в регистр cx загружен 0, то цикл выполняется 35536 раз.





Поделиться с друзьями:


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 699 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

2515 - | 2249 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.