Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Mov AX, ES:[BX][SI] загрузить в АХ 5-й элемент массива w




3.1.2. Команды сравнения, условного и безусловного перехода. При сравнении данных следует применять команду микропроцессора cmp op1,op2 формат которой совпадает с форматом рассмотренных в подразделе 2.1.2 логических команд. Анализ полученного результата можно проводить с использованием команд условного перехода, анализирующих флаги ZF, SF, CF, OF. Мнемокоды команд условного перехода, применяемых для сравнения беззнаковых чисел, применяемых после команды cmp, приводятся в таблице 3.1.

Таблица 3.1

Команды условного перехода, используемые после команды сравнения СМР

Мнемокод команды Условие для перехода по смр ор1, ор2 Состояние флагов для перехода
JZ; JE / JNZ; JNE op1=op2 / op1<>op2 ZF=1 / ZF=0
JB op1<op2 CF=1
JBE op1<=op2 CF=1 or ZF=1
оp1>op2 CF=0 and ZF=0
JАE оp1>=op2 CF=0

В качестве аналогов команд JE/JNE при логических операциях целесообразно применять команды JZ/JNZ (ZF=1/ZF=0). Пример: сравнить два слова А и В, если А>B то переход на метку greater:

mov AХ, A загрузка содержимого ячейки А в регистр АХ;
cmp AX, B команда сравнения содержимого AХ и B;
ja @greater условный переход на метку greater, если A>B;
……….. пропускаемый, в случае невыполнения условия, код;
@greater: метка указывает на выполняемые после нее команды.

Для выполнения безусловного перехода следует применять команду jmp ор, где операнд указывает на адрес перехода, в качестве которого, как правило, указывается метка.

@lbl: метка @lbl;
……….. произвольный программный код;
jmp @lbl безусловный переход на метку @lbl.

 

3.1.3. Оператор цикла. С помощью команд перехода можно реализовать практически любые разветвления и циклы. Среди циклов на практике наиболее часто встречаются циклы с заранее известным числом повторений (for-циклы), поэтому в систему команд многих ЭВМ обычно включают дополнительные команды, упрощающие реализацию подобных циклов. В языке Assembler для МП i80x86 такая команда называется оператором цикла loop op, где операнд указывает на адрес перехода, в качестве которого, как правило, указывается метка. Оператор цикла loop, осуществляющий 10 итераций,эквивалентен следующему фрагменту программы.

mov CX, 10 CX - счетчик цикла (число повторений)
@m1: метка @m1;
……….. тело цикла (произвольный программный код);
dec CX уменьшение значения в СХ на 1;
сmp CX, 0 сравнение значения в СХ с 0;
jnz @m1 переход на метку @m1, если значение в СХ не равно 0.

Соответствующий цикл, организованный с помощью оператора loop приводится ниже:

mov CX, 10 CX - счетчик цикла (число повторений);
@m1: метка @m1;
……….. тело цикла (произвольный программный код);
loop @m1 переход на метку @m1, если значение в СХ не равно 0.

Рассмотрим основные особенности практического использования оператора цикла loop. Во-первых, команда loop требует, чтобы в качестве счетчика цикла обязательно использовался только регистр СХ. Во вторых, начальное значение для СХ должно быть присвоено до цикла, причем это значение должно быть точно равно количеству повторений цикла. Например, если цикл должен выполняться 100 раз, то в регистр СХ необходимо записывать именно 100, а не 99 или 101. В третьих, если начальное значение в регистре СХ равно 0, то в большинстве компиляторов Assemler операторы тела цикла не будут выполняться не одного раза.




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


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


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



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




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