ЗНАЕТЕ ЛИ ВЫ?

Структура інформаційних зв'язків



Залежно від способу адресації і місця розташування операнда можна виділити дев'ять типів операндів, між якими можливий інформаційний обмін. Граф можливих операцій передавання даних показаний на рис. А.4. Акумулятор (А) поданий на цьому графові окремою вершиною, оскільки багато команд використовують неявну адресацію.

Рисунок А.4 - Граф шляхів передавання даних в МК51

Передавання даних у МК51 можуть виконуватися без участі акумулятора.

Акумулятор. Звернення до акумулятора може бути виконане в МК51 з використанням неявної і прямої адресації. Залежно від способу адресації акумулятора застосовується одне із символічних імен : A або ACC (пряма адреса). При прямій адресації звернення до акумулятора проводиться як до одного з РСФ, і його адреса зазначається в другому байті команди.

Використання неявної адресації акумулятора прийнятніше, проте не завжди можливо, наприклад, при зверненні до окремих бітів акумулятора.

Звернення до зовнішньої пам'яті даних. Режим непрямої адресації ЗПД. При використанні команд MOVX @Ri забезпечує доступ до 256 байтів зовнішньої пам'яті даних.

 

Продовження додатка А

Існує також режим звернення до розширеної ЗПД, коли для доступу використовується 16-бітова адреса, що зберігається в регістрі DPTR. Команди MOVX @DPTR забезпечують доступ до 65 536 байтів ЗПД.

Таблиця А.2 - Група команд передавання даних

Назва команди Мнемокод КОП Операція
Пересилка в акумулятор з регістра (n = 0 - 7) MOV A, Rn 11101rrr ((A) = (Rn)
Пересилка в акумулятор прямоадресованого байта MOV A, ad ((A) = (ad)
Пересилка в акумулятор байта з РПД (i = 0, 1) MOV A, @Ri 1110011i ((A) = ((Ri))
Завантаження в акумулятор константи MOV A, #d ((A) = #d
Пересилка в регістр з акумулятора MOV Rn, A 11111rrr ((Rn) = (A)
Пересилка в регістр прямоадресованого байта MOV Rn, ad 10101rrr ((Rn) = (ad)
Завантаження в регістр константи MOV Rn, #d 001111rrr ((Rn) = #d
Пересилка за прямою адресою акумулятора MOV ad, A ((ad) = (A)
Пересилка за прямою адресою регістра MOV ad, Rn 10001rrr ((ad) = (Rn)
Пересилка прямоадресованого байта за прямою адресою MOV add, ads ((add) = (ads)
Пересилка байта з РПД за прямою адресою MOV ad, @Ri 1000011i ((ad) = ((Ri))
Пересилка за прямою адресою константи MOV ad, #d ((ad) = #d
Пересилка в РПД з акумулятора MOV @Ri, A 1111011i ((((Ri)) = (A)
Пересилка в РПД прямоадресованого байта MOV @Ri, ad 00110011i ((((Ri)) = (ad)
Пересилка в РПД константи MOV @Ri, #d 00111011i ((((Ri)) = #d
Завантаження покажчика даних MOV DPTR, #d16 ((DPTR) = #d16
Пересилка в акумулятор байта з ПП MOVC A, @A + DPTR ((A) = ((A) + (DPTR))

Продовження табл. А.2

Пересилка в акумулятор байта з ПП MOVC A, @A + PC ((PC) = (PC) + 1 ((A) = ((A) + (PC))
Пересилка в акумулятор байта з ЗПД MOVX A, @Ri 1110001i ((A) = ((Ri))
Пересилка в акумулятор байта з розширеної ЗПД MOVX A, @DPTR ((A) = ((DPTR))
Пересилка у ЗПД з акумулятора MOVX @Ri, A 1111001i ((((Ri)) = (A)
Пересилка в розширену ЗПД з акумулятора MOVX @DPTR, A ((((DPTR)) = (A)
Завантаження в стек PUSH ad ((SP) = (SP) + 1 ((((SP)) = (ad)
Витягання із стека POP ad ((ad) = (SP) ((SP) = (SP) - 1
Обмін акумулятора з регістром XCH A, Rn 11001rrr ((A) <-> (Rn)
Обмін акумулятора з прямоадресованим байтом XCH A, ad ((A) <-> (ad)
Обмін акумулятора з байтом з РПД XCH A, @Ri 1100011i ((A) <-> ((Ri))
Обмін молодшої тетради акумулятора з молодшою тетрадою байта РПД XCHD A, @Ri 1101011i (A0 - 3) <-> ((Ri) 0-3)

 

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

Цю групу утворюють 24 команди.

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

Назва команди Мнемокод КОП Операція
Складання акумулятора з регістром (n = 0 - 7) ADD A, Rn 0000101rrr ((A(Rn)
Складання акумулятора з прямоадресованим байтом ADD A, ad ((A(ad)
Складання акумулятора з байтом з РПД (i = 0, 1) ADD A, @Ri 000010011i ((A((Ri))
Складання акумулятора з константою ADD A, #d ((A) = (A) + #d
Складання акумулятора з регістром і перенесенням ADDC A, Rn 0000111rrr ((A(C)

Продовження табл. А.3

Складання акумулятора з прямоадресованим байтом і перенесенням ADDC A, ad ((A(C)
Складання акумулятора з байтом з РПД і перенесенням ADDC A, @Ri 000011011i ((A(C)
Складання акумулятора з константою і перенесенням ADDC A, #d ((A) = (A) + #d + + (C)
Десяткова корекція акумулятора DA A Якщо (A0 - 3) > 9 \/ ((AC) = 1), те (A0 - 3) + 6, потім якщо (A4 - 7) > 9 \/ ((C)= 1), те (A4 - 7) + 6
Віднімання з акумулятора регістра і позики SUBB A, Rn 10011rrr ((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 000000001rrr ((Rn) = (Rn) + 1
Інкремент прямоадресованого байта INC ad ((ad) = (ad) + 1
Інкремент байта в РПД INC @Ri 000000000011i ((((Ri)) = ((Ri)) +1
Інкремент покажчика даних INC DPTR ((DPTR) = (DPTR) + 1
Декремент акумулятора DEC A ((A) = (A) - 1
Декремент регістра DEC Rn 00000011rrr ((Rn) = (Rn) - 1

Продовження табл. А.3

Декремент прямоадресованого байта DEC ad ((ad) = (ad) - 1
Декремент байта в РПД DEC @Ri 0000001011i ((((Ri)) = ((Ri)) - 1
Множення акумулятора на регістр B MUL AB ((B(B)
Ділення акумулятора на регістр B DIV AB ((A(B)

Команди ADD і ADDC допускають складання акумулятора з великим числом операндів. Аналогічно командам ADDC існують чотири команди SUBB, що дозволяє простіше проводити віднімання байтів і багатобайтових двійкових чисел. У МК51 реалізується розширений список команд інкремента/декремента байтів, введена команда інкремента

16-бітового регістра-покажчика даних.

 





Последнее изменение этой страницы: 2016-06-07; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.004 с.)