Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Команди передачі даних




Дана група є найбільшою в системі команд МК 51 і містить 4 підгрупи: пересилок, завантаження, обміну даними і стекові команди. Крім того їх можна поділити на команди, які оперують з байтами та команди бітових операцій. Тут будуть розглядатись команди, які оперують з байтами (таблиця 8.14).

Таблиця 8.14- Команди передачі даних

Назва команди Мнемоніка КОП Т В Ц Операція
Команди пересилок
Пересилка в акумулятор з регістра (n=0 7) MOV A,Rn 11101ііі       (A)ß(Rn)
Пересилка в акумулятор прямоадресованого байта MOV A,ad         (A)ß(ad)
Пересилка в акумулятор байта з РПД (і=0,1) MOV A, @Ri 1110011і       (A)ß((Ri))
Пересилка в регістр з акумулятора MOVRn,A 11111ііі       (Rn)ß(A)
Пересилка в регістр прямоадресованого байта MOV Rn,ad 10101ііі       (Rn)ß(ad)
Пересилка за прямою адресою ак. MOV ad,A         (ad)ß(A)
Пересилка за прямою адресою регістра MOV ad,Rn 10001ііі       (ad)ß(Rn)
Пересилка прямоадресованого байта по прямій адресі MOV add, ads         (add)ß(abs)
Пересилка байта з РПД по прямій адресі MOV ad, @Ri 1000011і       (ad)ß((Ri))
Пересилка в РПД з акумулятора MOV @Ri, A 1111011і       ((Ri))ß(A)
Пересилка в РПД прямоадресованого байта MOV @Ri, ad 0110011і       ((Ri))ß(ad)  
Пересилка в акуму-лятор байта з ПП MOVC A, @A+DPTR         (A) ß((A)+ +(DPTR))
Пересилка в акуму-лятор байта з ПП MOVC A, @A+PC         (PC)ß(PC)+1 (A)ß((A)+(PC))
Пересилка в акуму-лятор байта з ЗПД MOVX A,@Ri 1110001і       (A)ß((Ri))
Пересилка в акуму-лятор байта з розширеної ЗПД MOVX A, @DPTR         (A)ß((DPTR))
Пересилка в ЗПД з акумулятора MOVX @Ri,A   1111001і       ((Ri))ß(A)
Пересилка в розши-рену ЗПД з акуму-лятора MOVX @DPTR,A         (DPTR)ß(A)
Команди завантаження
Завантаження в регістр константи MOV Rn,#d 01111ііі       (Rn)ß #d
Завантаження в акумулятор константи MOV A,#d         (A)ß#d  
Пересилка за прямою адресою константи MOV ad,#d         (ad)ß#d
Пересилка в РПД константи MOV @Ri, #d 0111011і       ((Ri))ß#d
Завантаження вказівника даних MOV DPTR, #d16         (DPTR)ß#d16
Стекові команди
Завантаження в стек PUSH ad         (SP)ß(SP)+1 ((SP))ß(ad)
Вилучення зі стека POP ad         (ad)ß(SP) (SP)ß(SP)-1
Команди обміну
Обмін акумулятора з регістром XCH A,Rn 11001ііі       (A) (Rn)
Обмін акумулятора з Прямоадресованим Байтом XCH A,ad         (A) (ad)  
Обмін акумулятора з байтом із РПД XCH A,@Ri 1100011і       (A) ((Ri))
Обмін молодшої тетради акумулятора з молодшою тетрадою байта РПД XCHD A,@Ri 1101011і       (A0-3) ((Ri) 0-3))

Команди пересилки даних мають три модифікації:

MOV - пересилки в межах резидентної пам’яті даних, регістрів, спеціальних функцій та портів;

MOVC - пересилки з пам’яті програм (внутрішньої та зовнішньої) в акумулятор;

MOVX - двонаправлені пересилки із зовнішньої пам’яті даних і акумулятора.

Команда MOV забезпечує двонаправлені пересилки, джерелами та приймачами яких з одного боку є акумулятор, а з другого - регістри оперативного призначення Rn (від R0 до R7 відповідного банку регістрів), комірки внутрішнього ОЗП, адреси яких (операнд ad задається в діапазоні адрес від 00 H до FF H) прямо задається в команді, комірки резидентної пам’яті даних (адреси від 00 Н до 7F H) вказується опосередковано через регістри R0 i R1 відповідного банку. Низка пересилок може виконуватись без участі акумулятора. Зокрема пересилки з однієї комірки внутрішнього ОЗП в іншу, адреса приймача (add) і джерела (ads) задається відповідно в другому і третьому байтах команди MOV, з комірки ОЗП в регістр оперативного призначення і навпаки. Можлива і опосередкована адресація комірки РПД через регістри R0 i R1. Основні способи пересилки з використанням команди MOV показані на таких прикладах:

MOV A,R3 ; Пересилка даних з регістра R3 в акумулятор
MOV P1,A ; Пересилка байта з акумулятора в порт Р1
MOV @R1,P2 ; Пересилка з порту Р2 в комірку РПД, адреса якої в;регістрі R1
MOV R5,P0 ; Пересилка байта з порту Р0 в регістр R5
MOV@R0,SUBF ; Пересилка прийнятого в послідовному каналі байта в;РПД

 

Команди MOVC забезпечують занесення до акумулятора байта з комірок пам’яті програм, адреса яких утворена сумою поточного вмісту акумулятора та вказівника даних (MOVC A,@A+DPTR) або сумою вмісту акумулятора і лічильника команд (MOVC A,@A+PC). Перша команда дозволяє пересилати байти з комірок, що знаходяться в повному адресному просторі зовнішньої пам’яті програм об’ємом 64 Кбайти, а друга - в суміщеному адресному просторі ПП (тобто ЗП складає 64 Кбайтів +256 байтів, що задаються байтом акумулятора). Дані команди зручно використовувати у тому випадку, коли готові результати розв’язку певної задачі написані в ПП (наприклад, таблиця sin x для цілих кутів, квадратів чисел тощо).

В МК51 при використанні команди MOVX @,Ri забезпечується доступ до 256 байтів ЗПД для виконання пересилок, а також є двосторонній обмін байтами між акумулятором і розширеною ЗПД, коли для доступу до комірок пам’яті використовується 16-бітна адреса, що зберігається в регістрі-покажчику даних DPTR. Команда MOVX @DPTR забезпечує доступ до 65536 байтам ЗПД.

Команди арифметичних операцій

Дану групу утворюють 24 команди (таблиця 8.15), які використовують команди віднімання, десяткової корекції, інкременту/декременту байтів а також команди множення та ділення. Основною особливістю основних команд арифметичних операцій є те, що одним із операндів і приймачем результату є акумулятор. Другим операндом є регістри оперативного призначення, комірки внутрішнього ОЗП, безпосередні дані, комірки РПД. Всі безпосередні дані, крім інкременту/декременту байтів діють на індикатори.

Дія команд додавання, віднімання, десяткової корекції, інкременту/декремету співпадає з дією аналогічних команд вже розглянутих в МП (наприклад, КМ 1810 ВМ 86).

Таблиця 8.15- Група команд арифметичних операцій

Назва команди Мнемоніка КОП Т В Ц Операція
Додавання акумулятора і регістра (n=0 7) ADD A,Rn 00101iii       (A) (A)+(Rn)
Додавання акумулятора і прямоадресовано-го байта ADD A,ad         (A) (A)+(ad)
Додавання акумулятора і байта з РПД ADD A,@Ri 0010011i       (A) (A)+((Ri))
Додавання акумулятора і константи ADD A,#d         (A) (A)+#d
Додавання акумулятора і регістра з перено-сом ADDC A,Rn 00111iii       (A) (A)+(Rn)+(C)
Додавання акумулятора і прямоадресовано-го байта з переносом ADDC A,ad         (A) (A)+(ad)+(C)
Додавання акуму-лятора і байта з РПД з переносом ADDC A,@Ri 0011011i       (A) (A)+((Ri))+(C)
Додавання акуму-лятора і константи з переносом ADDC A,#d         (A) (A)+#d+(C)
Десяткова корекція акумулятора DA A         Якщо (A0-3) >9V ((AC)=1), то (A0-3) (A0-3)+6 потім, якщо(A4-7) >9V ((C)=1), то (A4-7) (A4-7)+6
Віднімання з акумулятора регістра з за-позиченням SUBB A,Rn 10011iii       (A) (A)-(C)-(Rn)
Віднімання з акумулятора прямоадресо-ваного байта з запозиченням SUBB A,ad         (A) (A)-(C)-((ad))
Віднімання з акумулятора байта з РПД з запозиченням SUBB A,@Ri 1001011i       (A) (A)-(C)-((Ri))
Віднімання з акумулятора константи з запозиченням SUBB A,#d         (A) (A)-(C)-#d
Інкремент акумулятора INC A         (A) (A)+1
Інкремент регістра INC Rn 00001iii       (Rn) (Rn)+1
Інкремент прямоад-ресованого байта INC ad         (ad) (ad)+1
Інкремент байта в РПД INC @Ri 0000011i       ((Ri)) ((Ri))+1
Інкремент вказівника даних INC DPTR         (DPTR) (DPTR)+1
Декремент акуму-лятора DEC A         (A) (A)-1
Декремент регістра DEC Rn 00011iii       (Rn) (Rn)
Декремент прямоад-ресованого байта DEC ad         (ad) (ad)-1
Декремент байта в РПД DEC @Ri 0001011i       ((Ri)) ((Ri))-1
Множення акуму-лятора і регістра В MUL AB         (B)(A) (A)*(B)
Ділення акумулятора і регістра В DIV AB         (A).(B) (A)/(B)

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...