|
Команды логических операций микроконтроллера 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 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|