Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

КОМАНДИ ОПЕРАЦІЙ НАД БІТАМИ.




Ця група складається із 12 команд, короткий опис яких наведений у табл. 8. Ці команди виконують операції над окремими бітами: скид, встановлення, інверсію біта, а також логічне “І” та “АБО”. В якості “логічного” акамулятора, який використовується у всіх операціях з двома операндами, використовується ознака переносу С ( розряд D7 PSW ). В якості операнда можуть використовуватись усі 128 біт із резидентної пам’яті даних та регістри спеціальних функцій, які допускають адресацію окремих біт.

Таблиця 8

Команди операцій над бітами.

МНЕМОКОД КОП Т В С АЛГОРИТМ
   CLR C  CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C     11000011 11000010 11010011 11010010 10110011 10110010 10000010 10110000 01110010 10100000 10100010 10010010   1 4 1 4 1 4 4 4 4 4 4 4     1 2 1 2 1 2 2 2 2 2 2 2     1 1 1 1 1 1 2 2 2 2 1 2     C =0 (bit)=0 C =1 (bit)=1 C =/C (bit)=/(bit) C =C /\ (bit) C =C /\ /(bit) C =C \/ (bit) C  =C \/ /(bit) C =(bit) (bit)=C  

 

КОМАНДИ ПЕРЕДАЧІ КЕРУВАННЯ.

Ця група команд включає (дивися табл. 9) команди безумовного та умовного переходу, команди виклику із підпрограм та команди повернення із підпрограм.

Команда безумовного переходу LJMP ( L - long - довгий ) здійснює перехід за абсолютним 16-бітним адресом, який вказаний у тілі команди, тобто команда забезпечує перехід у будь-яке місце пам’яті програм.

Дія команди AJMP ( A - absolute - абсолютний ) аналогічна команді LJMP , але у тілі команди вказані лише 11 молодших розрядів адресу. Тому перехід здійснюється в межах сторінки розміром 2 Кбайт, при цьому треба враховувати, що спочатку вмістиме лічильника команд збільшується на 2 і тільки потімзмінює 11 розрядів адреса.

На відміну від попередніх команд, у команді SJMP ( S - short - короткий ) вказаний не абсолютний, а відносний адрес переходу. Величина зміщення rel розглядається як число зі знаком. Тому перехід можливий в межах -128...+127 байт відносно адреса команди, яка іде за командою SJMP.

Команда непрямого переходу JMP @A+DPTR дозволяє обраховувати адрес переходу у процесі виконання самої програми.


 

Таблиця 9

Команди передачі керування.

МНЕМОКОД КОП Т В С АЛГОРИТМ
LJMP ad16 AJMP ad11   SJMP rel   JMP @A+DPTR   JZ rel JNZ rel JC rel JNC rel JB bit,rel JNB  bit,rel JBC bit,rel   DJNZ Rn,rel DJNZ ad,rel CJNE A,ad,rel CJNE A,#d,rel CJNE Rn,#d,rel СJNE @Ri,#d,rel LCALL ad16 ACALL ad11   RET RETI   NOP   00000010   a10a9a8 00001 10000000   01110011   01100000 01110000 01000000 01010000 00100000 00110000 00010000   11011rrr 11010101 10110101 10110100 10111rrr 1011011i 00010010 a10a9a8 10001 00100010 00110010   00000000   12   6   5   1   5 5 5 5 11 11 11   5 8 8 10 10 10 12 6   1 1   1   3   2   2   1   2 2 2 2 3 3 3   2 3 3 3 3 3 3 2   1 1   1   2   2   2   2   2 2 2 2 2 2 2   2 2 2 2 2 2 2 2   2 2   1   Довгий безумовний перехід по всій пам’яті Безумовний перехід в межах 2кбайт Безумовний перехід в межах 256байт Безумовний перехід по непрямому адресу Перехід, якщо А=0 Перехід, якщо А<>0 Перехід, якщо С=1 Перехід, якщо С=0 Перехід, якщо (bit)=1 Перехід, якщо (bit)=0 Перехід, якщо (bit)=1 зі скидом його в нуль Команда циклу Команда циклу Перехід, якщо А<>(ad) Перехід, якщо А<>#d Перехід, якщо Rn<>#d Перехід, якщо (Ri)<>#d Довгий виклик підпрограми Виклик підпрограми в межах 2кбайт Повернення із підпрограми   Повернення із підпрограми обробки переривань Немає операції

 

Команди умовного переходу можна перевіряти наступними умовами:

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; просмотров: 182.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...