![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Незважаючи на передачу даних у незмінному вигляді, ці команди здійснюють один із способів обробки інформації. Як приклад такої обробки можна привести сортування. У командах пересилання використовуються всі варіанти використання способів адресації даних. Пересилання даних може здійснюватися у форматах байта, половини байта, двох байтів і біта.
Почнемо з байтового формату. Команда MOV (MOVe по-англійському означає «пересунути») копіює вміст джерела в приймач (при виконанні цієї команди первісний уміст приймача губиться): MOV A, #src
MOV A, Rn
MOV A, @Ri
MOV A, src
MOV Rn, A
MOV Rn, #src
MOV Rn, src
MOV @Ri, A
MOV @Ri, # src
MOV @Ri, src
MOV dst, A
MOV dst, #src
MOV dst, Rn
MOV dst, @Ri
MOV dst, dst
Для засилання нуля в нагромаджувач простіше використовувати команду очищення CLR (Clea означає очистити):
CLR А
Читання і запис даних байтового формату при звертанні до зовнішнього ОЗП здійснюється за допомогою команд MOVX, де літера X, очевидно, означає external (зовнішня пам'ять):
MOVX A, @Ri MOVX @Ri, A
MOVX A, @DPTR MOVX @DPTR, A
Перед виконанням цієї команди у відповідний регістр потрібно записати адреси.
Читання даних із ПЗП здійснюється за допомогою команди MOVC, при цьому літера С швидше за все означає Code (програма).
MOVC A, @A+DPTR
MOVC А, @А+РС
Ці команди дуже зручні для читання з таблиць, записуваних у ПЗП.
Запис в ОЗП і читання з нього за допомогою стекового способу адресації виробляються командами
PUSH src
POP dst
Мнемокоди стекових команд відповідають англійським дієсловам «заштовхнути» і «виштовхнути».
Існує ще одна команда копіювання ХСН (eXCHange означає «обміняти»), що здійснює обмін умісту джерела і приймача. У принципі обмін можна зробити за допомогою трьох команд пересилання. Наступні команди роблять це за той же час, але займають менше місця в ПЗП і не вимагають використання додаткового осередку ОЗП:
ХСН А, Rn
ХСН A, @Ri
ХСН А, src
Є також команда, що обмінює молодші половини байтів:
XCHD A, @Ri
Тут D означає Digit (чотири біти використовуються для двійкового представлення десяткової цифри).
Одна з команд пересилання даних записує два байти в регістр покажчика даних:
MOV DPTR, #src
Інших команд для явного пересилання двобайтових даних немає.
Кілька команд пересилання інформації працюють у бітовому форматі. У команді MOV джерелом чи приймачем повинен бути біт переносу С:
MOV С, flag
MOV flag, С
Для запису констант 0 і 1 використовуються команди очищення CLR і установки SETB (SET Bit означає «установити біт»):
CLR С SETB С
CLR flag SETB flag
Команди пересилання не впливає на вміст слова стану програми, за винятком випадків пересилання інформації в цей регістр чи один з його бітів.
Група команд передачі даних наведена у табл. 8.1.
Таблиця 8.1
Група команд передачі даних
Назва команди | Мнемокод | КОП | Т | Б | Ц | Операція | |
Пересилання регістра в акумулятор | MOV A,Rn | 11101rrr | (A)(Rn) | ||||
Пересилання в акумулятор байта, що адресується прямо | MOV A,ad | (A)(ad) | |||||
Пересилання в акумулятор байта із РПД (i = 0,1) | MOV A,@Rі | 1110011i | (A)((Ri)) | ||||
Завантаження в А константи | MOV A,#d | (A)#d | |||||
Закінчення табл. 8.1 | |||||||
Назва команди | Мнемокод | КОП | Т | Б | Ц | Операція | |
Пересилання в регістр із А | MOV Rn, А | 11111rrr | (Rn) (A) | ||||
Пересилання в регістр байта, що адресується прямо | MOV Rn, ad | 10101rrr | (Rn)(ad) | ||||
Завантаження в регістр константи | MOV Rn, #d | 01111rrr | (Rn) (#d) | ||||
Пересилання за прямою адресою Рг | MOV ad, Rn | 10001rrr | (ad) (Rn) | ||||
Пересилання за прямою адресою А | MOV ad, А | (ad) (А) | |||||
Пересилання байта, що адресується прямо, за прямою адресою | MOV add, ads | (add) (ads) | |||||
Пересилання байта з РПД за прямою адресою | MOV ad,@Ri | 1000010і | (ad) ((Ri)) | ||||
Пересилання за прямою адресою незмінної | MOV ad, #d | (ad) #d | |||||
Пересилання в РПД з А | MOV@Ri, А | 1111011і | ((Ri)))(A) | ||||
Пересилання в РПД байта, що адресується прямо | MOV@Ri, ad | 0110011і | ((Ri))) (ad) | ||||
Пересилання в РПД константи | MOV@Ri, #d | 0111011і | ((Ri))) #d | ||||
Завантаження покажчика даних | MOV DPTR,#d16 | (DPTR)#d16 | |||||
Пересилання в акумулятор байта із ПП | MOVC A, @A + + DPTR | (A)((A) + + (DPTR)) | |||||
Пересилання в акумулятор байта із ПП | MOVC A,@A+РС | (РС) (РС)=1 (A)((A)+ (РС)) | |||||
Пересилання в акумулятор байта із ЗПД | MOVХ A,@Rі | 1110001і | (А) ((Rі)) | ||||
Пересилання в акумулятор байта із розширеної ЗПД | MOVX A,@DPTR | (A) ((DPTR)) | |||||
Пересилання в ЗПД із акумулятора | MOVX @Rі, А | 1111001і | ((Rі)) (А) | ||||
Пересилання в ЗПД, що розширена, із акумулятора | MOVX @DPTR, A | ((DPTR)) (А) | |||||
Завантаження в стек | PUSH ad | (SP)(SP) + 1 ((SP))(ad) | |||||
Вивантаження із стека | РОР ad | (ad)(SP) (SP)(SP) - 1 | |||||
Обмін акумулятора з регістром | XCH A, Rn | 11001rrr | (A)«(Rn) | ||||
Обмін акумулятора з байтом, що адресується прямо | XCH A, ad | (A)«(ad) | |||||
Обмін акумулятора з байтом із РПД | XCH A, @Rі | 1100011і | (A)«((Rі)) | ||||
Обмін молодшої тетради акумулятора з молодшою тетрадою байта із РПД | XCHВ A,@Rі | 1101011і | (A0-3)«((Ri)0-3) | ||||
Дата публикования: 2014-12-08; Прочитано: 1687 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!