Studopediya

КАТЕГОРИЯ:


Астрономия- (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) Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военни бизнесмен (14632) Висока technologies- (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къща- (47672) журналистика и смирен (912) Izobretatelstvo- (14524) външен >(4268) Informatika- (17799) Iskusstvo- (1338) историята е (13644) Компютри- (11,121) Kosmetika- (55) Kulinariya- (373) културата е (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23702) математиците на (16968) Механична инженерно (1700) медицина-(12668) Management- (24684) Mehanika- (15423) Naukovedenie- (506) образователна (11852) truda- сигурност (3308) Pedagogika- (5571) Poligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97 182 ) индустрия- (8706) Psihologiya- (18388) Religiya- (3217) Svyaz (10668) Agriculture- (299) Sotsiologiya- (6455) на (42831) спортист строително (4793) Torgovlya- (5050) транспорт ( 2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Electronics- (8441) Elektrotehnika- (4623) Мощност инженерно ( 12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

А инструкция за условно отклонение Jx




CMP и сравнителен тест Отбори

Отбори CMP и TEST се използва за сравняване на два операнда. Операндите могат да бъдат или регистри или адрес на паметта, един размер операнд - 8, 16 или 32 бита.

O1 строителство, O2

RMC отбор - акроним за «сравни», «за сравнение". Тя работи като SUB: O2 операнд се изважда от O1. Резултатът не се съхранява никъде, отборът просто се променя за знаците. Екипът RMC може да се използва за сравняване на цели неподписани номера, както и да се сравни броя със знак.

команда TEST работи като строителството, но вместо да се извади го изчислява побитови и на операнди. инструкции Резултати - променили знамената приписват регистрирате. Ние можем да използваме на тест за проверка на стойностите на отделните битове в битов масив.

Примери за използване на тези команди:

SMR ах, 4; AH сравнение със стойността на 4

дл SMR, ах; Ние сравняваме DL с Академията на науките

SMR [diameterl], ах; Ние сравняваме променливата "diameter1" с AH

CMP брадва, [diameterl]; сравни AX променлива "diameterl"

CMP EAX, ECx; сравни регистри EAX и ECX

тест брадва, 00000100b; Ние проверяваме стойността на втория (третия вдясно) бита

Друг начин да се промени последователността на изпълнение на инструкция е да се използва инструкция за условно отклонение. В асемблер има много команди условно скок. Имената на тези команди се различават в зависимост от условията на прехода.

Условия стойности включва един или повече флагове в регистъра на знак. Действието на тези команди по същия начин: ако условието е вярно, да бъдат изпратени на този етикет, ако не, тогава процесора ще продължи да изпълнява програмата със следната команда.

Общо условен формат клон инструкция е, както следва:

Jx metka_naznacheniya

Помислете за най-често срещаните команди:

JZ loop_1; пристъпи към loop_1, ако ZF на флага = 1

JC loop_2; пристъпи към loop_2, ако флага CF = 1

JS loop_3; постъпления да loop_3, ако знамето SF = 1

джо loop_4; пристъпи към loop_4, ако преливане флага на = 1

Всяко състояние може да бъде неутрализиран, например:

jnz is_true; постъпления да is_true, ако ZF на флага = 0

Само имената се формират от JNC екипи, JNS и JNO. С цел по-добре да си спомня имената на отборите, което трябва да запомните няколко думи на английски: равен - равен, по-горе - по-голям, по-долу - долу, нула - нула, по-голяма - над, по-малко - по-малко.

По този начин, JE - Jump ако Равен (Направо ако Равно), JNE - Jump, ако не Равен (Направо ако не Равно), JA - скок, ако по-горе (Направо ако по-голяма), и т.н.

Таблица 10.1 обобщава инструкция за условно отклонение на базата на условие, което проверява процесора (вместо "да отида", използвайки съкращението скок).

Таблица. 8.1



o1 == o2 o1 = o2 o1! = o2 o1 <> O2 O1> O2 O1 <O2 O1 = <а2 O1> O2 =
Инструкции за неподписани номера JE (JZ) JNE (JNZ) JA (JNBE) JB (JNAE) ЮНА (JBE) JNB (JAE)
Направо, ако същото Направо, ако 0 Направо, ако не равна Jump, ако не 0 Скок, ако по-скок, ако не по-малко от или равно Скок, ако по-малко скок, ако не по-голямо от или равно Направо, ако не и повече, да скачат, ако по-малко или равно Скок, ако не по-малко скок, ако по-голямо от или равно
Инструкции за подписани номера JE (JZ) JNE (JNZ) JG (JNLE) JL (JNGE) JNG (JLE) JNL (JGE)
Направо, ако същото Направо, ако 0 Направо, ако не равна Jump, ако не 0 Скок, ако по-скок, ако не по-малко от или равно Скок, ако по-малко скок, ако не по-голямо от или равно Направо, ако не и повече, да скачат, ако по-малко или равно Скок, ако не по-малко скок, ако по-голямо от или равно

Подобно на екипите MUL и DIV, за да работят с числа със знак е друг набор от условни инструкции клон. Причината за това е, че състоянието е съставен от стойностите на други флагове.

Адресът на получателя на условно клон инструкция трябва да бъде в рамките на 128 байта: те осъзнават, преходи кратко тип. Ако имате нужда от "прехода" отвъд 128 байта, че е необходимо да се уточни условно етикета клон инструкция, на която ще бъде JMP екип, който ще извърши допълнително преход.

Пример 1. Да предположим, че трябва да отиде в m3 на етикета, ако AX на регистър съдържа стойност 3. На първо място, ние трябва да се провери дали е налице тройна регистър AX. За да направите това, използвайте командата CMP. За тестване на половете се прилага команда JZ, както е показано в таблицата на условни инструкции клон.

SMR ах, 3; Ние сравняваме AX 3

JZ m3; отидете на "m3", ако AX = 3

Ако AX = 3, тогава JZ команда ще скочи до M3, на етикета, в противен случай ще бъде продължена програмата със следната команда за JZ.

Пример 2. Да предположим, че трябва да напишете в асемблер С следната конструкция:

ако (Ал == CL) бл = 1 иначе, ако (Ал> CL) бл = 2 останало бл = 3;

Вариант 1:

CMP Ал, сантилитра; Ние сравняваме AL и CL

JZ m1; отидете на М1, ако AL = CL

CMP Ал, сантилитра; Ние сравняваме AL и CL

йа m2; пристъпи към М2, ако AL> CL

Mov бл, 3; последния случай - просто се зареди в 3 BL

end_if :; Просто маркирате, символизиращ края на МФ

JMP. , , ,

m1 :; марка m1

Mov бл, 1; BL = 1

JMP end_if; пристъпи към end_if

m2 :; етикет m2

Mov бл, 2; BL = 2

JMP end_if; пристъпи към end_if

Вариант 2:

Superior кодов фрагмент:

Mov бл, 1; веднага BL = 1

CMP Ал, сантилитра; Ние сравняваме AL и CL

JE end_if; Отиди на края на програмата, ако AL = CL

Mov бл, 2; BL = 2

CMP Ал, сантилитра; Ние сравняваме AL и CL

йа end_if; Отиди на края на програмата, ако AL> CL

Mov бл, 3; BL = 3

end_if; край на програмата

Нов пример за това е по-кратък, но няма ограничение до съвършенство, и ние все още може да го подобри. Инструкцията MOV не променя флаговете се регистрират, така че във втората сравнението не е необходимо.

8.2. Дизайнът на управляваща верига

Един цикъл е повторение на последователност от команди, докато определено условие. езиците на високо равнище програмиране известни видове много цикли, включително:

• с брояч цикъл (цикъл ЗА), повтаряйки предварително определен брой пъти;

• цикъл с условие (докато цикъл), повтаря дотогава, докато условието е вярно;

• цикъл с обърнати състояние (контур ДО), повтаря дотогава, докато условието стане истина.





; Дата: 07.12.2014; ; Прегледи: 899; Нарушаването на авторските права? ;


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



ТЪРСЕНЕ:


Вижте също:



zdes-stroika.ru - Studopediya (2013 - 2017) на година. Тя не е автор на материали, и дава на студентите с безплатно образование и използва! Най-новото допълнение , Al IP: 66.102.9.22
Page генерирана за: 0.05 секунди.