2-667-1400429946-12 (Классификация системы команд по функциональному признаку (пересылки данных, арифметических и логических)
Описание файла
Документ из архива "Классификация системы команд по функциональному признаку (пересылки данных, арифметических и логических", который расположен в категории "". Всё это находится в предмете "специальные предметы" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "специальные предметы" в общих файлах.
Онлайн просмотр документа "2-667-1400429946-12"
Текст из документа "2-667-1400429946-12"
-
Классификация системы команд по функциональному признаку (пересылки данных, арифметических и логических операций, операций над битами, передачи управления), временные параметры исполнения команд.
Oбозначения, используемые при описании команд.
-
Rn (n = 0, 1,..., 7) – регистр общего назначения в выбранном банке регистров;
-
@Ri(i= 0, 1) – регистр общего назначения в выбранном банке регистров, используемый в качестве регистра косвенного адреса;
-
ad – адрес прямоадресуемого байта;
-
ads – адрес прямо адресуемого байта-источника;
-
add – адрес прямо адресуемого байта-получателя;
-
ad11 – 11-разрядный абсолютный адрес перехода;
-
ad16 – 16-разрядный абсолютный адрес перехода;
-
rel – относительный адрес перехода;
-
#d – непосредственный операнд;
-
#d16 – непосредственный операнд (2 байта);
-
bit – адрес прямо адресуемого бита;
-
/bit – инверсия прямо адресуемого бита;
-
А - аккумулятор;
-
РС – счетчик команд;
-
DPTR – регистр указатель данных;
-
( ) – содержимое ячейки памяти или регистра,
Команды пересылки данных микроконтроллера 8051.
Эта группа представлена 28 командами, их краткое описание приведено в таблице, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор из регистра (n=0÷7) | MOV A, Rn | 11101rrr | 1 | 1 | 1 | (A) (Rn) |
Пересылка в аккумулятор прямоадресуемого байта | MOV A, ad | 11100101 | 3 | 2 | 1 | (A) (ad) |
Пересылка в аккумулятор байта из РПД (i=0,1) | MOV A, @Ri | 1110011i | 1 | 1 | 1 | (A) ((Ri)) |
Загрузка в аккумулятор константы | MOV A, #d | 01110100 | 2 | 2 | 1 | (A) #d |
Пересылка в регистр из аккумулятора | MOV Rn, A | 11111rrr | 1 | 1 | 1 | (Rn) (A) |
Пересылка в регистр прямоадресуемого байта | MOV Rn, ad | 10101rrr | 3 | 2 | 2 | (Rn) (ad) |
Загрузка в регистр константы | MOV Rn, #d | 01111rrr | 2 | 2 | 1 | (Rn) #d |
Пересылка по прямому адресу аккумулятора | MOV ad, A | 11110101 | 3 | 2 | 1 | (ad) (A) |
Пересылка по прямому адресу регистра | MOV ad, Rn | 10001rrr | 3 | 2 | 2 | (ad) (Rn) |
Пересылка прямоадресуемого байта по прямому адресу | MOV add, ads | 10000101 | 9 | 3 | 2 | (add) (ads) |
Пересылка байта из РПД по прямому адресу | MOV ad, @Ri | 1000011i | 3 | 2 | 2 | (ad) ((Ri)) |
Пересылка по прямому адресу константы | MOV ad, #d | 01110101 | 7 | 3 | 2 | (ad) #d |
Пересылка в РПД из аккумулятора | MOV @Ri, A | 1111011i | 1 | 1 | 1 | ((Ri)) (A) |
Пересылка в РПД прямоадресуемого байта | MOV @Ri, ad | 0110011i | 3 | 2 | 2 | ((Ri)) (ad) |
Пересылка в РПД константы | MOV @Ri, #d | 0111011i | 2 | 2 | 1 | ((Ri)) #d |
Загрузка указателя данных | MOV DPTR, #d16 | 10010000 | 13 | 3 | 2 | (DPTR) #d16 |
Пересылка в аккумулятор байта из ПП | MOVC A, @A+DPTR | 10010011 | 1 | 1 | 2 | ((A) +(DPTR)) |
Пересылка в аккумулятор байта из ПП | MOVC A, @A+PC | 10000011 | 1 | 1 | 2 | (PC) (PC)+1, (A) ((A)+(PC)) |
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор байта из ВПД | MOVX A, @Ri | 1110001i | 1 | 1 | 2 | (A) ((Ri)) |
Пересылка в аккумулятор байта из расширенной ВПД | MOVX A,@DPTR | 11100000 | 1 | 1 | 2 | (A) ((DPTR)) |
Пересылка в ВПД из аккумулятора | MOVX @Ri, A | 1111001i | 1 | 1 | 2 | ((Ri)) (A) |
Пересылка в расширенную ВПД из аккумулятора | MOVX @DPTR,A | 11110000 | 1 | 1 | 2 | ((DPTR)) (A) |
Загрузка в стек | PUSH ad | 11000000 | 3 | 2 | 2 | (SP) (SP) + 1, ((SP)) (ad) |
Извлечение из стека | POP ad | 11010000 | 3 | 2 | 2 | (ad) (SP), (SP) (SP) - 1 |
Обмен аккумулятора с регистром | XCH A, Rn | 11001rrr | 1 | 1 | 1 | (A) ↔ (Rn) |
Обмен аккумулятора с прямоадресуемым байтом | XCH A, ad | 11000101 | 3 | 2 | 1 | (A) ↔ (ad) |
Обмен аккумулятора с байтом из РПД | XCH A, @Ri | 1100011i | 1 | 1 | 1 | (A) ↔ ((Ri)) |
Обмен младших тетрад аккумулятора и байта РПД | XCHD A, @Ri | 1101011i | 1 | 1 | 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 команды, краткое описание которых приведено в таблице. Из нее следует, что микроЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Сложение аккумулятора с регистром (n=0÷7) | ADD A, Rn | 00l01rrr | 1 | 1 | 1 | (A) (A) + (Rn) |
Сложение аккумулятора с прямоадресуемым байтом | ADD A, ad | 00100101 | 3 | 2 | 1 | (A) (A) + (ad) |
Сложение аккумулятора с байтом из РПД (i = 0,1) | ADD A, @Ri | 0010011i | 1 | 1 | 1 | (A) (A) + ((Ri)) |
Сложение аккумулятора с константой | ADD A, #d | 00100100 | 2 | 2 | 1 | (A) (A) + #d |
Сложение аккумулятора с регистром и переносом | ADDC A, Rn | 00111rrr | 1 | 1 | 1 | (A) (A) + (Rn) + (C) |
Сложение аккумулятора с прямоадресуемым байтом и переносом | ADDC A, ad | 00110101 | 3 | 2 | 1 | (A) (A) + (ad) + (C) |
Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | 0011011i | 1 | 1 | 1 | (A) (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом | ADDC A, #d | 00110100 | 2 | 2 | 1 | (A) (A) + # d + (C) |
Десятичная коррекция аккумулятора | DA A | 11010100 | 1 | 1 | 1 | Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7) + 6 |
Вычитание из аккумулятора регистра и заёма | SUBB A, Rn | 10011rrr | 1 | 1 | 1 | (A) (A) - (C) - (Rn) |
Вычитание из аккумулятора прямоадресуемого байта и заема | SUBB A, ad | 10010101 | 3 | 2 | 1 | (A) (A) - (C) - ((ad)) |
Вычитание из аккумулятора байта РПД и заема | SUBB А, @Ri | 1001011i | 1 | 1 | 1 | (A) (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и заема | SUBB А, d | 10010100 | 2 | 2 | 1 | (A) (A) - (C) - #d |
Инкремент аккумулятора | INC А | 00000100 | 1 | 1 | 1 | (A) (A) + 1 |
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Инкремент регистра | INC Rn | 00001rrr | 1 | 1 | 1 | (Rn) (Rn) + 1 |
Инкремент прямоадресуемого байта | INC ad | 00000101 | 3 | 2 | 1 | (ad) (ad) + 1 |
Инкремент байта в РПД | INC @Ri | 0000011i | 1 | 1 | 1 | ((Ri)) ((Ri)) + 1 |
Инкремент указателя данных | INC DPTR | 10100011 | 1 | 1 | 2 | (DPTR ) (DPTR) + 1 |
Декремент аккумулятора | DEC A | 00010100 | 1 | 1 | 1 | (A) (A) – 1 |
Декремент регистра | DEC Rn | 00011rrr | 1 | 1 | 1 | (Rn) (Rn) – 1 |
Декремент прямоадресуемого байта | DEC ad | 00010101 | 3 | 2 | 1 | (ad) (ad) – 1 |
Декремент байта в РПД | DEC @Ri | 0001011i | 1 | 1 | 1 | ((Ri)) ((Ri)) - 1 |
Умножение аккумулятора на регистр В | MUL AB | 10100100 | 1 | 1 | 4 | (B)(A) (A)*(В) |
Деление аккумулятора на регистр В | DIV AB | 10000100 | 1 | 1 | 4 | (B).(A) (A)/(В) |