Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
КОМАНДИ ОПЕРАЦІЙ НАД БІТАМИ.
Ця група складається із 12 команд, короткий опис яких наведений у табл. 8. Ці команди виконують операції над окремими бітами: скид, встановлення, інверсію біта, а також логічне “І” та “АБО”. В якості “логічного” акамулятора, який використовується у всіх операціях з двома операндами, використовується ознака переносу С ( розряд D7 PSW ). В якості операнда можуть використовуватись усі 128 біт із резидентної пам’яті даних та регістри спеціальних функцій, які допускають адресацію окремих біт. Таблиця 8 Команди операцій над бітами.
КОМАНДИ ПЕРЕДАЧІ КЕРУВАННЯ. Ця група команд включає (дивися табл. 9) команди безумовного та умовного переходу, команди виклику із підпрограм та команди повернення із підпрограм. Команда безумовного переходу LJMP ( L - long - довгий ) здійснює перехід за абсолютним 16-бітним адресом, який вказаний у тілі команди, тобто команда забезпечує перехід у будь-яке місце пам’яті програм. Дія команди AJMP ( A - absolute - абсолютний ) аналогічна команді LJMP , але у тілі команди вказані лише 11 молодших розрядів адресу. Тому перехід здійснюється в межах сторінки розміром 2 Кбайт, при цьому треба враховувати, що спочатку вмістиме лічильника команд збільшується на 2 і тільки потімзмінює 11 розрядів адреса. На відміну від попередніх команд, у команді SJMP ( S - short - короткий ) вказаний не абсолютний, а відносний адрес переходу. Величина зміщення rel розглядається як число зі знаком. Тому перехід можливий в межах -128...+127 байт відносно адреса команди, яка іде за командою SJMP. Команда непрямого переходу JMP @A+DPTR дозволяє обраховувати адрес переходу у процесі виконання самої програми.
Таблиця 9 Команди передачі керування.
Команди умовного переходу можна перевіряти наступними умовами: JZ - акумулятор дорівнює нулю; JNZ - акумулятор не дорівнює нулю; JC - біт переноса С встановлений у одиницю; JNC - біт переносу С встановлений у нуль; JB - прямоадресований біт рівний 1; JNB - прямоадресований біт рівний 0; JBC - прямоадресований біт рівний 1 і скидається у нульове значення при виконанні команди. Всі команди умовного переходу вміщають короткий відносний адрес, тобто перехід може здійснюватись в межах -128...+127 байт відносно наступної команди. Команда DJNZ використовується для організації програмних циклів. Регістр Rn або байт за адресом ad, який вказаний у тілі команди, вміщує лічильник повторень циклу, а зміщення rel - відносний адрес переходу до початку цикла. При виконанні команди вмістиме лічильника зменшується на 1 і перевіряється на 0. Якщо значення вмістимого лічильника не дорівнює 0, то здійснюється перехід на початок циклу, в іншому випадку виконується наступна команда. Команда CJNZ використовується для реалізації процедур чекання зовнішніх подій. В тілі команди вказані “координати” двох байт і відносний адрес переходу rel. В якості двох байт можуть бути використанні, наприклад, значення вмістимого акумулятора і прямоадресованого байта або непрямоадресованого байта і константи. При виконанні команди значення вказаних двох байтів порівнюються і у випадку, якщо вони не однакові, здійснюється перехід. Наприклад, команда WAIT: CJNE A,PO,WAIT буде виконуватись до тих пір, поки значення на лініях порту РО не співпадуть зі значеннями вмістимого акумулятора. Дія команд виклику процедур аналогічна дії команд безумовного переходу. Єдина відмінність у тому, що вони зберігають у стеці адрес повернення із процедури. Команда повернення із підпрограми RET повертає із стека значення вмістимого лічильника команд, а команда повернення із процедури обробки переривання RETI, крім того, дозволяє переривання обробленого рівня. Команди RET та RETI не відрізняють, якою командою - LCALL чи ACALL - була викликана підпрограма, так як і в тому, і в іншому випадку у стеці зберігається повний 16-розрядний адрес повернення. Слід відмітити, що більшість АСЕМБЛЕРів допускає загальну мнемоніку JMP - для команд безумовного переходу та CALL - для команд виклику підпрограм. Конкретний тип команди визначається АСЕМБЛЕРом, виходячи із “довжини” переходу чи виклику. ДИРЕКТИВИ АСЕМБЛЕРА. Асемблер має наступні директиви ( псевдооператори ): h - представлення числа у шістнадцятковому вигляді. Наприклад: 20h, 4Ah. b - представлення числа у двійковому вигляді. Наприклад: 10110010b. # - запис числа у комірку пам’яті або у регістр. Наприклад: mov R0,#4Fh означає, що регістру R0 присвоюється значення числа 4Fh. @ < регістр > - виклик комірки пам’яті, адрес якої вказаний регістром. ( )- запис байта у комірку пам'яті, адрес якої вказаний у дужках. ORG <адрес>- команда встановлює адрес, з якої буде починатися програма або дані. Наприклад: ORG 100h. < ім’я мітки >: - позначення мітки. Наприклад: BEGIN:. < ім’я змінної > EQU < значення змінної > - псевдооператор присвоєння. Наприклад: DR EQU 11011b означає DR=11011b. [<ім'я мітки>]: DB <байт даних> - байт даних. Цей оператор резервує пам’ять під розміщення байта даних. Наприклад: Lab1: DB 0FEh,’розрахунок’ Це означає, що у пам’яті під адресом Lab1 буде зарезервовано 11 байт під число FEh та слово РОЗРАХУНОК. [<ім'я мітки>]: DW <слово даних> - слово даних. Цей оператор резервує пам’ять під розміщення слова даних. Наприклад: Lab2: DW 0FE50h,’розрахунок’ Це означає, що у пам’яті під адресом Lab2 буде зарезервовано 12 байт під число FE50h та слово РОЗРАХУНОК. [<ім'я мітки>]: DS <стрічка даних> - стрічка даних. Цей оператор резервує пам’ять під розміщення строки даних. Наприклад: Lab3: DS ’розрахунок’ Це означає, що у пам’яті під адресом Lab3 буде зарезервовано місце під слово РОЗРАХУНОК. $-< ім’я мітки > - ця величина визначає довжину даних або масиву від мітки до місця, де стоїть таке позначення. Наприклад: Lab4: DW ‘поїхали’ K EQU $-Lab4 Це означає, що змінній K присвоюється довжина слова ПОЇХАЛИ, тобто число 7 ( К=7). |
||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-06-01; просмотров: 224. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |