Сделай Сам Свою Работу на 5

Команды логических операций микроконтроллера 8051.

Команды пересылки данных микроконтроллера 8051.

Эта группа представлена 28 командами, их краткое описание приведено в таблице, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

 

Таблица.7.Команды передачи данных

Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор из регистра (n=0÷7) MOV A, Rn 11101rrr 1. 1 2. 1 3. 1 (A) (Rn)
Пересылка в аккумулятор прямоадресуемого байта MOV A, ad 4. 3 5. 2 6. 1 (A) (ad)
Пересылка в аккумулятор байта из РПД (i=0,1) MOV A, @Ri 1110011i 7. 1 8. 1 9. 1 (A) ((Ri))
Загрузка в аккумулятор константы MOV A, #d 10. 2 11. 2 12. 1 (A) #d
Пересылка в регистр из аккумулятора MOV Rn, A 11111rrr 13. 1 14. 1 15. 1 (Rn) (A)
Пересылка в регистр прямоадресуемого байта MOV Rn, ad 10101rrr 16. 3 17. 2 18. 2 (Rn) (ad)
Загрузка в регистр константы MOV Rn, #d 01111rrr 19. 2 20. 2 21. 1 (Rn) #d
Пересылка по прямому адресу аккумулятора MOV ad, A 22. 3 23. 2 24. 1 (ad) (A)
Пересылка по прямому адресу регистра MOV ad, Rn 10001rrr 25. 3 26. 2 27. 2 (ad) (Rn)
Пересылка прямоадресуемого байта по прямому адресу MOV add, ads 28. 9 29. 3 30. 2 (add) (ads)
Пересылка байта из РПД по прямому адресу MOV ad, @Ri 1000011i 31. 3 32. 2 33. 2 (ad) ((Ri))
Пересылка по прямому адресу константы MOV ad, #d 34. 7 35. 3 36. 2 (ad) #d
Пересылка в РПД из аккумулятора MOV @Ri, A 1111011i 37. 1 38. 1 39. 1 ((Ri)) (A)
Пересылка в РПД прямоадресуемого байта MOV @Ri, ad 0110011i 40. 3 41. 2 42. 2 ((Ri)) (ad)
Пересылка в РПД константы MOV @Ri, #d 0111011i 43. 2 44. 2 45. 1 ((Ri)) #d
Загрузка указателя данных MOV DPTR, #d16 46. 13 47. 3 48. 2 (DPTR) #d16
Пересылка в аккумулятор байта из ПП MOVC A, @A+DPTR 49. 1 50. 1 51. 2 ((A) +(DPTR))
Пересылка в аккумулятор байта из ПП MOVC A, @A+PC 52. 1 53. 1 54. 2 (PC) (PC)+1, (A) ((A)+(PC))
Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор байта из ВПД MOVX A, @Ri 1110001i 55. 1 56. 1 57. 2 (A) ((Ri))
Пересылка в аккумулятор байта из расширенной ВПД MOVX A,@DPTR 58. 1 59. 1 60. 2 (A) ((DPTR))
Пересылка в ВПД из аккумулятора MOVX @Ri, A 1111001i 61. 1 62. 1 63. 2 ((Ri)) (A)
Пересылка в расширенную ВПД из аккумулятора MOVX @DPTR,A 64. 1 65. 1 66. 2 ((DPTR)) (A)
Загрузка в стек PUSH ad 67. 3 68. 2 69. 2 (SP) (SP) + 1, ((SP)) (ad)
Извлечение из стека POP ad 70. 3 71. 2 72. 2 (ad) (SP), (SP) (SP) - 1
Обмен аккумулятора с регистром XCH A, Rn 11001rrr 73. 1 74. 1 75. 1 (A) ↔ (Rn)
Обмен аккумулятора с прямоадресуемым байтом XCH A, ad 76. 3 77. 2 78. 1 (A) ↔ (ad)
Обмен аккумулятора с байтом из РПД XCH A, @Ri 1100011i 79. 1 80. 1 81. 1 (A) ↔ ((Ri))
Обмен младших тетрад аккумулятора и байта РПД XCHD A, @Ri 1101011i 82. 1 83. 1 84. 1 (A0…3) ↔((Ri)0…3)

 



По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая – чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD – обмен младшими тетрадами (битами 0 – 3).

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Группа команд пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой

MOV A, PSW

которая преобразуется Ассемблером к виду

MOV А, 0D0h (E5 D0),

где Е5 – код операции, а D0 – операнд (адрес PSW).

Кроме того, следует отметить, что в микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

Команды арифметических операций 8051.

В данную группу входят 24 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.

В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица.8.Арифметические операции.

Название команды Мнемокод КОП Т Б Ц Операция
Сложение аккумулятора с регистром (n=0÷7) ADD A, Rn 00l01rrr (A) (A) + (Rn)
Сложение аккумулятора с прямоадресуемым байтом ADD A, ad (A) (A) + (ad)
Сложение аккумулятора с байтом из РПД (i = 0,1) ADD A, @Ri 0010011i (A) (A) + ((Ri))
Сложение аккумулятора с константой ADD A, #d (A) (A) + #d
Сложение аккумулятора с регистром и переносом ADDC A, Rn 00111rrr (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 Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7) + 6
Вычитание из аккумулятора регистра и заёма SUBB A, Rn 10011rrr (A) (A) - (C) - (Rn)
Вычитание из аккумулятора прямоадресуемого байта и заема SUBB A, ad (A) (A) - (C) - ((ad))
Вычитание из аккумулятора байта РПД и заема SUBB А, @Ri 1001011i (A) (A) - (C) - ((Ri))
Вычитание из аккумулятора константы и заема SUBB А, d (A) (A) - (C) - #d
Инкремент аккумулятора INC А (A) (A) + 1
Название команды Мнемокод КОП Т Б Ц Операция
Инкремент регистра INC Rn 00001rrr (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 00011rrr (Rn) (Rn) – 1
Декремент прямоадресуемого байта DEC ad (ad) (ad) – 1
Декремент байта в РПД DEC @Ri 0001011i ((Ri)) ((Ri)) - 1
Умножение аккумулятора на регистр В MUL AB (B)(A) (A)*(В)
Деление аккумулятора на регистр В DIV AB (B).(A) (A)/(В)

 

По результату выполнения команд ADD, ADDC, SUBB, MUL и DIV устанавливаются флаги PSW, структура которых приведена в таблице.

Флаг С устанавливается при переносе из разряда D7, т. е. в случае, если результат не помещается в восемь разрядов; флаг АС устанавливается при переносе из разряда D3 в командах сложения и вычитания и служит для реализации десятичной арифметики. Этот признак используется командой DAA.

Флаг OV устанавливается при переносе из разряда D6, т. е. в случае, если результат не помещается в семь разрядов и восьмой не может быть интерпретирован как знаковый. Этот признак служит для организации обработки чисел со знаком.

Наконец, флаг Р устанавливается и сбрасывается аппаратно. Если число единичных бит в аккумуляторе нечетно, то Р = 1, в противном случае Р = 0.

Команды логических операций микроконтроллера 8051.

В этой группе 25 команд, их краткое описание приведено в таблице. Нетрудно видеть, что эти команды позволяют выполнять операции над байтами: логическое И (/\ ), логическое ИЛИ ( \/), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица.9.Логические операции

Название команды Мнемокод КОП Т Б Ц Операция
Логическое И аккумулятора и регистра ANL A, Rn 01011rrr (A) (A) AND (Rn)
Логическое И аккумулятора и прямоадресуемого байта ANL A, ad (A) (A) AND (ad)
Логическое И аккумулятора и байта из РПД ANL A, @Ri 0101011i (A) (A) AND ((Ri))
Логическое И аккумулятора и константы ANL A, #d (A) (A) AND #d
Логическое И прямоадресуемого байта и аккумулятора ANL ad, A (ad) (ad) AND (A)
Логическое И прямоадресуемого байта и константы ANL ad, #d (ad) (ad) AND #d
Логическое ИЛИ аккумулятора и регистра ORL A, Rn 01001rrr (A) (A) OR (Rn)
Логическое ИЛИ аккумулятора и прямоадресуемого байта ORL A, ad (A) (A) OR (ad)
Логическое ИЛИ аккумулятора и байта из РПД ORL A, @Ri 0100011i (A) (A) OR ((Ri))
Логическое ИЛИ аккумулятора и константы ORL A, #d (A) (A) OR #d
Логическое ИЛИ прямоадресуемого байта и аккумулятора ORL ad, A (ad) (ad) OR (A)
Логическое ИЛИ прямоадресуемого байта и константы ORL ad, #d (ad) (ad) OR #d
Исключающее ИЛИ аккумулятора и регистра XRL A, Rn 01101rrr (A) (A) XOR (Rn)
Исключающее ИЛИ аккумулятора и прямоадресуемого байта XRL A, ad (A) (A) XOR (ad)
Исключающее ИЛИ аккумулятора и байта из РПД XRL A, @Ri 0110011i (A) (A) XOR ((Ri))
Исключающее ИЛИ аккумулятора и константы XRL A, #d (A) (A) XOR #d
Исключающее ИЛИ прямоадресуемого байта и аккумулятора XRL ad, A (ad) (ad) XOR (A)
Исключающее ИЛИ прямоадресуемого байта и константы XRL ad, #d (ad) (ad) XOR #d
Сброс аккумулятора CLR A (A) 0
Инверсия аккумулятора CPL A (A) NOT(A)
Сдвиг аккумулятора влево циклический RL A (An+1) (An), n=0÷6, (A0) (A7)
Сдвиг аккумулятора влево через перенос RLC A (An+1) (An), n=0÷6 (A0) (C), (C) (A7)
Сдвиг аккумулятора вправо циклический RR A (An) (An+1), n=0÷6, (A7) (A0)
Сдвиг аккумулятора вправо через перенос RRC A (An) (An+1), n=0÷6 (A7) (C), (C) (A0)
Обмен местами тетрад в аккумуляторе SWAP A (A0…3) ↔ (A4…7)

 



©2015- 2019 stydopedia.ru Все материалы защищены законодательством РФ.